Authoring

Create & publish articles

Authoring is Notion-first. The website stays static and secure.

Workflow (quick)

  1. Create a new row/page in the Notion database using the New Article template.
  2. Keep Draft=true while writing.
  3. Fill required metadata.
  4. Publish by setting Draft=false (or press the Notion Publish button if you use one).
  5. 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 Publish that sets Draft=false and 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 / press Publish).

Bilingual (EN/ID)

  • Make a separate Notion row for each locale.
  • Use the same CanonicalGroup to pair translations.
  • Use localized slugs per locale.

Full reference

See docs/notion-sync.md for the complete workflow, views, template, and troubleshooting.