Field SOP
Field SOP

AI Content Calendar Automation Workflow: Topic Selection to Distribution, End to End

An n8n workflow for AI content calendar automation: scheduled topic collection -> LLM scoring + publish-date + category -> write to calendar (Feishu/Notion) -> notify owner near publish date -> status writeback. Includes a .json template.

Published August 2, 20265 min read
<!-- workflow-ai-content-calendar | resource | AI Content Calendar Automation Workflow: Topic Selection to Distribution, End to End -->

The biggest chaos in running a content site isn't in the writing-it's in the scheduling. Topics scatter across WeChat bookmarks, memo apps, and browser tabs. What to publish on which day is a gut call. On the day something is due, you realize nothing is written and scramble to ship a subpar piece. Your column rhythm is irregular, and readers can't tell when to expect hot takes versus tutorials. Worse, multi-channel distribution-website, WeChat official account, Xiaohongshu-each runs its own schedule, out of sync, and the official account publishes before the site catches up.

This n8n workflow chains "discover -> score -> schedule -> remind -> write back" into one automated line: a weekly trigger pulls from multiple topic sources, an LLM scores each item and suggests a publish date and column, then writes it into a Feishu Bitable or Notion database as a calendar. When a publish date is near, it notifies the owner with "tomorrow: publish X." After publication, a CMS webhook writes back the status to "published," keeping the calendar alive so everyone can see who writes what and when.

Workflow Chain

Schedule trigger (every Monday 9 AM) -> parallel multi-source collection (RSS Read for tech media feeds / HTTP Request for trending API / Webhook for manual topic entry) -> Merge into one topic stream -> LLM node (HTTP Request to DeepSeek/Kimi API) scores topic value + suggests publish date + column category -> Code node parses LLM JSON output and calculates daysUntilPublish -> write to calendar table (Feishu Bitable / Notion database: title / column / publish date / status / assignee) -> IF publish date near (daysUntilPublish <= 1) -> notify assignee (Feishu / Slack / email "tomorrow: publish X") -> [CMS publish callback Webhook triggers] -> write back status to "published".

Download Template

Setup Steps

  1. Import: n8n -> Workflows -> Import from File, pick workflow-ai-content-calendar.json
  2. Schedule node: set to trigger every Monday at 9 AM (set the week's lineup early, leave room for writing). Switch to daily if your topic cycle is fast
  3. Source nodes: RSS Read for Chinese tech media feeds (36Kr https://36kr.com/feed / Jiqizhixin https://www.jiqizhixin.com/rss / sspai https://sspai.com/feed); HTTP Request for trending APIs (Tavily search / Weibo hot search / Jike trending); Webhook node for manual topic entry-curl a link in and it joins the pool
  4. Merge node: set mode to Append, combining three streams into one
  5. LLM node: fill in API key (DeepSeek / Kimi / Qwen all work), 8k context is enough. Prompt should output summary / score / suggestedPublishDate / category / assignee (see Companion Prompt below)
  6. Code node: parse the LLM's JSON response, compute daysUntilPublish, set default status='draft'. Auto-shift to Monday if the suggested date lands on a weekend
  7. Calendar write node: Feishu Bitable via HTTP Request to OpenAPI (pass title / column / publishDate / status / assignee in fields); Notion via the official Notion node's Create Page, with your calendar databaseId
  8. IF node: condition daysUntilPublish <= 1, true branch goes to notify, false ends (not due yet)
  9. Notify node: Feishu custom bot Webhook; Slack incoming Webhook; email via Send Email node. Message body: title + column + publish date + assignee only
  10. CMS callback node: when your CMS (WordPress / Ghost) publishes a post, it calls this n8n Webhook to trigger status writeback
  11. Status writeback node: PATCH the corresponding calendar record, set status to "published"
  12. Test run: manually trigger the Schedule node, check whether new topic rows appear in the calendar table; change one topic's publish date to tomorrow and verify the notification arrives

Companion Prompt (LLM Scoring + Scheduling + Column)

Prompt
You are the topic scheduling editor for an AI content site. Read the topic below and output:
1. Summary: 80 words max, covering "what happened + why it's worth writing about"
2. Topic value score (1-10):
   - Timeliness (3): first reported within 72h?
   - Heat (3): covered by multiple sources simultaneously?
   - Writing potential (2): extendable into tutorial/comparison/deep-dive?
   - Audience fit (2): matches AI tool practitioners?
3. Suggested publish date (YYYY-MM-DD): time-sensitive topics within 2 days; deep dives within 1 week
4. Column category: hotspot / review / sop / resource / prompt / workflow
5. Suggested assignee: allocate by column (leave empty to default to editor)
Output JSON with fields: summary / score / suggestedPublishDate / category / assignee.
Do not fabricate facts not in the topic; use only the original text for the summary.
Topic title: {{title}}
Topic body: {{content}}

Advanced

  • Column mapping rules: add a mapping layer in the Code node-score >=8 with strong timeliness auto-files as hotspot, score 6-7 with hands-on value as sop. Reduces manual classification and balances column distribution
  • Status writeback loop: the CMS publish webhook is just the start. For a closed loop, add an HTTP Request after writeback to sync the article URL back into the calendar's url field, turning the calendar into a full "topic -> publish" lifecycle board
  • CMS integration: after writing to the calendar, for score >=9 topics, directly call the CMS API to create a draft (title + summary + column auto-filled). Editors open a half-finished draft instead of starting from scratch. WordPress REST API, Ghost Admin API
  • Calendar visualization: Feishu Bitable has a built-in calendar view-set the "publish date" field as date type and switch to calendar mode. Clusters and gaps are immediately visible. Notion's Timeline view works the same way
  • Multi-channel routing: after the notify node, add a Switch to split by column-hot takes go to the all-hands channel, tutorials to the content team channel. Less noise, fewer false alarms

Pitfalls

  • LLM suggests unreasonable dates: models sometimes pick weekends or holidays. Add a date check in the Code node, auto-shift to the next Monday
  • Webhook topic format varies: some send title+url, some send full text. Add a Code node after the Webhook to normalize fields into title / content / sourceUrl before Merge
  • Notification messages too long: Feishu/Slack fold messages over a few lines. The notify node should send only title + column + publish date + assignee-put the summary in the calendar table
  • Calendar records pile up: weekly runs generate 100+ rows a month. Add a filtered view for status != 'published' to see only pending items; archive published ones periodically
  • IF time window mismatch: daysUntilPublish <= 1 checked only on Monday misses items due Wednesday-Friday. Spin up a separate daily 9 AM Schedule Trigger that runs just the IF + notify segment, decoupled from the weekly collection

References

This article is AI-assisted and human-edited. Last updated: 2026-08-02

Related