Content brief generator
Skill siddiqss/semantic-seo-suite/skills/content-brief-generator
Generate entity-aware, Koray-style content briefs from a topical-map node or any target query — a semantically ordered heading skeleton with entity/attribute tags, internal-link targets, snippet target, word budgets, locked-facts references, and a do-not-fabricate list. Use whenever the user asks for a content brief, an article outline, writer instructions, "brief for X", or wants to start writing an article that exists in the topical map. Runs SERP recon first. Triggers on outline/brief intent broadly, not just the word "brief".From its SKILL.md
npx -y skills add siddiqss/semantic-seo-suite --skill content-brief-generatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `../../scripts/dataforseo_client.py` and 1 more.
SKILL.md
3.6 KB, 745 tokens by cl100k_base, as published. Nobody here has run it
content-brief-generator
Produce a brief a stranger writer could execute without further explanation, built on the page's contextual vector (heading order = meaning) and locked to one macro context.
Read first: ../../framework/contextual-vectors.md,
../../framework/macro-micro-semantics.md, ../../framework/query-semantics.md,
../../framework/internal-linking-rules.md.
Preconditions
brands/<slug>/config.yaml(tier).- A node in
brands/<slug>/topical-map.json(or create an ad-hoc node from a query).
Workflow
-
Load the node (target query, intent, entities, query network, internal links). If ad-hoc, first decompose the query's entity via
../../framework/eav-modeling.md. -
SERP recon for the target query:
- T0:
web_search+ fetch the top 2–3 results; extract their heading structures and which entities/attributes they cover. Note gaps you can beat. - T2:
../../scripts/dataforseo_client.pylive SERP + People-Also-Ask for cleaner data. Record provenance.
- T0:
-
Build the contextual vector (the outline). Order per contextual-vectors.md: definition/snippet lead → defining attributes → values/how-to → comparisons/related → question network → edge cases (macro-micro border with a grouper question). Tag each heading
entity:/attr:/rel:/q:, statemust_cover, set aword_budgetguideline. Keep ONE macro context and one intent. -
Snippet target. Write the ~40-word extractive answer the lead should win.
-
Internal links. Pull
up/down/lateralfrom the node; add descriptive, varied anchor suggestions from the target nodes' query networks. Justify laterals (named shared attribute at T0; embedding distance at T1). -
Lock the facts. List
locked_facts_refs(keys the article may state) and an explicitdo_not_fabricatelist (specs/stats/prices lacking provenance — pull the brand's_pending_owner_confirmationitems into here). -
Intent-conflict check vs sibling nodes (query-semantics.md): flag any node with overlapping query network + same intent. T0 by judgement; T1 via
../../scripts/semantic_distance.py. -
Emit
brands/<slug>/briefs/<node-slug>.md(a readable brief) and, if the pipeline wants structured data, a JSON alongside it validating against../../templates/brief.schema.json. Set nodestatus: briefed.
Definition of done
- One macro context, one intent; outline follows the contextual vector order.
- Every heading tagged + has must_cover; snippet target written.
- Internal links present with varied anchors; laterals justified.
- do_not_fabricate names the unverified brand facts explicitly.
- Intent-conflict check run; conflicts flagged or "none".
Grounding ladder
- T0: LLM reasoning + web_search SERP glimpse; intent/queries
asserted. - T1: autocomplete-enriched query coverage, embedding-based conflict check + lateral justification, SERP-verified intent.
- T2: DataForSEO live SERP + PAA questions folded into the question network.
What ships with it: 1 file
760 B alongside SKILL.md
evals/
- evals.json760 B