#703 by GitHub stars
onvoyage-ai/gtm-engineer-skills
Claude Code skill for improving website AEO (AI Engine Optimization) and GEO (Generative Engine Optimization) scores — 16 foundational checks, 6 intelligence dimensions, framework-specific fixes
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
audit-content/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
audit-website-aeo/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
build-backlinks/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → cfdb9edd8410
No earlier version was observed for comparison.
build-resource-pages/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → cfdb9edd8410
No earlier version was observed for comparison.
create-geo-charts/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
geo-content-planning/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → cfdb9edd8410
No earlier version was observed for comparison.
geo-content-research/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
improve-aeo-geo/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
reddit-opportunity-research/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → cfdb9edd8410
No earlier version was observed for comparison.
research-brand/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → cfdb9edd8410
No earlier version was observed for comparison.
research-keywords/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → cfdb9edd8410
No earlier version was observed for comparison.
write-seo-geo-content/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cfdb9edd8410 → cfdb9edd8410
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cfdb9edd8410
No earlier version was observed for comparison.
Heat
5.7- Star growth, last 7 daysAhead of 83% of tracked repositories
- Star growth, last 24 hoursAhead of 73% of tracked repositories
- Rank movement, last 7 daysAhead of 29% of tracked repositories
- Commits, last 30 daysAhead of 54% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- audit-content
audit-content - audit-website-aeo
audit-website-aeo - build-backlinks
build-backlinks - build-resource-pages
build-resource-pages - create-geo-charts
create-geo-charts - geo-content-planning
geo-content-planning - geo-content-research
geo-content-research - improve-aeo-geo
improve-aeo-geo - reddit-opportunity-research
reddit-opportunity-research - research-brand
research-brand - research-keywords
research-keywords - write-seo-geo-content
write-seo-geo-content
How it works
audit-content
When your agent uses it
Verifies truthfulness, accuracy, and link integrity of content before publishing. Catches fabricated statistics, dead URLs, misattributed sources, and company claims that contradict the brand DNA.
What it loads into context
Frontmatter
44 tokensAlways available to the agent
SKILL.md
1,826 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When To Use This Skill
- Workflow
- Output Format
- Rules
- What This Skill Does NOT Do
Files
SKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytesSKILL.mdcore7,646 bytes
Read SKILL.md
# Audit Content
You are a content auditor. Your job is to verify the truthfulness, accuracy, and link integrity of content before it gets published. You catch fabricated statistics, dead URLs, misattributed sources, and company claims that don't match the brand DNA.
## When To Use This Skill
Use after writing content and before publishing. Run it on:
- Individual articles
- Batches of articles in a content folder
- Any content that cites external sources, statistics, or company claims
## Workflow
### Step 1: Load contextView the complete source on GitHubaudit-website-aeo
When your agent uses it
Audits a live website for AI-engine discoverability (AEO/GEO). Crawls the site, runs 16 deterministic checks plus a 6-dimension content evaluation, and produces a scored report (A-F) with prioritized fixes. Use to get a baseline before improve-aeo-geo, or to measure progress after changes.
What it loads into context
Frontmatter
77 tokensAlways available to the agent
SKILL.md
3,097 tokensWhen the skill is activated
Reference documents
2,107 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- The 16 deterministic checks
- Report Format
- Rules
- Research References
Scripts executed separately
scripts/aeo-audit.mjs
Files
README.mddoc3,857 bytesSKILL.mdcore11,702 bytesSKILL.mdcore11,702 bytesexamples/anthropic-com-audit.mddoc4,322 bytesscripts/aeo-audit.mjsruns45,498 bytes
Read SKILL.md
# Audit Website AEO/GEO Skill
You audit a **live website** the way an AI agent would — crawling its pages, parsing structure, and judging whether the content is citation-worthy for ChatGPT, Claude, Perplexity, and Google AI Overviews.
The audit has two halves:
- **Foundational (50%)** — 16 deterministic pass/fail checks run by a script. Reproducible, no judgment.
- **Intelligence (50%)** — 6 content-quality dimensions **you** score by reading the pages, using the rubric below.
Final score = `0.5 × foundational + 0.5 × intelligence`, mapped to an A-F grade.
This skill produces a **diagnosis**. To then fix a codebase, hand off to the **`improve-aeo-geo`** skill.
---View the complete source on GitHubbuild-backlinks
When your agent uses it
Finds free backlink and brand mention opportunities across Hacker News, Quora, GitHub, directories, and niche communities. Outputs a prioritized action plan with draft responses ready to post. Use after brand research and content creation to amplify reach and AI engine citations.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
2,244 tokensWhen the skill is activated
Reference documents
216 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why this matters for GEO
- Inputs
- Process
- Output Format
- Rules
Files
README.mddoc891 bytesSKILL.mdcore9,317 bytes
Read SKILL.md
You are a brand presence strategist who finds free, high-impact opportunities to get a brand mentioned and linked across the web. Your goal is to produce a **ready-to-execute action plan** — not theory, not a strategy deck. Every item in your output should be something the user can do today.
## Why this matters for GEO
AI engines (ChatGPT, Claude, Perplexity, Gemini) cite brands that appear across diverse, authoritative sources. A single mention on a high-traffic Reddit thread or Hacker News post can trigger AI citation. Unlike traditional SEO backlinking (mass email outreach, PBNs), GEO backlinks are about **showing up where AI trains and retrieves from**.
High-value sources for AI citation:
- Hacker News (heavily indexed by AI engines)
- Quora (frequently cited in AI answers)
- Wikipedia (highest authority, strictest rules)
- GitHub (discussions, awesome-lists, READMEs)
- Stack Overflow / Stack Exchange (technical authority)
- Industry-specific forums and communities
- Free directories (G2, Capterra, Product Hunt, niche directories)View the complete source on GitHubbuild-resource-pages
When your agent uses it
Takes existing content markdown files and builds production-final resource center pages on client websites using their existing tech stack and design system. Output is live-ready — no review pass, no placeholder content, no prototype styling. Implements hub pages, section listings, article pages, and cross-linking for Blog, Guides, Learn, and Comparisons sections.
What it loads into context
Frontmatter
75 tokensAlways available to the agent
SKILL.md
3,061 tokensWhen the skill is activated
Reference documents
388 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Production Quality Standards
- Design Principles
- Technical Checklist
- Rules
Files
README.mddoc1,837 bytesSKILL.mdcore14,297 bytes
Read SKILL.md
# Build Resource Pages
You are a senior frontend engineer building resource centers for professional websites. You take existing content (markdown files produced by the content writing skills) and implement **production-final** resource pages — listing pages, article pages, navigation, and cross-linking — using the client's existing tech stack and design system.
**Your output ships directly to production.** Every page must be indistinguishable from the rest of the site. No rough edges. No placeholder text. No prototype styling. No "we'll polish this later." The pages you build are the pages visitors see.
Your output is code, not content. The content already exists.
---
## Workflow
### Phase 1: Discover the Stack
View the complete source on GitHubcreate-geo-charts
When your agent uses it
Creates data visualizations (charts, graphs, tables) optimized for AI engine parsing and citation. Produces inline SVG/HTML with text summaries, data tables, and JSON-LD so AI engines can quote the data.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
4,266 tokensWhen the skill is activated
Reference documents
539 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Step 9: Visual QA — Render and Verify Before Delivery
- Integration with Other Skills
- Complete Output Template
- Quality Checklist
Files
README.mddoc2,218 bytesSKILL.mdcore17,409 bytesSKILL.mdcore17,409 bytesSKILL.mdcore17,409 bytesexamples/ai-referral-traffic-share-v2.htmlasset7,167 bytesexamples/ai-referral-traffic-share.csvasset268 bytesexamples/ai-referral-traffic-share.htmlasset8,692 bytesexamples/ai-toy-brand-comparison.htmlasset10,833 bytesexamples/ai-toy-market-growth.htmlasset7,347 bytesexamples/ai-toy-parent-concerns.htmlasset7,055 bytesexamples/content-freshness-citations-preview.pngasset389,511 bytesexamples/content-freshness-citations-v2.htmlasset7,522 bytesexamples/content-freshness-citations.csvasset151 bytesexamples/content-freshness-citations.htmlasset10,047 bytesexamples/geo-strategy-impact-v2.htmlasset8,268 bytesexamples/geo-strategy-impact.csvasset291 bytesexamples/geo-strategy-impact.htmlasset10,455 bytesexamples/scooter-brand-market-share.htmlasset7,542 bytesexamples/scooter-market-growth.htmlasset8,801 bytesexamples/scooter-specs-comparison.htmlasset10,846 bytes
Read SKILL.md
# Create GEO/SEO Charts & Data Visualizations
You are an expert at creating data visualizations optimized for Generative Engine Optimization (GEO) and SEO. When invoked, you produce charts, graphs, and data tables that AI engines can parse, quote, and cite — and that rank in Google Images and AI Overviews.
Core insight: AI engines cite text, not pixels. Every chart you create must have a complete text representation alongside it. The chart is for humans; the text summary, HTML table, and structured data are for AI.
## Workflow
### Step 1: Understand the Data
Ask the user for:
1. **Data source** — raw data, research findings, or a synthesis request
2. **Chart purpose** — what point should the chart make?
3. **Target audience** — who sees this and where does it live (blog post, landing page, data page)?View the complete source on GitHubgeo-content-planning
When your agent uses it
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.
What it loads into context
Frontmatter
56 tokensAlways available to the agent
SKILL.md
1,965 tokensWhen the skill is activated
Reference documents
1,125 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Strict CSV Format
Files
SKILL.mdcore7,857 bytesplan.csv.schema.mddoc4,253 bytes
Read SKILL.md
# 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.View the complete source on GitHubgeo-content-research
When your agent uses it
Researches what prompts people ask AI engines (ChatGPT, Gemini, Perplexity, Claude) about a product category and produces a prompts.csv artifact — a prioritized, strictly-schema'd list of the queries where the brand should be cited. Feeds the monitor workflow.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
6,662 tokensWhen the skill is activated
Reference documents
2,061 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How This Skill Works
- Phase 1: Product Intelligence Gathering
- Phase 2: AI Prompt Research
- Phase 3: Emit prompts.csv (STRICT FORMAT)
- Phase 4: Content Blueprint
- Phase 5: Content Generation
- Phase 6: Authority Infiltration Plan
- Verification: Test Your GEO Standing
- Quick Reference: What AI Engines Weight Most
Files
README.mddoc4,836 bytesSKILL.mdcore27,448 bytesSKILL.mdcore27,448 bytesSKILL.mdcore27,448 bytesSKILL.mdcore27,448 bytesSKILL.mdcore27,448 bytesSKILL.mdcore27,448 bytesprompts.csv.schema.mddoc3,528 bytes
Read SKILL.md
# GEO Content Research — Produce prompts.csv
You are a Generative Engine Optimization (GEO) strategist. Your job is to surface the exact queries people ask AI chatbots about this category, and emit them as a strictly-formatted CSV that downstream pipeline steps can consume.
The core insight: AI engines have no paid ranking. You can't buy a ChatGPT recommendation. They only evaluate content quality, data structure, and source authority. Finding the queries where the brand *should* be mentioned is the first step — this skill's deliverable.
> **Output contract:** Your final response text IS the deliverable. It MUST be raw CSV matching `prompts.csv.schema.md` exactly. No prose, no code fences, no explanation around the CSV. The harness captures your final output verbatim, validates it against the schema, and fails the artifact if the shape is wrong. See Phase 3 for the exact format.
> **Scope in autonomous mode:** Phases 1–3 only. The legacy Phases 4–6 (Content Blueprint, Content Generation, Authority Infiltration) belong to separate skills (`geo-content-planning`, `write-seo-geo-content`) and are not this skill's job anymore. Do the research, emit the CSV, stop.
---
## How This Skill Works
View the complete source on GitHubimprove-aeo-geo
When your agent uses it
Audits a website codebase and makes code changes so AI engines (ChatGPT, Claude, Perplexity, Google AI Overviews) can better discover, parse, quote, and cite the site. Covers structured data, content structure, technical signals, and freshness.
What it loads into context
Frontmatter
64 tokensAlways available to the agent
SKILL.md
5,565 tokensWhen the skill is activated
Reference documents
2,869 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Scoring Model
- Priority 1: Blockers (fix these first)
- Priority 2: High-Impact Structure
- Priority 3: Content Quality
- Priority 4: GEO Content Optimization
- Framework-Specific Patterns
- Verification Checklist
- Research References
Files
README.mddoc5,154 bytesSKILL.mdcore20,799 bytesSKILL.mdcore20,799 bytesSKILL.mdcore20,799 bytesexamples/nextjs-blog-before-after.mddoc3,388 bytesexamples/wordpress-business-before-after.mddoc1,768 bytes
Read SKILL.md
# Improve Website AEO/GEO Skill
You are an expert at AI Engine Optimization (AEO) and Generative Engine Optimization (GEO). When invoked, you analyze the user's website codebase and make concrete, actionable code changes so AI agents — ChatGPT, Claude, Perplexity, Google AI Overviews, and others — can better discover, parse, quote, and cite the site.
The web is shifting from human-first to AI-first discovery. AI agents don't browse like humans. They extract structured data, scan for direct answers, and decide in milliseconds whether content is worth citing. This skill makes websites visible to that new audience.
## Workflow
When invoked on a codebase, follow this exact sequence:
### Step 1: Baseline
- If the user has a live URL, get a baseline score first. Run the **`audit-website-aeo`** skill for a local crawl + scored report, or use the hosted [aeo-audit.sh](https://aeo-audit.sh). If an `aeo_audit_report.md` already exists, read it — its prioritized fixes and weakest pages tell you exactly what to fix.
- If no URL is available, proceed with a code-level audit.
View the complete source on GitHubreddit-opportunity-research
When your agent uses it
Researches Reddit using a brand's Brand DNA to find promotable pain-point discussions, target subreddits, and real user search language. Produces a prioritized Reddit opportunity list for content seeding, helpful replies, and prompt research inspiration.
What it loads into context
Frontmatter
58 tokensAlways available to the agent
SKILL.md
1,918 tokensWhen the skill is activated
Reference documents
241 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Goal
- Research Rules
- Process
- Output
- What Good Output Looks Like
- Final Guidance to the User
Files
README.mddoc1,080 bytesSKILL.mdcore8,518 bytes
Read SKILL.md
# Reddit Opportunity Research
You are a Reddit growth researcher. Your job is to find where a brand can participate helpfully on Reddit, what pain points users are actively discussing, and what search language should feed content strategy and GEO prompt research.
This skill is for **promotion through useful participation**, not spam. Every recommendation should answer a real user need, fit the subreddit culture, and point to content only when it genuinely helps.
## Inputs
- `brand_dna.md` (required) — from `research-brand`
- `keyword_research.md` (optional) — to expand search terms
- `geo_prompt_targets.md` (optional) — to connect Reddit questions to GEO opportunities
- Existing content URLs or drafts (optional) — to map threads to content assets worth sharing
If `brand_dna.md` does not exist, tell the user to run `research-brand` first.View the complete source on GitHubresearch-brand
When your agent uses it
Researches a company from its URL and produces a Brand DNA file covering positioning, audience, competitors, voice, and messaging. Use when starting work with a new brand or customer.
What it loads into context
Frontmatter
43 tokensAlways available to the agent
SKILL.md
1,304 tokensWhen the skill is activated
Reference documents
352 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
- Rules
Files
README.mddoc1,368 bytesSKILL.mdcore5,397 bytes
Read SKILL.md
# Research Brand DNA
You are a brand intelligence researcher. Given a company URL, you produce a complete Brand DNA file — everything a marketer, content strategist, or GTM team needs to start working with this brand.
**Input:** A URL (and optionally a one-liner about the company).
**Output:** A `brand_dna.md` file saved to the user's project directory.
---
## Process
### 1. Crawl the website
Fetch and read these pages (skip any that 404):View the complete source on GitHubresearch-keywords
When your agent uses it
Finds high-value SEO and GEO keywords using web search, AI analysis, and optionally paid tools like Ahrefs or Semrush. Produces a validated keywords.csv file with a fixed schema for downstream pipeline consumption.
What it loads into context
Frontmatter
49 tokensAlways available to the agent
SKILL.md
3,846 tokensWhen the skill is activated
Reference documents
2,567 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How This Skill Works
- Phase 1: Brand Intelligence
- Phase 2: Keyword Discovery
- Phase 3: Validation & Pruning
- Phase 4: Analysis & Clustering
- Phase 5: Deliverable — keywords.csv (STRICT FORMAT)
- Rules
Scripts executed separately
scripts/keyword-explorer.mjsscripts/serp-analyzer.mjs
Files
README.mddoc7,397 bytesSKILL.mdcore15,996 byteskeywords.csv.schema.mddoc2,773 bytesscripts/keyword-explorer.mjsruns18,231 bytesscripts/serp-analyzer.mjsruns13,785 bytes
Read SKILL.md
# Research SEO/GEO Keywords
You are an expert keyword researcher who finds high-value keywords for both traditional SEO and Generative Engine Optimization (GEO). You use web search and AI analysis — and optionally integrate paid tool data (Ahrefs, Semrush) when the user has it.
Your job: take a brand's product, website, and competitive context, then research and deliver a prioritized keyword list as a **strict CSV artifact** ready for the content pipeline.
> **Output contract:** Your final response text IS the deliverable. It MUST be raw CSV matching `keywords.csv.schema.md` exactly. No prose, no code fences, no explanation around the CSV. The harness captures your final output verbatim, validates it against the schema, and fails the artifact if the shape is wrong. See Phase 5 for the exact format.
**Critical rule: SEO target keywords must be 1-3 words.** Longer phrases (4+ words) go in the Blog Topics section. Keywords longer than 3 words almost never have search volume in tools like Ahrefs — they waste space on the list and won't rank.
---
## How This Skill Works
View the complete source on GitHubwrite-seo-geo-content
When your agent uses it
Writes product-led content pages optimized for both search engines and AI engine citations. Produces markdown files with frontmatter, following page-type frameworks (comparison, guide, use case, learn, trust) with verified sources and no fabricated data.
What it loads into context
Frontmatter
58 tokensAlways available to the agent
SKILL.md
4,279 tokensWhen the skill is activated
Reference documents
702 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Modes
- Pre-Writing Research Protocol
- GEO Writing Requirements
- Page-Type Frameworks
- Core Content Blocks
- SEO Standards
- E-E-A-T Signals
- Quality Standards
- GEO Checklist
- Verification Checklist
- Output Format
Files
README.mddoc3,051 bytesSKILL.mdcore18,403 bytesSKILL.mdcore18,403 bytesSKILL.mdcore18,403 bytesSKILL.mdcore18,403 bytes
Read SKILL.md
# Write SEO + GEO Content
You are an expert SEO and GEO content writer specializing in product-led pages that rank in search engines and get cited by AI engines. When invoked, you operate in one of two modes. Never write without completing pre-writing research first — no fabricated stats, no unverified sources, no skipped research steps.
## Modes
### Planning Mode
Use when the user needs article topics or strategy defined before writing.
1. Gather: product/service details, target audience, value proposition
2. Research keywords if not provided (search volume, intent, competition)
3. Review the user's website to understand their offering and voice
4. If available, read the user's `content_architecture.md` or content plan first
5. Propose 3-5 content topics with: title angle, page type, primary keyword, target GEO prompt, search intent, and why it fits the productView the complete source on GitHubSkills included
- audit-content
- audit-website-aeo
- build-backlinks
- build-resource-pages
- create-geo-charts
- geo-content-planning
- geo-content-research
- improve-aeo-geo
- reddit-opportunity-research
- research-brand
- research-keywords
- write-seo-geo-content
Repository facts
- License
- MIT
- Created
- Feb 26, 2026
- Last pushed
- Oct 11, 2026
- Forks
- 58
- Open issues
- 14
- Project activity
- Active
Rank over the last 12 weeks
Now #703 · best #486 · down 98 in 30 days
- #692 on Nov 2
- #695 on Nov 3
- #697 on Nov 4
- #702 on Nov 5
- #700 on Nov 6
- #703 since Nov 7
57 earlier periods
- #473 on Aug 2
- #479 from Aug 8 to Aug 9
- #500 on Aug 10
- #498 on Aug 11
- #494 on Aug 12
- #500 on Aug 13
- #480 on Aug 15
- #489 on Aug 16
- #494 on Aug 17
- #508 on Aug 18
- #501 on Aug 19
- #504 on Aug 20
- #502 on Aug 21
- #486 on Aug 22
- #508 on Aug 23
- #509 on Aug 24
- #515 on Aug 25
- #509 on Aug 26
- #520 on Aug 27
- #520 on Aug 31
- #523 on Sep 1
- #519 on Sep 2
- #527 on Sep 3
- #519 from Sep 6 to Sep 7
- #538 on Sep 8
- #527 on Sep 9
- #523 on Sep 12
- #541 on Sep 14
- #532 on Sep 15
- #543 on Sep 16
- #528 on Sep 19
- #544 on Sep 21
- #552 on Sep 22
- #573 on Sep 30
- #566 on Oct 2
- #549 on Oct 3
- #555 on Oct 4
- #564 on Oct 5
- #578 on Oct 6
- #605 on Oct 8
- #595 on Oct 9
- #579 on Oct 11
- #593 on Oct 13
- #605 on Oct 14
- #606 on Oct 15
- #600 on Oct 17
- #592 on Oct 18
- #616 on Oct 19
- #624 on Oct 20
- #629 on Oct 21
- #610 on Oct 23
- #675 on Oct 25
- #680 on Oct 28
- #684 on Oct 29
- #685 on Oct 30
- #690 on Oct 31
- #691 on Nov 1
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 20 notes
audit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedaudit-website-aeo/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcreate-geo-charts/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcreate-geo-charts/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeo-content-research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeo-content-research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeo-content-research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeo-content-research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeo-content-research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedimprove-aeo-geo/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedimprove-aeo-geo/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedwrite-seo-geo-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedwrite-seo-geo-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedwrite-seo-geo-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 211 network referencesin 25 files: improve-aeo-geo/SKILL.md:16 improve-aeo-geo/examples/nextjs-blog-before-after.md:42 create-geo-charts/examples/geo-strategy-impact.html:37 and 22 more
- No hidden or obfuscated text
- No instruction overrides
- 3 executable scriptsin 3 files: audit-website-aeo/scripts/aeo-audit.mjs:1 research-keywords/scripts/keyword-explorer.mjs:1 research-keywords/scripts/serp-analyzer.mjs:1
- 5 references to secretsin 3 files: research-keywords/scripts/keyword-explorer.mjs:35 research-keywords/scripts/serp-analyzer.mjs:28 research-keywords/README.md:176
- No requests to vote in Hot
Show all 219 signals by file
audit-content/SKILL.md
- Network accessline 29
| Category | What to extract | Example | |---|---|---| | **External URL** | Any hyperlink to an external source | `[PCMA research](https://www.pcma.org/...)` | - Network accessline 30
|---|---|---| | **External URL** | Any hyperlink to an external source | `[PCMA research](https://www.pcma.org/...)` | | **Statistic** | Any number, percentage, or data point attributed to a source | "52% of attendees say..." | - Network accessline 31
| **External URL** | Any hyperlink to an external source | `[PCMA research](https://www.pcma.org/...)` |
audit-website-aeo/README.md
- Network accessline 23
Or: > "Audit my website for AEO" > "Check if AI engines can cite https://example.com" - Network accessline 24
> "Audit my website for AEO" > "Check if AI engines can cite https://example.com" > "Run an AEO/GEO audit on [URL]" - Network accessline 25
> "Check if AI engines can cite https://example.com" - Network accessline 62
node scripts/aeo-audit.mjs https://example.com --max-pages=20 --out=aeo-audit.json
audit-website-aeo/SKILL.md
- Network accessline 224
| Claim | Source | |---|---| | Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28%; in-text citations = +115% for lower-ranked sites | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv. - Network accessline 225
|---|---| | Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28%; in-text citations = +115% for lower-ranked sites | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv.org/abs/2311.09735) - Network accessline 226
| Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28%; in-text citations = +115% for lower-ranked sites | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv.org/abs/2311.09735)) |
audit-website-aeo/examples/anthropic-com-audit.md
- Network accessline 87
| Score | URL | |---|---| | 73% | https://www.anthropic.com/ | - Network accessline 88
|---|---| | 73% | https://www.anthropic.com/ | | 80% | https://www.anthropic.com/about-anthropic-interviewer | - Network accessline 89
| 73% | https://www.anthropic.com/ | - Network accessline 90
| 80% | https://www.anthropic.com/about-anthropic-interviewer | - Network accessline 91
| 86% | https://www.anthropic.com/candidate-ai-guidance |
audit-website-aeo/scripts/aeo-audit.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 14
* node aeo-audit.mjs <url> [--max-pages=10] [--out=aeo-audit-report.json] [--json] * * node aeo-audit.mjs https://example.com - Network accessline 15
* * node aeo-audit.mjs https://example.com * node aeo-audit.mjs example.com --max-pages=20 --out=workspace/acme/aeo-audit.json - Network accessline 16
* node aeo-audit.mjs https://example.com - Network accessline 17
* node aeo-audit.mjs example.com --max-pages=20 --out=workspace/acme/aeo-audit.json * node aeo-audit.mjs https://example.com --json # print JSON to stdout * - Network accessline 18
* node aeo-audit.mjs https://example.com --json # print JSON to stdout - Network accessline 45
const FETCH_TIMEOUT_MS = 12_000; const CRAWL_CONCURRENCY = 5; const UA = "Mozilla/5.0 (compatible; AEOAuditBot/1.0; +https://github.com/onvoyage-ai/gtm-engineer-skills)"; - Network accessline 47
const UA = "Mozilla/5.0 (compatible; AEOAuditBot/1.0; +https://github.com/onvoyage-ai/gtm-engineer-skills)"; - Network accessline 155
function normalizeUrl(raw) { const withProtocol = /^https?:\/\//i.test(raw) ? raw : `https://${raw}`; - Network accessline 156
const withProtocol = /^https?:\/\//i.test(raw) ? raw : `https://${raw}`; - Network accessline 198
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS); try { const res = await fetch(url, { - Network accessline 199
try { const res = await fetch(url, { headers: { "User-Agent": UA }, - Network accessline 200
const res = await fetch(url, {
create-geo-charts/SKILL.md
- Network accessline 228
{ "@context": "https://schema.org", - Network accessline 229
"@context": "https://schema.org", - Network accessline 244
}, "datePublished": "[ISO date]", "license": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 245
"datePublished": "[ISO date]", "license": "https://creativecommons.org/licenses/by/4.0/", "image": { - Network accessline 246
"license": "https://creativecommons.org/licenses/by/4.0/",
create-geo-charts/examples/ai-referral-traffic-share-v2.html
- Network accessline 106
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 260" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 107
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 260" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 145
<div class="source-line"> Source: Conductor, "AEO/GEO Benchmarks Report," November 2025 (<a href="https://www.conductor.com/academy/aeo-geo-benchmarks-report/">conductor.com</a>). 13,700 domains, 3.3B sessions. AI referral traffic categ - Network accessline 146
Source: Conductor, "AEO/GEO Benchmarks Report," November 2025 (<a href="https://www.conductor.com/academy/aeo-geo-benchmarks-report/">conductor.com</a>). 13,700 domains, 3.3B sessions. AI referral traffic categorized by source domain.
create-geo-charts/examples/ai-referral-traffic-share.html
- Network accessline 36
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 37
{ "@context": "https://schema.org", "@type": "Dataset", - Network accessline 38
"@context": "https://schema.org", - Network accessline 44
{ "@type": "PropertyValue", "name": "Referral Traffic Share", "unitText": "%" } ], "creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, - Network accessline 45
], "creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, "datePublished": "2026-03-05", - Network accessline 46
"creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, - Network accessline 47
"datePublished": "2026-03-05", "license": "https://creativecommons.org/licenses/by/4.0/", "isBasedOn": "https://www.conductor.com/academy/aeo-geo-benchmarks-report/", - Network accessline 48
"license": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 49
"isBasedOn": "https://www.conductor.com/academy/aeo-geo-benchmarks-report/", - Network accessline 68
<!-- 3. CHART — Donut chart --> <figure> <svg role="img" aria-labelledby="chart2-title chart2-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 69
<figure> <svg role="img" aria-labelledby="chart2-title chart2-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> <title id="chart2-title">AI Engine Referral Traffic Share</title> - Network accessline 70
<svg role="img" aria-labelledby="chart2-title chart2-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 133
<figcaption> Source: Conductor, "AEO/GEO Benchmarks Report," November 2025 (<a href="https://www.conductor.com/academy/aeo-geo-benchmarks-report/">conductor.com</a>). 13,700 domains, 3.3 billion sessions analyzed. Methodology: AI refe - Network accessline 134
Source: Conductor, "AEO/GEO Benchmarks Report," November 2025 (<a href="https://www.conductor.com/academy/aeo-geo-benchmarks-report/">conductor.com</a>). 13,700 domains, 3.3 billion sessions analyzed. Methodology: AI referral traffic catego
create-geo-charts/examples/ai-toy-brand-comparison.html
- Network accessline 36
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 37
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
create-geo-charts/examples/ai-toy-market-growth.html
- Network accessline 33
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 34
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
create-geo-charts/examples/ai-toy-parent-concerns.html
- Network accessline 33
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 280" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 34
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 280" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
create-geo-charts/examples/content-freshness-citations-v2.html
- Network accessline 106
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 360" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 107
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 360" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 151
<div class="source-line"> Source: SE Ranking, November 2025 (<a href="https://seranking.com/blog/how-to-optimize-for-ai-mode/">seranking.com</a>). 2.3M pages, 295K domains. Supplemented by Ahrefs, 2025 (<a href="https://ahrefs.com/blog/ - Network accessline 152
Source: SE Ranking, November 2025 (<a href="https://seranking.com/blog/how-to-optimize-for-ai-mode/">seranking.com</a>). 2.3M pages, 295K domains. Supplemented by Ahrefs, 2025 (<a href="https://ahrefs.com/blog/do-ai-assistants-prefer-to-cit
create-geo-charts/examples/content-freshness-citations.html
- Network accessline 34
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 35
{ "@context": "https://schema.org", "@type": "Dataset", - Network accessline 36
"@context": "https://schema.org", - Network accessline 43
{ "@type": "PropertyValue", "name": "Content Age", "unitText": "months" } ], "creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, - Network accessline 44
], "creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, "datePublished": "2026-03-05", - Network accessline 45
"creator": { "@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" }, - Network accessline 46
"datePublished": "2026-03-05", "license": "https://creativecommons.org/licenses/by/4.0/", "isBasedOn": "https://seranking.com/blog/how-to-optimize-for-ai-mode/", - Network accessline 47
"license": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 48
"isBasedOn": "https://seranking.com/blog/how-to-optimize-for-ai-mode/", - Network accessline 67
<!-- 3. CHART — Vertical bar chart --> <figure> <svg role="img" aria-labelledby="chart3-title chart3-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 68
<figure> <svg role="img" aria-labelledby="chart3-title chart3-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> <title id="chart3-title">Content Freshness vs Average AI Citations</titl - Network accessline 69
<svg role="img" aria-labelledby="chart3-title chart3-desc" viewBox="0 0 720 400" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 128
<figcaption> Source: SE Ranking, "How to Optimize for AI Mode," November 2025 (<a href="https://seranking.com/blog/how-to-optimize-for-ai-mode/">seranking.com</a>). 2.3M pages, 295K domains. Supplemented by Ahrefs, 2025 (<a href="http - Network accessline 129
Source: SE Ranking, "How to Optimize for AI Mode," November 2025 (<a href="https://seranking.com/blog/how-to-optimize-for-ai-mode/">seranking.com</a>). 2.3M pages, 295K domains. Supplemented by Ahrefs, 2025 (<a href="https://ahrefs.com/blog
create-geo-charts/examples/geo-strategy-impact-v2.html
- Network accessline 109
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 110
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 154
<div class="source-line"> Source: Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (<a href="https://arxiv.org/abs/2311.09735">arXiv</a>). 10,000 queries across 9 generative engines. Each strategy applied independently t - Network accessline 155
Source: Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (<a href="https://arxiv.org/abs/2311.09735">arXiv</a>). 10,000 queries across 9 generative engines. Each strategy applied independently to baseline content; visibility
create-geo-charts/examples/geo-strategy-impact.html
- Network accessline 37
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 38
{ "@context": "https://schema.org", "@type": "Dataset", - Network accessline 39
"@context": "https://schema.org", - Network accessline 48
"@type": "Organization", "name": "Voyage", "url": "https://onvoyage.ai" - Network accessline 49
"name": "Voyage", "url": "https://onvoyage.ai" }, - Network accessline 50
"url": "https://onvoyage.ai" - Network accessline 51
}, "datePublished": "2026-03-05", "license": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 52
"datePublished": "2026-03-05", "license": "https://creativecommons.org/licenses/by/4.0/", "isBasedOn": "https://arxiv.org/abs/2311.09735", - Network accessline 53
"license": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 54
"isBasedOn": "https://arxiv.org/abs/2311.09735", - Network accessline 73
<!-- 3. CHART --> <figure> <svg role="img" aria-labelledby="chart1-title chart1-desc" viewBox="0 0 720 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 74
<figure> <svg role="img" aria-labelledby="chart1-title chart1-desc" viewBox="0 0 720 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> <title id="chart1-title">GEO Strategy Visibility Impact</title> - Network accessline 75
<svg role="img" aria-labelledby="chart1-title chart1-desc" viewBox="0 0 720 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 137
<!-- 4. SOURCE & METHODOLOGY --> <figcaption> Source: Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (<a href="https://arxiv.org/abs/2311.09735">arXiv</a>). 10,000 queries tested across 9 generative engines. Meth - Network accessline 138
<figcaption> Source: Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (<a href="https://arxiv.org/abs/2311.09735">arXiv</a>). 10,000 queries tested across 9 generative engines. Methodology: Each strategy applied indepe - Network accessline 139
Source: Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (<a href="https://arxiv.org/abs/2311.09735">arXiv</a>). 10,000 queries tested across 9 generative engines. Methodology: Each strategy applied independently to baseline
create-geo-charts/examples/scooter-brand-market-share.html
- Network accessline 33
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 34
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
create-geo-charts/examples/scooter-market-growth.html
- Network accessline 33
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 34
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
create-geo-charts/examples/scooter-specs-comparison.html
- Network accessline 34
<div class="chart-area"> <svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"> - Network accessline 35
<svg role="img" aria-labelledby="chart-title chart-desc" viewBox="0 0 680 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
geo-content-research/SKILL.md
- Network accessline 419
{ "@context": "https://schema.org", - Network accessline 420
"@context": "https://schema.org", - Network accessline 434
{ "@context": "https://schema.org", - Network accessline 435
"@context": "https://schema.org", - Network accessline 449
{ "@context": "https://schema.org", - Network accessline 450
"@context": "https://schema.org", - Network accessline 461
{ "@context": "https://schema.org", - Network accessline 462
"@context": "https://schema.org",
improve-aeo-geo/README.md
- Network accessline 3
[](https://aeo-audit.sh/) - Network accessline 11
**Check your score at [aeo-audit.sh](https://aeo-audit.sh/)** — then use this skill to improve it. - Network accessline 34
2. Audit your code against 16 foundational checks and 6 content quality dimensions 3. Make targeted code changes in priority order 4. Recommend verifying your score at [aeo-audit.sh](https://aeo-audit.sh/) - Network accessline 36
4. Recommend verifying your score at [aeo-audit.sh](https://aeo-audit.sh/) - Network accessline 80
| Finding | Source | |---|---| | Adding quotations = **+41% AI visibility** | [GEO Paper, KDD 2024](https://arxiv.org/abs/2311.09735) — Princeton, Georgia Tech, IIT Delhi, Allen AI | - Network accessline 81
|---|---| | Adding quotations = **+41% AI visibility** | [GEO Paper, KDD 2024](https://arxiv.org/abs/2311.09735) — Princeton, Georgia Tech, IIT Delhi, Allen AI | | Adding statistics = **+33% AI visibility** | Same peer-reviewed paper | - Network accessline 82
| Adding quotations = **+41% AI visibility** | [GEO Paper, KDD 2024](https://arxiv.org/abs/2311.09735) — Princeton, Georgia Tech, IIT Delhi, Allen AI | - Network accessline 83
| Adding statistics = **+33% AI visibility** | Same peer-reviewed paper | | Citing sources = **+28% AI visibility** | Same paper; up to **+115% for smaller sites** | | **44.2%** of ChatGPT citations come from first 30% of content | [Growth - Network accessline 84
| Citing sources = **+28% AI visibility** | Same paper; up to **+115% for smaller sites** | | **44.2%** of ChatGPT citations come from first 30% of content | [Growth Memo, 2026](https://www.growth-memo.com/p/the-science-of-how-ai-pays-atten - Network accessline 85
| **44.2%** of ChatGPT citations come from first 30% of content | [Growth Memo, 2026](https://www.growth-memo.com/p/the-science-of-how-ai-pays-attention) — 1.2M AI answers analyzed | - Network accessline 86
| Articles 2,900+ words = **5.1 citations** vs. 3.2 for <800 words | [SE Ranking, 2025](https://seranking.com/blog/how-to-optimize-for-ai-mode/) — 2.3M pages studied | - Network accessline 87
| Pages with FAQ sections = **4.9 citations** vs. 4.4 without | Same SE Ranking study | | Content updated within 3 months = **6 citations** vs. 3.9 for 2+ years | Same SE Ranking study | | AI cites content **25.7% fresher** than traditional - Network accessline 88
| Content updated within 3 months = **6 citations** vs. 3.9 for 2+ years | Same SE Ranking study | | AI cites content **25.7% fresher** than traditional search | [Ahrefs, 2025](https://ahrefs.com/blog/do-ai-assistants-prefer-to-cite-fresh-c - Network accessline 89
| AI cites content **25.7% fresher** than traditional search | [Ahrefs, 2025](https://ahrefs.com/blog/do-ai-assistants-prefer-to-cite-fresh-content/) — 17M citations | - Network accessline 90
| ChatGPT drives **87.4%** of AI referral traffic | [Conductor, 2025](https://www.conductor.com/academy/aeo-geo-benchmarks-report/) — 13.7K domains |
improve-aeo-geo/SKILL.md
- Network accessline 16
### Step 1: Baseline - If the user has a live URL, get a baseline score first. Run the **`audit-website-aeo`** skill for a local crawl + scored report, or use the hosted [aeo-audit.sh](https://aeo-audit.sh). If an `aeo_audit_report.md` alre - Network accessline 17
- If the user has a live URL, get a baseline score first. Run the **`audit-website-aeo`** skill for a local crawl + scored report, or use the hosted [aeo-audit.sh](https://aeo-audit.sh). If an `aeo_audit_report.md` already exists, read it — - Network accessline 33
### Step 5: Verify - Re-run the audit (`audit-website-aeo` skill, or [aeo-audit.sh](https://aeo-audit.sh)) and compare against the Step 1 baseline to confirm the score improved - Network accessline 34
- Re-run the audit (`audit-website-aeo` skill, or [aeo-audit.sh](https://aeo-audit.sh)) and compare against the Step 1 baseline to confirm the score improved - Network accessline 89
Sitemap: https://YOURDOMAIN.com/sitemap.xml - Network accessline 140
## Documentation - [Getting Started](https://yourdomain.com/docs/getting-started) - Network accessline 141
- [Getting Started](https://yourdomain.com/docs/getting-started) - Network accessline 142
- [API Reference](https://yourdomain.com/docs/api) - Network accessline 144
## Key Pages - [About](https://yourdomain.com/about) - Network accessline 145
- [About](https://yourdomain.com/about) - Network accessline 146
- [Pricing](https://yourdomain.com/pricing) - Network accessline 147
- [Blog](https://yourdomain.com/blog) - Network accessline 149
## Policies - [Terms of Service](https://yourdomain.com/terms) - Network accessline 150
- [Terms of Service](https://yourdomain.com/terms) - Network accessline 151
- [Privacy Policy](https://yourdomain.com/privacy) - Network accessline 299
title: 'Page Title | Brand', description: 'Descriptive meta description of 120-160 characters.', alternates: { canonical: 'https://yourdomain.com/page' }, - Network accessline 300
description: 'Descriptive meta description of 120-160 characters.', alternates: { canonical: 'https://yourdomain.com/page' }, openGraph: { - Network accessline 301
alternates: { canonical: 'https://yourdomain.com/page' }, - Network accessline 303
title: 'Page Title', description: 'Social sharing description.', url: 'https://yourdomain.com/page', - Network accessline 304
description: 'Social sharing description.', url: 'https://yourdomain.com/page', images: [{ url: 'https://yourdomain.com/og-image.jpg' }], - Network accessline 305
url: 'https://yourdomain.com/page', - Network accessline 306
images: [{ url: 'https://yourdomain.com/og-image.jpg' }], - Network accessline 314
export default function Page() { const jsonLd = { '@context': 'https://schema.org', - Network accessline 315
const jsonLd = { '@context': 'https://schema.org', '@type': 'Article', - Network accessline 316
'@context': 'https://schema.org', - Network accessline 347
{ userAgent: 'CCBot', allow: '/' }, ], sitemap: 'https://yourdomain.com/sitemap.xml', - Network accessline 348
], sitemap: 'https://yourdomain.com/sitemap.xml', } - Network accessline 349
sitemap: 'https://yourdomain.com/sitemap.xml', - Network accessline 357
export default function sitemap(): MetadataRoute.Sitemap { return [ { url: 'https://yourdomain.com', lastModified: new Date(), changeFrequency: 'weekly', priority: 1 }, - Network accessline 358
return [ { url: 'https://yourdomain.com', lastModified: new Date(), changeFrequency: 'weekly', priority: 1 }, { url: 'https://yourdomain.com/about', lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 }, - Network accessline 359
{ url: 'https://yourdomain.com', lastModified: new Date(), changeFrequency: 'weekly', priority: 1 }, - Network accessline 360
{ url: 'https://yourdomain.com/about', lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 }, - Network accessline 373
ogTitle: 'Page Title', ogDescription: 'Social sharing description.', ogImage: 'https://yourdomain.com/og-image.jpg', - Network accessline 374
ogDescription: 'Social sharing description.', ogImage: 'https://yourdomain.com/og-image.jpg', }) - Network accessline 375
ogImage: 'https://yourdomain.com/og-image.jpg', - Network accessline 376
}) useHead({ link: [{ rel: 'canonical', href: 'https://yourdomain.com/page' }], - Network accessline 377
useHead({ link: [{ rel: 'canonical', href: 'https://yourdomain.com/page' }], }) - Network accessline 378
link: [{ rel: 'canonical', href: 'https://yourdomain.com/page' }], - Network accessline 402
<title>Page Title | Brand</title> <meta name="description" content="Descriptive meta description." /> <link rel="canonical" href="https://yourdomain.com/page" /> - Network accessline 403
<meta name="description" content="Descriptive meta description." /> <link rel="canonical" href="https://yourdomain.com/page" /> <meta property="og:title" content="Page Title" /> - Network accessline 404
<link rel="canonical" href="https://yourdomain.com/page" /> - Network accessline 412
<svelte:head> {@html `<script type="application/ld+json">${JSON.stringify({ "@context": "https://schema.org", - Network accessline 413
{@html `<script type="application/ld+json">${JSON.stringify({ "@context": "https://schema.org", "@type": "Article", - Network accessline 414
"@context": "https://schema.org", - Network accessline 447
if (is_singular('post')) { $schema = [ '@context' => 'https://schema.org', - Network accessline 448
$schema = [ '@context' => 'https://schema.org', '@type' => 'Article', - Network accessline 449
'@context' => 'https://schema.org', - Network accessline 482
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 483
{ "@context": "https://schema.org", "@type": "Article", - Network accessline 484
"@context": "https://schema.org", - Network accessline 510
{ property: 'og:title', content: 'Page Title' }, { property: 'og:description', content: 'Social sharing description.' }, { tagName: 'link', rel: 'canonical', href: 'https://yourdomain.com/page' }, - Network accessline 511
{ property: 'og:description', content: 'Social sharing description.' }, { tagName: 'link', rel: 'canonical', href: 'https://yourdomain.com/page' }, ] - Network accessline 512
{ tagName: 'link', rel: 'canonical', href: 'https://yourdomain.com/page' }, - Network accessline 540
**Target**: 80+ AEO score (B+ grade or higher). Validate at [aeo-audit.sh](https://aeo-audit.sh). - Network accessline 548
| Claim | Source | |---|---| | Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28% | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv.org/abs/2311.09735)) | - Network accessline 549
|---|---| | Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28% | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv.org/abs/2311.09735)) | | Lower-ranked sites gain up to +115% from GEO - Network accessline 550
| Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28% | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 ([arXiv](https://arxiv.org/abs/2311.09735)) |
improve-aeo-geo/examples/nextjs-blog-before-after.md
- Network accessline 42
+ Allow: / + + Sitemap: https://myblog.com/sitemap.xml - Network accessline 44
+ Sitemap: https://myblog.com/sitemap.xml - Network accessline 55
dangerouslySetInnerHTML={{ __html: JSON.stringify({ '@context': 'https://schema.org', - Network accessline 56
__html: JSON.stringify({ '@context': 'https://schema.org', '@type': 'Organization', - Network accessline 57
'@context': 'https://schema.org', - Network accessline 58
'@type': 'Organization', name: 'My Blog', url: 'https://myblog.com', - Network accessline 59
name: 'My Blog', url: 'https://myblog.com', logo: 'https://myblog.com/logo.png', - Network accessline 60
url: 'https://myblog.com', - Network accessline 61
logo: 'https://myblog.com/logo.png', - Network accessline 70
const jsonLd = { '@context': 'https://schema.org', - Network accessline 71
'@context': 'https://schema.org', - Network accessline 88
title: `${post.title} | My Blog`, description: post.excerpt, // 120-160 chars alternates: { canonical: `https://myblog.com/blog/${params.slug}` }, - Network accessline 89
description: post.excerpt, // 120-160 chars alternates: { canonical: `https://myblog.com/blog/${params.slug}` }, openGraph: { - Network accessline 90
alternates: { canonical: `https://myblog.com/blog/${params.slug}` }, - Network accessline 109
## Popular Posts - [Building with Next.js App Router](https://myblog.com/blog/nextjs-app-router) - Network accessline 110
- [Building with Next.js App Router](https://myblog.com/blog/nextjs-app-router) - Network accessline 111
- [TypeScript Best Practices 2025](https://myblog.com/blog/typescript-2025) - Network accessline 113
## About - [About the Author](https://myblog.com/about) - Network accessline 114
- [About the Author](https://myblog.com/about)
research-brand/README.md
research-keywords/README.md
- Access to secretsline 176
[Credential-related source omitted]
research-keywords/scripts/keyword-explorer.mjs
- Executable scriptline 1
#!/usr/bin/env node - Access to secretsline 35
[Credential-related source omitted] - Network accessline 203
hl, }); const url = `https://www.google.com/complete/search?${params}`; - Network accessline 205
const url = `https://www.google.com/complete/search?${params}`; - Access to secretsline 281
[Credential-related source omitted] - Network accessline 282
...params, }); const url = `https://serpapi.com/search.json?${allParams}`; - Network accessline 283
}); const url = `https://serpapi.com/search.json?${allParams}`; return fetchJSON(url); - Network accessline 284
const url = `https://serpapi.com/search.json?${allParams}`;
research-keywords/scripts/serp-analyzer.mjs
- Executable scriptline 1
#!/usr/bin/env node - Access to secretsline 28
[Credential-related source omitted] - Network accessline 76
if (!SERPAPI_KEY) { console.error("Error: SERPAPI_KEY environment variable is required."); console.error("Get a free key at https://serpapi.com (100 searches/month)."); - Network accessline 77
console.error("Error: SERPAPI_KEY environment variable is required."); console.error("Get a free key at https://serpapi.com (100 searches/month)."); process.exit(1); - Network accessline 78
console.error("Get a free key at https://serpapi.com (100 searches/month)."); - Access to secretsline 137
[Credential-related source omitted] - Network accessline 145
const data = await fetchJSON(`https://serpapi.com/search.json?${params}`);
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
No combined signals at this commit.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md audit-content/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md audit-content/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md audit-content/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md audit-content/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md audit-content/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md audit-content/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/onvoyage-ai-gtm-engineer-skills/)