Notion Article Writer
Publish a Notion article based on conversation context, a file, or a topic. This skill owns the publishing mechanics; the tone and structure live in .claude/knowledge/writing-style.md (universal voice + “Notion / long-form docs” section) — read it before drafting.
Destinations
| Destination | Parent | Languages | Used for |
|---|---|---|---|
| Articles database | ac7ebcbdc95543a288361516f2043e8b (data source 410f70e5-33d0-434f-86b2-ef36dd1398d0) | EN + FR, linked via Translation | External-facing posts (qraft.tech blog, cross-post to LinkedIn / X / Slack) |
| Tech subpage | 189218ed56d78019b206d49417bafa31 (page Tech in qrafttech) | FR only | Internal write-ups, TBMA decks |
Ask with AskUserQuestion if the destination isn’t obvious. Default to Tech subpage for internal infra / tooling / process; default to Articles database when the user mentions blog, publication, LinkedIn, or X.
Workflow
- Gather context from the conversation, a file path, or a topic argument.
- Ask the user: destination (if not obvious), title (propose one, let them edit), angle.
- Read
.claude/knowledge/writing-style.mdand apply it. - Draft the article, then run the sensitive-terms scan (required): write the final draft(s) to temp files and run
~/dev/claude/scripts/scan_sensitive.sh <files>. Exit 1 → show the matches and stop: the Articles database is external-facing, so rewrite around the term or get the user’s explicit clearance for that specific match; the Tech subpage is internal, so just ask. Exit 2 (terms list unreachable) → fail closed: don’t publish until the scan can run. - Publish per destination (below).
Articles database
Write English first, then French, then link both. Properties for each language version:
| Property | Value |
|---|---|
| Title | the article title (translated for FR) |
| Language | EN or FR |
| Date | today |
| Author | 8aaaff03-f1fc-4020-b3aa-2b6f1e7016e2 (Nicolas) |
| Translation | URL of the sibling-language page |
Set both Translation relations after both pages exist:
{"Translation": "https://www.notion.so/[page-id]"}
Tech subpage
FR only. Plain Notion page (no database properties). Parent = 189218ed56d78019b206d49417bafa31. Optional icon emoji aligned with the topic.
Argument forms
/notion-article— summarize the current conversation into an article./notion-article ./notes/meeting-notes.md— transform those notes./notion-article "topic description"— write about that topic, ask clarifying questions if needed.
Cross-posting
After publishing an Articles-database post, invoke /cross-post with the English page URL to offer LinkedIn / X / Slack cross-posting. Tech subpages are internal — do not cross-post.