content-coverage
Plan and write blog posts that cover missing AI search prompts from live MCP data. Use when the user wants content for ChatGPT gaps, citation listicles, competitor sources, or a content campaign from AI SEO Tracker. Trigger on "write posts for missing prompts", "content coverage", "what should we publish", or fetch https://aiseotracker.com/content-coverage/SKILL.md.
Try your first task
A source-grounded starter task has not been verified for this skill yet.
SKILL.md
name: content-coveragedescription: >- Plan and write blog posts that cover missing AI search prompts from live MCP data. Use when the user wants content for ChatGPT gaps, citation listicles, competitor sources, or a content campaign from AI SEO Tracker. Trigger on "write posts for missing prompts", "content coverage", "what should we publish", or fetch https://aiseotracker.com/content-coverage/SKILL.md.version: 1.0.0homepage: https://aiseotracker.com/content-coverage/SKILL.mdmetadata: version: 1.0.0 author: illyism source: https://aiseotracker.com/content-coverage/SKILL.md site: https://aiseotracker.com docs: https://aiseotracker.com/docs/content-coverage mcp: https://aiseotracker.com/api/agent/mcp setup: https://aiseotracker.com/SKILL.md report: https://aiseotracker.com/ai-seo-report/SKILL.mdAI SEO content coverage
Start here: You are reading https://aiseotracker.com/content-coverage/SKILL.md. The file is complete only if the last line is page end END SKILL v1.0.0. If missing, re-fetch.
Cover approved prompt clusters with evidence-backed pages in the user's content repository. Then recheck MCP after those pages are live. Do not promise full coverage or rankings.
If MCP is not connected
Fetch https://aiseotracker.com/SKILL.md and connect MCP first (OAuth, no API keys). Then come back to this file.
MCP URL: https://aiseotracker.com/api/agent/mcp
Prerequisites:
- Connected AI SEO Tracker MCP
- A writable content repository (blog MDX/markdown)
- Optional: a project image skill or tool the user already has
Do not call aiseo_add_prompts from this skill unless the user explicitly asks to track more queries.
Call order (do not skip)
aiseo_list_projects: pick the project the user named (domain or slug). Never invent a slug.aiseo_get_scan: ifdataStatusisno_data, stop. Say the project needs a scan. Ifstateisrunning, write the plan from what exists and mark ranks as incomplete.aiseo_list_prompts: all prompts (no status filter). Keepsummaryandprompts[].href. Missing prompts are the coverage queue.aiseo_list_sources: citation URLs and domains. Usesources[].hrefandsources[].url.aiseo_list_competitors: preferstatus=TRACKED. Usecompetitors[].href.aiseo_list_snippets: own brand. Optional: one tracked competitor if that rival leads the cited answers.
Use href fields. Prefix with https://aiseotracker.com. Do not invent paths, ranks, or competitor names.
Phase 1: Snapshot
Fill this block from tool JSON only:
CONTENT PLAN:
Brand: "<project.name>"
Domain: <project.domain or null>
Project: <project.slug>
Snapshot: <get_scan.lastCheckedAt or omit>
Scan: <running|done> | Prompts scanned: <scannedPromptCount>/<promptCount>
Tracked: <summary.total> | Missing: <summary.missing> | Winning: <summary.winning> | Opportunities: <summary.opportunities>
Missing prompts:
- [<query>](<absolute prompt href>)
Top sources (independent editorial first):
#1 [<title>](<source.url>) · <domain> · <mentionCount> mentions · prompts: <list>
Tracked competitors:
- [<brandName>](<absolute competitor href>) (<domain or none>)
Separate independent editorial listicles (third-party roundups) from competitor-owned pages (vendor blogs and homepages). Pitch only independent lists later.
Phase 2: Cluster and canonicalize
Group missing and opportunity prompts that share one search intent. One cluster = one page unless the user asked otherwise.
For every target, decide one of:
new: no existing page covers this intentrewrite: same slug, update in place (updateDateif the repo uses it)consolidate: merge into an existing URL; do not spawn a competing slug
Audit the target repo first: existing blog filenames, titles, descriptions, and redirects. Prefer rewrite or consolidate over near-duplicates.
Cap a batch at 5 posts. If more clusters remain, queue them for the next approved batch.
Phase 3: Research (bounded)
For each approved or proposed slug:
- Start from MCP
sources[].urlfor that prompt cluster. - Fetch 3–5 verified URLs. Prefer the cited listicles, then current web results for the primary keyword.
- Record titles, intent, and whether AI SEO Tracker (or the user's brand) is named.
- If a URL does not resolve, write
unverifiedand skip it. Never invent a listicle URL. - Do not scrape live ChatGPT, Perplexity, Gemini, Copilot, or AI Overview answers.
Title and slug:
- Put the primary keyword near the start of the title. Keep most titles under 60 characters.
- Slug: lowercase, hyphens, 2–5 words, no year unless the query requires freshness.
- Match listicle vs how-to vs definition intent from the live SERP, not from memory.
Phase 4: Stop for approval
Present the campaign and wait. Do not write files yet.
Include:
- The CONTENT PLAN snapshot
- A table:
prompt cluster | intent | slug | action (new/rewrite/consolidate) | title | sources - Estimated post count (max 5 this batch)
- Cannibalization risks
- Independent listicles to pitch after publish (drafts only)
Write files only after the user approves the table.
CONTENT BATCH MANIFEST
Keep this manifest in the chat (or a file the user named). Update it as you go. Resume from it. Do not repeat finished research. Do not overwrite another worker's slug.
CONTENT BATCH MANIFEST v1
Project: <slug>
Planned at: <ISO date>
MCP snapshot: <lastCheckedAt>
Phase: <snapshot|plan|research|draft|validate|report>
| slug | action | prompt cluster | phase | notes |
| --- | --- | --- | --- | --- |
| example-slug | new | missing prompt text | planned | |
phase values: planned | research | draft | validate | done | blocked
On resume: re-run Phase 1 if lastCheckedAt changed or the user says data changed. Skip rows at done. Read existing files before merging a blocked or partial slug.
Phase 5: Write (after approval)
Use available parallel subagents if the host supports them. Grok CLI is optional. Never required.
If you split work:
- One slug per worker. No overlapping files.
- Give each worker the approved row, the 3–5 source URLs, product facts the user confirmed, and local MDX conventions.
- Parent agent owns the manifest.
Write native repository markdown/MDX. Follow files already in that repo (frontmatter, CTA components, internal link style). Short sentences. No invented stats, prices, rankings, or first-hand tests. If a competitor price is unverified, omit it or say to check their site.
Images:
- Write image alt (under 125 characters) and a scene prompt.
- Generate an image only if the user has a project image skill/tool and asks to run it.
- Never print API keys. Never tell the user to paste keys. Never call a private operator script from this skill.
Do not deploy, commit, push, email, post publicly, purchase, or add MCP prompts unless the user explicitly asks.
Phase 6: Validate
Before you hand off a batch:
- Frontmatter complete and consistent with sibling posts
- Slug unique (or rewrite of the intended file)
- Internal links point at real paths
- Image paths exist, or alt+prompt is listed as pending
- No unresolved placeholders
- Repo format/lint on touched files when a formatter is available
Phase 7: After publication
When the user says the posts are live:
- Call
aiseo_get_scan, thenaiseo_list_promptsandaiseo_list_sourcesagain. - Report which approved prompts changed status, which are still missing, and which independent listicles still omit the brand.
- Leave outreach as copy-paste drafts. Do not send.
Optional: fetch https://aiseotracker.com/ai-seo-report/SKILL.md for the visibility brief after the rescan.
Do not
- Invent ranks, URLs, competitor names, listicle domains, DR, traffic, or trend deltas
- Treat
dataStatus: no_dataas an auth failure - Scrape live AI answers or the marketing site when MCP is empty
- Write files before the approval checkpoint
- Promise rankings or "full coverage"
- Send email, post publicly, or charge a card
- Call
aiseo_add_promptsunless the user asked to track those queries
END SKILL v1.0.0