A journal-styled academic writing platform — op-eds, reading notes, method write-ups, and research observations.
atomrearch.github.io/AtomPub
·
中文版 →
AtomPub is an independent academic publication edited by Zhengqian Jin. Contributions from peers are welcome.
Every article gets a permanent URL and a stable citation ID in the form AP-YYYY-slug.
| Category | What it means in practice |
|---|---|
| Op-ed | The take worth writing down |
| Reading notes | When a paper deserves more than a tweet |
| Method write-up | The protocol actually used, not the boilerplate |
| Data note | Preliminary results that shouldn't disappear into a lab notebook |
Option A — GitHub PR (preferred)
# 1. Fork https://github.com/AtomRearch/AtomPub
# 2. Copy the template:
cp journal/_extensions/atompub-light/template.qmd journal/articles/your-slug.qmd
# 3. Write the piece. Set `atompub-id: AP-YYYY-your-slug` in the front-matter.
# 4. Open a PR titled: "Submission: Your Article Title"Optionally include references.bib and an OG image at journal/assets/og/your-slug.png (1200 × 630 px).
Option B — Email
Send the manuscript in any format (.qmd, Word, plain text) to atomfeed@163.com.
Subject: AtomPub submission: Title. Formatting will be handled on our end.
# Requires Quarto ≥ 1.4 → https://quarto.org/docs/get-started/
cd journal
quarto preview # live-reload at http://localhost:3434Double-click push-article.bat at the repo root → paste the .qmd path → done.
The article goes live in ~2 minutes via GitHub Actions.
Add protected: true to any article's front matter and it ships as
ciphertext: the publish workflow encrypts the rendered HTML with
AES-256-GCM (PBKDF2-SHA256, 310k iterations) and readers decrypt it
in-browser via WebCrypto after entering the access phrase. GitHub Pages
only ever hosts the encrypted blob; the post is also scrubbed from
search.json and RSS feeds.
Setup (maintainer, once):
gh secret set ATOMPUB_PASSWORD -R AtomRearch/AtomPubPer-post password: set protect-password: "..." in the front matter
(beats the site-wide secret). One unlock per browser session covers all
posts sharing the same phrase.
Caveats — know what this is and isn't:
- Title, description, and date stay public (listing pages, OG tags). Keep them non-sensitive.
- Anyone holding the phrase can share the decrypted content; a weak phrase can be brute-forced offline. Use a long passphrase.
- If
ATOMPUB_PASSWORDis unset at build time, protected posts fail closed: a placeholder is published, never plaintext.
Local test:
cd journal && quarto render && cd ..
python journal/tools/protect.py journal/_site --articles journal/articles --password "test"
python -m http.server -d journal/_site 8642 # open /articles/<slug>.htmlAtomPub/
├── journal/ ← the deployable site
│ ├── _quarto.yml
│ ├── index.qmd home
│ ├── about.qmd
│ ├── submit.qmd
│ ├── articles/ one .qmd per article
│ ├── assets/ logo, OG images
│ └── _extensions/
│ └── atompub-light/ custom Quarto theme + partials
├── push-article.bat one-click publish script
└── .github/workflows/ build → deploy to GitHub Pages
Quarto · custom atompub-light extension · GitHub Pages · GitHub Actions.
The extension handles masthead, TOC, OG/Twitter metadata, and byline automatically from YAML front-matter.
Articles: CC-BY 4.0 · Extension + site code: MIT