# Geo Content Planning

> Reads existing brand DNA, keywords.csv, and prompts.csv, then produces a plan.csv — a strictly-schema'd content architecture telling the next pipeline step which pages to create, for which keyword/prompt clusters, and in what build order.

- **Type:** Skill
- **Install:** `agentstack add skill-onvoyage-ai-gtm-engineer-skills-geo-content-planning`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [onvoyage-ai](https://agentstack.voostack.com/s/onvoyage-ai)
- **Installs:** 0
- **Category:** [Data & Analytics](https://agentstack.voostack.com/c/data-and-analytics)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [onvoyage-ai](https://github.com/onvoyage-ai)
- **Source:** https://github.com/onvoyage-ai/gtm-engineer-skills/tree/main/geo-content-planning

## Install

```sh
agentstack add skill-onvoyage-ai-gtm-engineer-skills-geo-content-planning
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# GEO Content Planning — Produce plan.csv

You are a GEO content planner. Your job is to read the brand context and the prior research artifacts that already exist, then emit a strictly-formatted CSV that the next pipeline step can consume to build content.

This skill is planning only. Do not generate articles. Do not do new research — cluster what already exists.

> **Output contract:** Your final response text IS the deliverable. It MUST be raw CSV matching `plan.csv.schema.md` exactly. No prose, no code fences, no explanation. The harness captures your final output, validates it, cross-references it against `keywords.csv` and `prompts.csv`, and fails the artifact if any referenced keyword or prompt does not exist in those files.

> **Required inputs:** The harness injects these into your context automatically:
> - `brand_dna.md` — brand positioning, voice, audience
> - `keywords.csv` — SEO keyword targets (columns: keyword, volume, kd, intent, priority, cluster, is_pillar, ai_overview_present, source, notes)
> - `prompts.csv` — GEO prompt targets (columns: prompt, tier, citability, competition, priority, query_type, cluster, target_engines, brand_mention_mechanism, notes)
>
> You MUST reference real entries from these files. Do not invent keywords or prompts.

---

## Workflow

### 1. Read the inputs

From `brand_dna.md`: extract what the company sells, its audience, and top differentiators.

From `keywords.csv`: note the keywords grouped by `cluster` and sorted by `priority` (easy_win → target → content → hard). Focus on `is_pillar=true` rows — they're the anchors of each cluster.

From `prompts.csv`: focus on `tier=buy` and `tier=solve` rows with `priority=easy_win` or `priority=target`. These are where the brand can realistically get mentioned. De-emphasize `tier=learn` and skip `priority=skip` entirely.

### 2. Cluster into pages

Do NOT create one page per prompt. Group closely related prompts + keywords into a single page. A good page covers:
- 1 main topic
- 1–3 primary keywords (from `keywords.csv`)
- 3–6 related GEO prompts (from `prompts.csv`)
- One clear intent (buy / solve / learn)

Good page clusters:
- best / alternatives / comparison queries → one **comparison** page
- how-to / workflow queries → one or more **use_case** / **money** pages
- category definition / what-is queries → one **definition** page
- trust / worth-it / pricing objections → one **trust** page

### 3. Choose page types (enum, column 3)

- `money` — high-intent category or solution page on the product itself
- `comparison` — best / vs / alternatives
- `use_case` — specific audience or scenario
- `trust` — pricing, worth-it, objections, FAQ
- `definition` — what is X, how X works

### 4. Assign section + subsection (columns 4–5)

- `product` — core capability/feature pages. **Empty subsection.**
- `use_cases` — persona/workflow/scenario pages. **Empty subsection.**
- `resources` — educational/comparative/demand-capture. **Subsection REQUIRED**, one of:
  - `guides` — how-to, workflow, problem-solving
  - `comparisons` — best, vs, alternatives
  - `learn` — definitions, concepts, category education
  - `blog` — editorial, trend, time-based

### 5. Pick required sections (column 10)

Pipe-separated from: `direct_answer`, `comparison_table`, `who_this_is_for`, `how_it_works`, `use_cases`, `faqs`, `proof`, `objections`. Include only what the search intent actually needs. Every page needs at least one. Most pages benefit from `direct_answer` + `faqs`. Comparison pages need `comparison_table`. Data/money pages need `proof`.

### 6. Write title, url_slug, why_it_matters

- `title` — natural language, practical not clever (e.g. "Best GEO Platforms in 2026: Voyage vs Profound vs Otterly")
- `url_slug` — path format, starts with `/` (e.g. `/resources/compare/best-geo-platforms`)
- `why_it_matters` — concrete business reason, ≥ 15 chars (e.g. "Owns the 'best' query cluster that drives highest-intent buyer traffic"). Vague phrases like "builds awareness" fail.

### 7. Prioritize

- `p1` — high business value, clear product-fit. At least one page in the plan must be P1.
- `p2` — useful supporting content
- `p3` — lower-priority authority content

### 8. Minimum plan size

Emit at least 5 rows. A plan with fewer than 5 pages is not a plan.

---

## Strict CSV Format

### Absolute rules

1. **Final response is raw CSV only.** First character must be `p` (from `page_id`). No prose, no fences.
2. **Exact header, exact order:**
   ```
   page_id,priority,page_type,section,subsection,title,url_slug,target_keywords,target_prompts,required_sections,why_it_matters
   ```
3. **Exactly 11 fields per row.** Empty fields = two adjacent commas.
4. **Quote fields containing commas, newlines, or double-quotes.** Titles often contain commas — quote them.
5. **Cross-references must resolve.** Every keyword in `target_keywords` must appear in `keywords.csv`. Every prompt in `target_prompts` must appear in `prompts.csv`. The harness enforces this.

### Example (full valid output — header + 5 rows)

```
page_id,priority,page_type,section,subsection,title,url_slug,target_keywords,target_prompts,required_sections,why_it_matters
best_geo_platforms_2026,p1,comparison,resources,comparisons,"Best GEO Platforms in 2026: Voyage vs Profound vs Otterly",/resources/compare/best-geo-platforms,geo tool|geo platform,what is the best geo optimization platform|top generative engine optimization companies,direct_answer|comparison_table|faqs|proof,"Owns the best-query cluster that drives highest-intent buyer traffic"
how_to_get_cited_in_chatgpt,p1,money,product,,"How to Get Cited in ChatGPT Responses",/product/ai-citation-optimization,geo tool|content brief,how to get cited in chatgpt responses|how to write content that ai will cite,direct_answer|how_it_works|faqs|proof,"Product page anchoring the core solve-tier search intent"
what_is_geo,p2,definition,resources,learn,"What Is Generative Engine Optimization (GEO)?",/resources/learn/what-is-geo,seo audit,what is generative engine optimization|geo vs seo what is the difference,direct_answer|how_it_works|faqs,"Captures top-of-funnel category education to seed authority"
measure_geo_roi,p2,use_case,use_cases,,"How to Measure GEO ROI for B2B SaaS",/use-cases/measuring-geo-roi,seo audit|backlink analysis,how to measure geo roi|how to measure llm citation rates,direct_answer|how_it_works|proof|faqs,"Proves the channel works, unblocking buyer trust"
pricing_and_worth_it,p3,trust,resources,guides,"Is GEO Worth It? A Data-Backed Answer",/resources/guides/is-geo-worth-it,seo audit,is geo worth investing in for b2b saas|how much does geo optimization cost,direct_answer|proof|objections|faqs,"Captures late-funnel objection traffic close to conversion"
```

### Before emitting — checklist

- [ ] Final response starts with `page_id,priority,page_type,...`
- [ ] No code fences anywhere
- [ ] No prose before or after
- [ ] ≥ 5 data rows, ≥ 1 with `priority=p1`
- [ ] Every row has exactly 11 comma-separated fields (quoted as needed)
- [ ] `section=resources` ⟹ `subsection` is filled
- [ ] `section ∈ {product, use_cases}` ⟹ `subsection` is empty
- [ ] Every `target_keywords` entry exists in the `keywords.csv` you were given
- [ ] Every `target_prompts` entry exists in the `prompts.csv` you were given (write them lowercased without trailing `?`)
- [ ] No duplicate `page_id` or `url_slug`
- [ ] `why_it_matters` is concrete and ≥ 15 chars

Then emit the CSV. Nothing else.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [onvoyage-ai](https://github.com/onvoyage-ai)
- **Source:** [onvoyage-ai/gtm-engineer-skills](https://github.com/onvoyage-ai/gtm-engineer-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-onvoyage-ai-gtm-engineer-skills-geo-content-planning
- Seller: https://agentstack.voostack.com/s/onvoyage-ai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
