| name | ai-seo-articles |
| description | AI-powered SEO article production pipeline. Researches keywords, writes high-quality articles with branded hero images and inline visuals, scores quality at 110 pts, processes images via script, and publishes at scale. Configurable for any company via config/ subfolder. Currently configured for: Blink (blink.new). Commands: "run seo", "write seo articles", "seo run", "run seo 8 articles", "run seo b7 sprint", "run seo [market] focus".
|
ai-seo-articles — Master Skill
One skill, one source of truth for AI-powered SEO article production. Configurable for any project.
Active Project
Change this section to switch projects. Everything else reads from these paths automatically.
| Setting | Value |
|---|
| Project | Blink (blink.new) |
| Config path | .cursor/skills/ai-seo-articles/config/blink/ |
| Runtime data | .todo/seo/ (SEO_PROFILE.md, MANIFEST.md, briefs/, drafts/) |
To use this skill for a different project:
- Create
.cursor/skills/ai-seo-articles/config/[project-name]/
- Copy
config/blink/ as a template, update all 5 files (COMPANY, MARKETS, CLUSTERS, COPY, IMAGES)
- Update the "Active Project" table above to point to
config/[project-name]/
- Create
.todo/seo-[project-name]/ with SEO_PROFILE.md, MANIFEST.md, briefs/, drafts/
- Update ORCHESTRATOR.md Phase 0 config file paths to reference the new config and runtime paths
How to Invoke
| Command | What runs |
|---|
run seo | Standard run — 5 articles across top 5 priority clusters |
run seo 8 articles | Extended run — 8 articles |
run seo b7 sprint | 5-6 "How to Build X" articles + 2-3 other priorities |
run seo claude code focus | Prioritise Market C clusters (C1-C6) |
run seo openclaw focus | Prioritise Market A clusters (A7, A9, A1) |
run seo vibe coding focus | Prioritise Market B clusters (B2, B4, B7, B8, B9) |
Execution: read and run the orchestrator
When invoked, immediately:
- Read
.cursor/skills/ai-seo-articles/prompts/ORCHESTRATOR.md — the full 6-phase pipeline
- The orchestrator reads config files (Phase 0) before any other action
- Execute the orchestrator phases 0-6 exactly as written
Config Files (what each contains)
| File | Contains |
|---|
config/blink/COMPANY.md | Company name, website, blog URL, products, brand voice, key differentiators, CDN token |
config/blink/MARKETS.md | Three content markets (A/B/C), products per market, exact CTA strings, detection signals |
config/blink/CLUSTERS.md | All keyword clusters, Global Priority Stack, competitor intelligence per market, strategic rules |
config/blink/COPY.md | Exact CTA strings verbatim, pricing anchors, product advantage phrases, brand language dos/don'ts |
config/blink/IMAGES.md | CHARACTER ANCHOR, scene table by article type, 6 validated prompts, inline image system, CDN upload |
Directory Index
| Path | What it contains |
|---|
SKILL.md | This file. Entry point with Active Project config section. |
config/blink/COMPANY.md | Company identity — name, URLs, products, brand voice, CDN config |
config/blink/MARKETS.md | Content markets A/B/C — products, CTAs, detection signals |
config/blink/CLUSTERS.md | Keyword clusters, Global Priority Stack, competitor intel |
config/blink/COPY.md | Exact CTA copy, pricing anchors, brand language rules |
config/blink/IMAGES.md | Clay character system, scene table, 6 example prompts, inline image system |
prompts/ORCHESTRATOR.md | The brain. Generic 6-phase pipeline — loads config at Phase 0 |
reference/ARTICLES.md | Writing standards. Step 2 generic image section, article templates, blueprints A-E, style rules 1-10, SEO rules, frontmatter schema, publishing checklist |
reference/GEO.md | GEO + technical SEO. AI citation optimization, schema markup, robots.txt, sitemap, llms.txt, verification commands |
scripts/process-inline-images.mjs | Run after writing. Replaces INLINE_IMAGE comments with CDN-hosted images. Exit 0=ok, 2=no comments, 3=partial, 1=fatal |
scripts/audit-seo-health.sh | Technical audit. Checks noindex, robots.txt, sitemap, schema, llms.txt, OG images |
scripts/check-competitor-serps.sh | SERP monitoring. Checks SERP position for key keywords |
Runtime Data (in .todo/seo/ — not in this skill)
| Path | Purpose | Who writes it |
|---|
.todo/seo/SEO_PROFILE.md | Markets, clusters, Global Priority Stack, live scores | Human + orchestrator |
.todo/seo/MANIFEST.md | Run history — append after every run | Orchestrator |
.todo/seo/briefs/BRIEF_[slug].md | Per-article research briefs | Research worker |
.todo/seo/drafts/DRAFT_[slug].mdx | Article drafts in-flight | Writer worker |
Quick Scripts
node .cursor/skills/ai-seo-articles/scripts/process-inline-images.mjs .todo/seo/drafts/DRAFT_[slug].mdx
bash .cursor/skills/ai-seo-articles/scripts/audit-seo-health.sh
bash .cursor/skills/ai-seo-articles/scripts/audit-seo-health.sh http://localhost:3000
bash .cursor/skills/ai-seo-articles/scripts/check-competitor-serps.sh
Hard Stops (always enforced)
- B11 Customer Stories: never write without real customer data provided by a human
- B10 AI Comparisons: cap at 5 total; never prioritise over P1-P14
- Score gate: nothing publishes below 90/110; three revision passes max, then hold
- No duplicate keywords: check MANIFEST.md before any brief
- No fabricated data: invented stats or quotes → editor rejects, writer rewrites with sources
- Slug rules: no year suffix (
-2026). Timeless slugs. Exception: changelogs only
- No manual CTAs: auto-injected by rendering engine. DO NOT write CTA sections.
End-of-Run Report Format
- Articles published (count + full production URLs, e.g. https://blink.new/blog/[slug])
- Clusters worked + new coverage scores
- One M2 backlink opportunity flagged for human action
- What to prioritise next run
- Articles held (with reason and score)