Overview
Editorial teams draft in Notion because it's fast — and then someone spends an hour retyping into the CMS. This Make scenario watches Notion for status='Ready', converts blocks to portable-text or MDX, generates a cover image from the article title, and creates a scheduled entry in Sanity or Contentful. From draft to scheduled in 60 seconds.
How it works
- Notion database trigger on Status change to 'Ready to publish'.
- Fetch full page blocks; convert Markdown → CMS body format.
- Generate cover image with Ideogram (better for text-in-image) or DALL-E.
- Upload image to CMS asset store; create entry with scheduled_at.
- Post confirmation to Slack with a preview link.
Benefits
- No copy-paste tax; editors keep writing in Notion.
- Cover image at zero human cost — quality gate is a click.
- Every publish routed through the same pipeline (SEO fields, canonical, tags).
Use cases
- Content teams with 4+ posts/week.
- Solo bloggers optimising for volume.
- SEO agencies managing publishing for multiple clients.
Step-by-step guide
Step 1: Structure the Notion DB
Fields: Title, Slug, Excerpt, Tags, Cover Prompt (fallback to Title), Status, Scheduled At.
Step 2: Block → portable text converter
Use a small function/webhook that maps Notion blocks. Handle H1-H3, lists, code blocks, images, callouts.
Step 3: Image generation
Ideogram for anything with typography; DALL-E for illustrations. Store the prompt on the page for reproducibility.
Step 4: Push to CMS
Sanity: mutation create. Contentful: entry POST + publish. Include SEO fields.
Step 5: Slack confirmation
Preview URL, cover image, scheduled time. Editor validates in one click.
Example
Notion status → Ready. 45s later: Sanity entry created with cover 'A minimal desk with a laptop showing code — soft studio lighting'. Slack: 'Scheduled for Thu 10am ET.'