Authoring
Create & publish articles
Authoring is Notion-first. The website stays static and secure.
Workflow (quick)
- Create a new row/page in the Notion database using the New Article template.
- Keep
Draft=truewhile writing. - Fill required metadata.
- Publish by setting
Draft=false(or press the NotionPublishbutton if you use one). - Wait for GitHub Actions sync (or run it manually).
Required metadata (before you publish)
This is the minimum contract for any page that has Draft=false:
- Title
- Description (1–2 sentences; metadata)
- Locale:
en|id - Domain:
qa|fpv|fishkeeping|notes - Slug (lowercase hyphen)
- CanonicalGroup (stable ID shared across translations)
- Tags (must be non-empty)
- PublishedAt, UpdatedAt
Notion setup (recommended)
- Use your existing Notion database (the one referenced by GitHub Actions secrets).
- Add a Database template named New Article (template ≠ row). Default:
Draft=true. - Create views: Draft Queue, Ready to Publish, Published.
- Optional: add a Notion Button property
Publishthat setsDraft=falseand updatesUpdatedAt.
Publishing safety
- Keep the Notion DB private (not publicly shared).
- Editors can write drafts (
Draft=true). - Only reviewers/admins should be allowed to publish (
Draft=false/ pressPublish).
Bilingual (EN/ID)
- Make a separate Notion row for each locale.
- Use the same
CanonicalGroupto pair translations. - Use localized slugs per locale.
Full reference
See docs/notion-sync.md for the complete workflow, views, template, and troubleshooting.