Field SOP
Field SOP

SEO Content Production Workflow: RSS Topics to Auto-Publish

RSS/trend topic sourcing -> LLM scoring -> LLM writing -> SEO optimization (title/meta/keywords/FAQ/JSON-LD) -> quality check -> CMS draft publish; built for solo creators/indie sites to compress daily publishing from 4h to 30min.

Published July 31, 20267 min read
<!-- workflow-seo-content-production | resource | SEO Content Production Workflow: RSS Topics to Auto-Publish -->

Content teams get stuck in the loop of "topic picking by gut, finishing a draft only to find no SEO structure in place, then manually copy-pasting to publish." This n8n workflow strings the whole SEO content line into an automated pipeline: scheduled RSS and trend scraping builds a topic pool, an LLM scores each topic by SEO value (search potential, timeliness, actionability) to filter out the weak ones, high-score topics get fed to an LLM for a first draft, then an SEO optimization node generates title, meta description, keywords, FAQ, and JSON-LD structured data, and finally the draft is auto-published to your CMS via API. Built for solo creators, indie sites, and content marketing teams to compress daily publishing from 4 hours to under 30 minutes; the template is a skeleton-fill in your RSS sources and LLM key and run.

Workflow Chain

Scheduled trigger (daily 9 AM) -> RSS / trend scraping (multi-source) -> topic merge + dedupe -> LLM topic scoring (search potential / timeliness / actionability) -> If branch (action=write to drafting, pool to archive) -> LLM writing (1500-2500 word draft) -> LLM SEO optimization (title / meta / keywords / FAQ / JSON-LD) -> If quality check (word count / title length / keyword in first paragraph) -> publish to CMS (draft status).

Download Template

Setup Steps

  1. Import: n8n -> Workflows -> Import from File, pick workflow-seo-content-production.json
  2. Cron trigger node: defaults to daily 9:00 AM; change the cron expression to match your cadence (Mon/Wed/Fri -> 0 9 * * 1,3,5)
  3. RSS scrape node: fill in RSS source URLs for your industry. Tech sites use Hacker News / 36kr / TechCrunch; vertical sites use authoritative sources in that niche. Each RSS Feed Read node takes one URL; copy the node to add more sources
  4. Topic merge node: the Set node concatenates title + contentSnippet + link from multiple RSS feeds into a topic_payload field, fed uniformly to the scoring model
  5. LLM topic scoring node: fill in your Moonshot / DeepSeek API key; 8k context is enough. The prompt has the model output score, action (write / pool), focus_keyword, and category-only action=write proceeds to drafting
  6. If topic branch node: true branch goes to LLM writing, false branch archives low-score topics to Feishu / Notion for later review
  7. LLM writing node: produces a 1500-2500 word draft following your article template (hook opener + 3-4 H2 sections + actionable steps + summary); use 32k context for long posts (moonshot-v1-32k or deepseek-chat), and the prompt must forbid fabricating citations and links
  8. LLM SEO optimization node: takes the draft and outputs title (≤60 chars), meta description (≤155 chars), focus keyword, 5-8 long-tail keywords, 3-5 FAQ items, a JSON-LD string, and a quality (pass / rewrite) flag. This is the SEO-critical node-lock the JSON output format in the prompt and set temperature to 0
  9. If quality check node: quality=pass goes to publish, rewrite loops back to the writing node. Check dimensions are decided by the SEO optimization prompt (word count, title length, keyword in first paragraph)
  10. Publish to CMS node: HTTP Request calls your CMS API (WordPress REST API / Ghost Admin API / custom backend), POSTing title + content + meta + JSON-LD together; status is set to draft for human final review
  11. Test run: trigger manually once, check whether a topic flowed through, the writing node produced a draft, and the CMS received a draft

Companion Prompt (LLM Writing + SEO Optimization)

Prompt
[Topic Scoring]
You are a senior SEO content editor. Score each topic 1-10 on:
- Search potential (1-4): clear search intent, expandable long-tail, weak competing pages
- Timeliness (1-3): tied to a trend or recent event
- Actionability (1-3): can produce how-to steps / roundup / SOP
Output JSON only: {"score": number, "action": "write or pool", "focus_keyword": "primary keyword", "reason": "one sentence", "category": "review|sop|hotspot|resource"}
Rule: action is "write" when score >= 7, otherwise "pool". Do not fabricate search volume; mark "needs data" if insufficient.
Topic content: {{$json.topic_payload}}

[SEO Optimization]
You are an SEO specialist. Generate publish metadata and a quality verdict from the draft below.
Output JSON:
{
  "title": "≤60 chars, primary keyword front-loaded",
  "meta_description": "≤155 chars, primary keyword + call to action",
  "focus_keyword": "1 primary term",
  "long_tail_keywords": ["5-8 long-tail terms"],
  "slug": "kebab-case-english-slug",
  "faq": [{"question": "...", "answer": "≤100 words"}],
  "json_ld": "FAQPage JSON-LD string",
  "quality": "pass or rewrite"
}
quality rule: pass when word count ≥1500, title ≤60 chars, and primary keyword appears in the first paragraph; otherwise rewrite.
Draft: {{$json.draft}}
Do not keyword-stuff the title; the meta should read like natural human prose.

Pitfalls

  • RSS source quality caps everything: garbage sources yield garbage topics. Hand-pick 5-10 high-quality sources; don't over-collect. Low-quality sources drown the scoring model in noise
  • LLM writing fabricates citations and data: the prompt must demand "citations must be real, do not fabricate papers or links"; add a regex check in the quality node for doi.org / arxiv.org links and flag suspicious ones as rewrite for human review
  • SEO node output format drifts: LLMs often slip explanatory text into JSON. Set temperature to 0 and wrap a try-catch around JSON.parse() in the next node; on parse failure, loop back and regenerate
  • Keyword density isn't "the higher the better": modern SEO rewards semantic relevance, not stuffing. Write "primary keyword appears once in the first paragraph, distributed naturally, no stuffing" in the prompt to avoid over-optimization penalties
  • Never auto-publish as "published": always save as draft and keep a human final-review gate. Fully automatic straight-publishing, once it errors (policy-violating title, factual mistakes), can't be pulled back and hurts SEO
  • Validate JSON-LD against the schema: before publishing, validate JSON-LD locally against the Google Rich Results Test rules; invalid structured data is worse than none

After the template runs, add two enhancements: first, plug in the Google Search Console API to pull weekly impressions and clicks and feed them back to the scoring model so topics get sharper over time; second, 7 days after publishing, auto-check whether the URL is indexed (via the Indexing API) and have humans add internal links to unindexed pages. Backtest the score threshold against historical top performers once a month to catch SEO signal drift.


References

This article is AI-assisted and human-edited. Last updated: 2026-07-31

Related