Seed + Modifier Prompt Skill
Take brand-config.md and produce a structured seeds.json that the keyword multiplier (Semrush Keyword Magic Tool via /content-gap-analysis) uses to expand into real keyword ideas.
This is the upstream of all autonomous keyword research. Without good seeds and modifiers, every downstream layer (BID, AIO, redteam) is filtering an irrelevant pool.
Input
/seed-modifier-prompt [--regen]
Reads:
brand-config.md — brand name, audience, products, monetization
content-pipeline/0-keywords/seeds.json — previous output (for change detection)
--regen forces a fresh run even if the brand-config hash hasn't changed.
Process
Compute brand-config hash. SHA-256 of brand-config.md content. Compare against seeds.json's brand_snapshot field if it exists. If unchanged AND --regen not passed, exit cleanly with a message saying "seeds are current, skipping" — Layer 1 stays idempotent.
Read brand-config. Extract:
- Brand name + tagline (one-line positioning)
- Audience persona + pain points
- Live products (drop coming-soon — they're not stable foundations for keyword research)
- Monetization model (ads / subscription / affiliate / SaaS / etc.)
- Category positioning
Dispatch the hero-prompt agent. Use the Agent tool with subagent_type=general-purpose and a self-contained brief based on the keyword-research transcript's "10-second hero prompt":
You are doing keyword research for {brand}, a {category-positioning} that {tagline}. The site makes money through {monetization}. Target audience: {audience-persona} who care about {top-3-pain-points}. Live products: {product-list}.
Give me 10 seed keywords that are 1-2 words max — broad niche terms the audience would type. Then give me 10+ modifiers that turn seeds into real searches: a mix of intent modifiers (best, vs, alternative, review, comparison), how-to modifiers (how to, guide, tutorial, ways to), and AI-resistant modifiers (calculator, checker, generator, tool, examples, templates). The seeds and modifiers must NOT share words.
Output as JSON:
{
"seeds": ["..", "..", ...],
"modifiers": ["..", "..", ...],
"rationale": "one sentence per seed explaining why it's relevant to the brand's audience and products"
}
Discipline:
- Seeds are nouns or noun phrases. NOT product names. NOT brand-specific terms. Generic enough that competitors also rank for them.
- Modifiers turn seeds into searchable phrases. Don't overlap categories (don't include "best" twice in different surface forms).
- Tool-style modifiers (calculator, checker, generator) are critical because tool keywords are AI-Overview-immune — include at least 3.
Validate the agent's output.
- JSON parses cleanly
- 10 seeds, each 1-2 words, lowercase
- 10+ modifiers, each 1-3 words, lowercase
- At least 3 tool-style modifiers (calculator/checker/generator/tool/template/examples/quiz/test)
- Zero word overlap between seeds and modifiers (split on whitespace, intersect, must be empty)
- If validation fails, re-run the agent once with the validation error in the brief. If it still fails, exit with the failure reason.
Write content-pipeline/0-keywords/seeds.json with:
{
"seeds": [...],
"modifiers": [...],
"rationale": "...",
"generated_at": "ISO8601 UTC",
"brand_snapshot": "sha256-hex-of-brand-config-md",
"brand_name": "..."
}
Print a one-line summary with seed count, modifier count, tool-modifier count, and the first 3 seeds for sanity-check.
Output
content-pipeline/0-keywords/seeds.json
Quality checklist
Why this exists
The keyword-research transcript's first principle: AI given nothing returns nothing useful. Seeds + modifiers + a real keyword research tool (Semrush Power 1 MCP) is the formula that produces volume-validated, intent-grounded keyword ideas. Without this layer, the pipeline's only ideation channel is "what do competitors rank for that we don't" — which is good but narrow. Adding the seeded-multiplier source widens the pool to "what does our audience search for" regardless of competitor coverage.
When the agent returns generic seeds
If seeds look like "marketing" / "business" / "online" — they're too broad. Re-run with the addition: "Seeds must be specific enough that someone outside the {category-positioning} category would not search for them. If a seed could apply to any industry, it's too broad — replace it."
When the brand-config has no live products
(e.g., personal blog, agency site without a SaaS) — adapt the prompt: drop the "live products" line and emphasize audience pain points harder. The downstream product_fit scoring already handles the no-products case (weight zeroed out in keyword-prioritization line 79-80).
Invocation from the master orchestrator
/keyword-research-pipeline calls this skill first. It runs idempotently — no API costs, no Semrush quota, just one agent dispatch — so the master can call it on every run without worrying about waste.
Topic-graph enrichment (when Layer 0 has run)
If content-pipeline/0-keywords/topic-graph.json exists (the output of Layer 0 /topic-discovery, which runs Semrush Topic Research + .Trends ahead of seed generation), pre-feed the agent with the top 5 KSB cluster names from that file plus their representative keywords as a "Pre-discovered topical clusters" section in the brief. Semrush has already done topical clustering at the category level; using its clusters as anchors produces seeds that map onto real ranking opportunities rather than abstract category words. The agent should treat the clusters as evidence, not constraints — it can still propose seeds outside them when brand-config strongly motivates one.
If topic-graph.json is absent (Layer 0 was skipped, or the brand has no Semrush coverage in the category yet), the skill falls back to brand-config-only behavior — the original 10-second hero prompt, unchanged. The pipeline never blocks on Layer 0; topic-graph is enrichment, not a hard input.
1---2name: seed-modifier-prompt3description: Layer 1a of the keyword research pipeline. Generates seed keywords (broad niche terms) and modifiers (best, how-to, vs, calculator, etc.) from brand-config so the keyword multiplier has a real foundation to expand from. Replaces the "AI gives you generic keywords" problem with the structured 10-second hero prompt.4---56# Seed + Modifier Prompt Skill78Take `brand-config.md` and produce a structured `seeds.json` that the keyword multiplier (Semrush Keyword Magic Tool via `/content-gap-analysis`) uses to expand into real keyword ideas.910This is the upstream of all autonomous keyword research. Without good seeds and modifiers, every downstream layer (BID, AIO, redteam) is filtering an irrelevant pool.1112## Input1314`/seed-modifier-prompt [--regen]`1516Reads:17- `brand-config.md` — brand name, audience, products, monetization18- `content-pipeline/0-keywords/seeds.json` — previous output (for change detection)1920`--regen` forces a fresh run even if the brand-config hash hasn't changed.2122## Process23241. **Compute brand-config hash.** SHA-256 of `brand-config.md` content. Compare against `seeds.json`'s `brand_snapshot` field if it exists. If unchanged AND `--regen` not passed, exit cleanly with a message saying "seeds are current, skipping" — Layer 1 stays idempotent.25262. **Read brand-config.** Extract:27 - Brand name + tagline (one-line positioning)28 - Audience persona + pain points29 - Live products (drop coming-soon — they're not stable foundations for keyword research)30 - Monetization model (ads / subscription / affiliate / SaaS / etc.)31 - Category positioning32333. **Dispatch the hero-prompt agent.** Use the Agent tool with `subagent_type=general-purpose` and a self-contained brief based on the keyword-research transcript's "10-second hero prompt":3435 > You are doing keyword research for **{brand}**, a {category-positioning} that {tagline}. The site makes money through {monetization}. Target audience: {audience-persona} who care about {top-3-pain-points}. Live products: {product-list}.36 >37 > Give me **10 seed keywords** that are 1-2 words max — broad niche terms the audience would type. Then give me **10+ modifiers** that turn seeds into real searches: a mix of intent modifiers (best, vs, alternative, review, comparison), how-to modifiers (how to, guide, tutorial, ways to), and **AI-resistant modifiers** (calculator, checker, generator, tool, examples, templates). The seeds and modifiers must NOT share words.38 >39 > Output as JSON:40 > ```json41 > {42 > "seeds": ["..", "..", ...],43 > "modifiers": ["..", "..", ...],44 > "rationale": "one sentence per seed explaining why it's relevant to the brand's audience and products"45 > }46 > ```47 >48 > Discipline:49 > - Seeds are nouns or noun phrases. NOT product names. NOT brand-specific terms. Generic enough that competitors also rank for them.50 > - Modifiers turn seeds into searchable phrases. Don't overlap categories (don't include "best" twice in different surface forms).51 > - Tool-style modifiers (calculator, checker, generator) are critical because tool keywords are AI-Overview-immune — include at least 3.52534. **Validate the agent's output.**54 - JSON parses cleanly55 - 10 seeds, each 1-2 words, lowercase56 - 10+ modifiers, each 1-3 words, lowercase57 - At least 3 tool-style modifiers (calculator/checker/generator/tool/template/examples/quiz/test)58 - Zero word overlap between seeds and modifiers (split on whitespace, intersect, must be empty)59 - If validation fails, re-run the agent once with the validation error in the brief. If it still fails, exit with the failure reason.60615. **Write `content-pipeline/0-keywords/seeds.json`** with:62 ```json63 {64 "seeds": [...],65 "modifiers": [...],66 "rationale": "...",67 "generated_at": "ISO8601 UTC",68 "brand_snapshot": "sha256-hex-of-brand-config-md",69 "brand_name": "..."70 }71 ```72736. **Print a one-line summary** with seed count, modifier count, tool-modifier count, and the first 3 seeds for sanity-check.7475## Output7677`content-pipeline/0-keywords/seeds.json`7879## Quality checklist8081- [ ] 10 seeds, all 1-2 words82- [ ] 10+ modifiers, all 1-3 words83- [ ] At least 3 AI-resistant modifiers (calculator/checker/generator/tool/template/examples)84- [ ] Zero word overlap between seeds and modifiers85- [ ] Each seed has a one-sentence rationale tied to brand audience or products86- [ ] `brand_snapshot` matches current `brand-config.md` SHA-25687- [ ] No product names in seeds (seeds are generic, modifiers do the differentiation)8889## Why this exists9091The keyword-research transcript's first principle: AI given nothing returns nothing useful. Seeds + modifiers + a real keyword research tool (Semrush Power 1 MCP) is the formula that produces volume-validated, intent-grounded keyword ideas. Without this layer, the pipeline's only ideation channel is "what do competitors rank for that we don't" — which is good but narrow. Adding the seeded-multiplier source widens the pool to "what does our audience search for" regardless of competitor coverage.9293## When the agent returns generic seeds9495If seeds look like "marketing" / "business" / "online" — they're too broad. Re-run with the addition: "Seeds must be specific enough that someone outside the {category-positioning} category would not search for them. If a seed could apply to any industry, it's too broad — replace it."9697## When the brand-config has no live products9899(e.g., personal blog, agency site without a SaaS) — adapt the prompt: drop the "live products" line and emphasize audience pain points harder. The downstream `product_fit` scoring already handles the no-products case (weight zeroed out in `keyword-prioritization` line 79-80).100101## Invocation from the master orchestrator102103`/keyword-research-pipeline` calls this skill first. It runs idempotently — no API costs, no Semrush quota, just one agent dispatch — so the master can call it on every run without worrying about waste.104105## Topic-graph enrichment (when Layer 0 has run)106107If `content-pipeline/0-keywords/topic-graph.json` exists (the output of Layer 0 `/topic-discovery`, which runs Semrush Topic Research + .Trends ahead of seed generation), pre-feed the agent with the **top 5 KSB cluster names** from that file plus their representative keywords as a "Pre-discovered topical clusters" section in the brief. Semrush has already done topical clustering at the category level; using its clusters as anchors produces seeds that map onto real ranking opportunities rather than abstract category words. The agent should treat the clusters as evidence, not constraints — it can still propose seeds outside them when brand-config strongly motivates one.108109If `topic-graph.json` is absent (Layer 0 was skipped, or the brand has no Semrush coverage in the category yet), the skill falls back to brand-config-only behavior — the original 10-second hero prompt, unchanged. The pipeline never blocks on Layer 0; topic-graph is enrichment, not a hard input.