/04-content-brief
For one priority from content_priorities.json, generate a content brief with explicit slots for the human expert (founder/domain specialist) to fill with real cases, real data, and real opinions. This is the human-in-loop checkpoint — the moat that prevents the entire workflow
> /plugin marketplace add ViryaZheng/recomby-geo > /plugin install recomby-geo@recomby-geo
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/04-content-brief
Context preview
What this command does when you run it.
For one priority from content_priorities.json, generate a content brief with explicit slots for the human expert (founder/domain specialist) to fill with real cases, real data, and real opinions. This is the human-in-loop checkpoint — the moat that prevents the entire workflow
Command definition
04-content-brief.mddescription: For one priority from content_priorities.json, generate a content brief with explicit slots for the human expert (founder/domain specialist) to fill with real cases, real data, and real opinions. This is the human-in-loop checkpoint — the moat that prevents the entire workflow from collapsing into "AI writing more AI-readable AI slop." Outputs briefs/<priority-id>.md. Use after 03-gap; consumed by 05-production ONLY after the expert has filled the marked slots.
argument-hint: "<client-folder, e.g. clients/acme>"
04 · Content Brief — Human-in-Loop Checkpoint
This is the most important command in the pipeline. Without it, the system collapses into the same generic AI-content-mill that has saturated the GEO commodity layer. With it, the system produces content AI engines actually cite — because it contains things AI can't auto-generate.
**The principle**: the pipeline builds the scaffold; humans fill the soul. This command outputs scaffold with explicit, named, schema-tight blank spaces. Until those blanks are filled, 05-production refuses to run.
---
Inputs
- `clients/<slug>/brand_context.json`
- `clients/<slug>/content_priorities.json`
- A specific `priority_id` (passed by user or auto-picked: highest unbriefed).
Output
- `clients/<slug>/briefs/<priority-id>.md` — human-readable brief with
REQUIRED-FILL slots clearly marked.
- `clients/<slug>/briefs/<priority-id>.meta.json` — machine-readable
metadata: which slots are filled, by whom, when.
- `clients/<slug>/briefs/<priority-id>.html` — interactive fill-form for
the client/expert (rendered by the `geo-review-html` skill; this is the artifact the reviewer actually opens, not the `.md`).
---
Procedure
Step 1 — Load context
jq --arg id "<priority-id>" '.priorities[] | select(.id==$id)' \
clients/<slug>/content_priorities.json
Pull the priority record. Cross-reference brand_context for the relevant ICP, voice samples, and competitor positioning.
Step 2 — Choose the angle
Generate 2–3 candidate angles for the priority. An angle is a one-sentence statement of the unique thesis the piece will defend. Bad angle: "Best CRM for small business." Good angle: "Why bookkeepers (not sales teams) should own CRM choice in firms under 20 people, based on our 200-firm dataset."
The angle MUST satisfy:
- Aligns with `core_differentiator` and `competitive_moat` from brand_context.
- Targets the priority's `intent` directly.
- Cannot be written without the brand's specific
expertise/data/perspective (i.e., GPT-4 with a Google search couldn't produce it).
Present the candidate angles to the user. Wait for selection or for the user to propose a fourth angle.
Step 3 — Build the brief skeleton
Use the `recommended_format` from the priority to pick a template:
- `comparison-page` → table-driven, ≥3 alternatives, decision rubric.
- `deep-guide` → outline with H2/H3, FAQ block, glossary.
- `case-study` → setup → action → result → lessons.
- `data-report` → headline finding → methodology → data tables → caveats.
- `expert-essay` → POV statement → evidence → counter-arguments → conclusion.
- `definition-page` → canonical definition → variants → examples → related concepts.
- `how-to` → prerequisites → steps → verification → troubleshooting.
- `list-roundup` → criteria → ranked list → notes per item.
- `faq-block` → 8–15 Q&A pairs.
Step 4 — Insert REQUIRED-FILL slots
For each `required_assets` entry in the priority record, insert a clearly-marked slot in the brief. Each slot has:
> **REQUIRED-FILL · {slot_id} · {asset_type}**
>
> **What goes here**: {1-2 sentence description of what the expert
> must provide. Be specific.}
>
> **Why it matters for GEO**: {1 sentence — what this real input does
> for citation-worthiness, e.g., "AI engines cite primary data 3.2× more
> than rephrased data." (cite Princeton KDD 2024 finding.)}
>
> **Bad fill (rejected)**: {example of what NOT to write — usually a
> generic placeholder or AI-paraphrased text.}
>
> **Good fill (accepted)**: {example showing the level of specificity
> required.}
>
> **(Expert: replace this entire block with your content. Do not delete
> the slot_id — 05-production reads it to verify the slot is filled.)**Slot ids: `data-1`, `quote-1`, `case-1`, etc. — stable, sequential per type.
Step 5 — Mandatory GEO elements
Every brief must include scaffolding for these (Princeton KDD 2024 shows they boost AI citation rate):
1. **Statistics block** — at least 2 quantitative claims (REQUIRED-FILL slots if not already in brand_context). 2. **Quotation block** — at least 1 direct quote from a named expert (REQUIRED-FILL slot). 3. **Citation block** — list of 5–10 external authoritative sources the piece will cite. Pre-populate from brand_context Layer 2 `citation_sources` where relevant; mark new ones as REQUIRED-FILL. 4. **FAQ block** — 5–8 Q&A pairs derived from `real_user_questions`.
Step 6 — Voice-match notes
Pull `voice_samples` from brand_context. Add a "Voice notes" section at the top of the brief instructing the writer (05-production or human) to match: tone attributes, sentence length range, jargon level, first-person vs third-person.
Step 7 — Write the brief and meta
Brief MD layout:
# Brief — <priority.query>
> Priority id: <id>
> Generated: <ISO ts>
> Format: <recommended_format>
> Status: awaiting-expert-fill
## Angle
<chosen angle, one paragraph>
## Voice notes
<bullet list>
## Outline
<H2/H3 structure with REQUIRED-FILL slots inline>
## Mandatory GEO elements
### Statistics
<slots>
### Quotations
<slots>
### Citations
<pre-populated + slots>
### FAQ
<slots derived from real_user_questions>
## Distribution targets
<from priority.recommended_format + intent — pre-suggested>
## Sign-off checklist (for expert)
- [ ] All REQUIRED-FILL slots replaced
- [ ] Angle still feels right after filling
- [ ] Statistics have sources or methodology notes
- [ ] Quote
Read more
description: For one priority from content_priorities.json, generate a content brief with explicit slots for the human expert (founder/domain specialist) to fill with real cases, real data, and real opinions. This is the human-in-loop checkpoint — the moat that prevents the entire workflow from collapsing into "AI writing more AI-readable AI slop." Outputs briefs/<priority-id>.md. Use after 03-gap; consumed by 05-production ONLY after the expert has filled the marked slots. argument-hint: "<client-folder, e.g. clients/acme>"
04 · Content Brief — Human-in-Loop Checkpoint
This is the most important command in the pipeline. Without it, the system collapses into the same generic AI-content-mill that has saturated the GEO commodity layer. With it, the system produces content AI engines actually cite — because it contains things AI can't auto-generate.
**The principle**: the pipeline builds the scaffold; humans fill the soul. This command outputs scaffold with explicit, named, schema-tight blank spaces. Until those blanks are filled, 05-production refuses to run.
---
Inputs
- `clients/<slug>/brand_context.json`
- `clients/<slug>/content_priorities.json`
- A specific `priority_id` (passed by user or auto-picked: highest unbriefed).
Output
- `clients/<slug>/briefs/<priority-id>.md` — human-readable brief with
REQUIRED-FILL slots clearly marked.
- `clients/<slug>/briefs/<priority-id>.meta.json` — machine-readable
metadata: which slots are filled, by whom, when.
- `clients/<slug>/briefs/<priority-id>.html` — interactive fill-form for
the client/expert (rendered by the `geo-review-html` skill; this is the artifact the reviewer actually opens, not the `.md`).
---
Procedure
Step 1 — Load context
jq --arg id "<priority-id>" '.priorities[] | select(.id==$id)' \ clients/<slug>/content_priorities.json
Pull the priority record. Cross-reference brand_context for the relevant ICP, voice samples, and competitor positioning.
Step 2 — Choose the angle
Generate 2–3 candidate angles for the priority. An angle is a one-sentence statement of the unique thesis the piece will defend. Bad angle: "Best CRM for small business." Good angle: "Why bookkeepers (not sales teams) should own CRM choice in firms under 20 people, based on our 200-firm dataset."
The angle MUST satisfy:
- Aligns with `core_differentiator` and `competitive_moat` from brand_context.
- Targets the priority's `intent` directly.
- Cannot be written without the brand's specific
expertise/data/perspective (i.e., GPT-4 with a Google search couldn't produce it).
Present the candidate angles to the user. Wait for selection or for the user to propose a fourth angle.
Step 3 — Build the brief skeleton
Use the `recommended_format` from the priority to pick a template:
- `comparison-page` → table-driven, ≥3 alternatives, decision rubric.
- `deep-guide` → outline with H2/H3, FAQ block, glossary.
- `case-study` → setup → action → result → lessons.
- `data-report` → headline finding → methodology → data tables → caveats.
- `expert-essay` → POV statement → evidence → counter-arguments → conclusion.
- `definition-page` → canonical definition → variants → examples → related concepts.
- `how-to` → prerequisites → steps → verification → troubleshooting.
- `list-roundup` → criteria → ranked list → notes per item.
- `faq-block` → 8–15 Q&A pairs.
Step 4 — Insert REQUIRED-FILL slots
For each `required_assets` entry in the priority record, insert a clearly-marked slot in the brief. Each slot has:
> **REQUIRED-FILL · {slot_id} · {asset_type}**
>
> **What goes here**: {1-2 sentence description of what the expert
> must provide. Be specific.}
>
> **Why it matters for GEO**: {1 sentence — what this real input does
> for citation-worthiness, e.g., "AI engines cite primary data 3.2× more
> than rephrased data." (cite Princeton KDD 2024 finding.)}
>
> **Bad fill (rejected)**: {example of what NOT to write — usually a
> generic placeholder or AI-paraphrased text.}
>
> **Good fill (accepted)**: {example showing the level of specificity
> required.}
>
> **(Expert: replace this entire block with your content. Do not delete
> the slot_id — 05-production reads it to verify the slot is filled.)**Slot ids: `data-1`, `quote-1`, `case-1`, etc. — stable, sequential per type.
Step 5 — Mandatory GEO elements
Every brief must include scaffolding for these (Princeton KDD 2024 shows they boost AI citation rate):
1. **Statistics block** — at least 2 quantitative claims (REQUIRED-FILL slots if not already in brand_context). 2. **Quotation block** — at least 1 direct quote from a named expert (REQUIRED-FILL slot). 3. **Citation block** — list of 5–10 external authoritative sources the piece will cite. Pre-populate from brand_context Layer 2 `citation_sources` where relevant; mark new ones as REQUIRED-FILL. 4. **FAQ block** — 5–8 Q&A pairs derived from `real_user_questions`.
Step 6 — Voice-match notes
Pull `voice_samples` from brand_context. Add a "Voice notes" section at the top of the brief instructing the writer (05-production or human) to match: tone attributes, sentence length range, jargon level, first-person vs third-person.
Step 7 — Write the brief and meta
Brief MD layout:
# Brief — <priority.query> > Priority id: <id> > Generated: <ISO ts> > Format: <recommended_format> > Status: awaiting-expert-fill ## Angle <chosen angle, one paragraph> ## Voice notes <bullet list> ## Outline <H2/H3 structure with REQUIRED-FILL slots inline> ## Mandatory GEO elements ### Statistics <slots> ### Quotations <slots> ### Citations <pre-populated + slots> ### FAQ <slots derived from real_user_questions> ## Distribution targets <from priority.recommended_format + intent — pre-suggested> ## Sign-off checklist (for expert) - [ ] All REQUIRED-FILL slots replaced - [ ] Angle still feels right after filling - [ ] Statistics have sources or methodology notes - [ ] Quote
GEO 领域 AI 员工开源方案 · Open-source GEO AI-employee solution (MIT). GEO Skills package + curated lists of agents and office CLIs that make up the AI-employee stack.
Other commands on recomby-geo.
- /01-intake
Build the GEO brand context for a client by ingesting provided materials (PDF/DOCX/PPTX/XLSX, URLs, raw notes) and conducting structured AI-perception + competitor + community research. Writes brand_context.json validated against schemas/brand_context.schema.json. Use when
Open command - /02-audit
Run a Claude-native visibility audit. For each query in brand_context.target_queries, ask Claude to answer the query as a real user would (using WebSearch + WebFetch), then record whether the client brand is mentioned, at what position, and which URLs were cited. Outputs
Open command - /03-gap
Translate the visibility baseline + brand context into a ranked list of content actions that should move the needle. Identifies absent queries, contested queries, and competitor-displacement opportunities. Outputs content_priorities.json validated against schema. Use after
Open command - /05-production
Convert an expert-filled brief into a publishable draft. Applies Princeton KDD 2024 GEO techniques (statistics, quotations, citations, authoritative language) to maximize AI citation likelihood. Refuses to run on briefs that haven't been filled by the expert. Outputs
Open command - /06-distribution
For a published-ready draft, generate JSON-LD schema markup, internal linking suggestions, third-party distribution targets, and llms.txt block. Outputs distribution/<id>.json and distribution/<id>.publish-bundle.md. Use after 05-production; consumed by 07-reaudit (records
Open command - /07-reaudit
Re-run 02-audit, diff against the previous baseline, attribute movement to specific content/distribution actions. Outputs reaudit/round-N.json validated against attribution_diff.schema.json. This is the closing-of- loop artifact that proves (or disproves) what's actually
Open command

