Audit or generate web content optimized for traditional search (SEO), AI generative answer engines like ChatGPT/Perplexity/Google AI Overviews (GEO), and answer engines / featured snippets / voice (AEO). Use when the user asks to improve a page's ranking or AI-citability, run an SEO/GEO/AEO audit of a URL or file, add JSON-LD schema, create an llms.txt, or write new content that is search- and LLM-friendly.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add staksoft/geo-seo-aeo-skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of web-optimization?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/staksoft-web-optimization)More formats (shields.io, HTML) on the badges page.
---
name: web-optimization
description: >-
Audit or generate web content optimized for traditional search (SEO),
AI generative answer engines like ChatGPT/Perplexity/Google AI Overviews
(GEO), and answer engines / featured snippets / voice (AEO). Use when the
user asks to improve a page's ranking or AI-citability, run an SEO/GEO/AEO
audit of a URL or file, add JSON-LD schema, create an llms.txt, or write new
content that is search- and LLM-friendly.
license: MIT
metadata:
authors: Staksoft (https://www.staksoft.com)
source: https://www.staksoft.com/insights/seo/beyond-keywords-the-definitive-guide-to-generative-engine-optimization-geo-in-2026
---
# Web Optimization (SEO · GEO · AEO)
This skill treats **SEO**, **GEO**, and **AEO** as three lenses over one shared
body of web-optimization practice. It supports two workflows: **Audit** an
existing page, and **Generate** new optimized content.
## The three lenses (what each optimizes for)
| Lens | Optimizes for | Load file |
|------|---------------|-----------|
| SEO | Google/Bing ranking (blue links) | `references/seo.md` |
| GEO | LLM synthesis (ChatGPT, Perplexity, AI Overviews) | `references/geo.md` |
| AEO | Answer engines, featured snippets, voice | `references/aeo.md` |
Shared support files:
- `references/schema.md` — JSON-LD patterns (load whenever structured data is involved).
- `references/scoring.md` — the rubric and priority weighting used by both workflows.
> **Progressive disclosure:** Do NOT read every reference up front. Read only the
> lens file(s) relevant to the request, plus `scoring.md` for audits and
> `schema.md` when structured data is in play.
## Workflow A — Audit
Use when given a **URL or a local content file** and asked to evaluate/improve it.
1. **Acquire the content.**
- URL: prefer `python scripts/audit.py <url>` for deterministic, objective
checks (returns JSON). Also fetch the rendered content to judge quality.
- Local file (`.html`/`.md`): read it directly; run `audit.py --file <path>`.
2. **Apply the three lenses.** Read `references/seo.md`, `geo.md`, `aeo.md` and
evaluate the content against each. Fold in the JSON facts from `audit.py`.
3. **Score & prioritize** using `references/scoring.md` (P0 blocking → P3 nice-to-have).
4. **Emit the report** using `assets/audit-report-template.md`: every finding =
*issue · lens · impact · concrete fix*. Lead with the prioritized action list.
## Workflow B — Generate
Use when given a **topic/brief + target keyword or user intent** and asked to
produce new content.
1. **Clarify intent** — target query, audience, and primary lens emphasis if any
(default: optimize for all three).
2. **Draft** applying all three lenses: answer-first structure (AEO), keyword/
intent coverage and clean heading hierarchy (SEO), high information density
with concrete measurable claims (GEO).
3. **Attach structured data** — pick the right JSON-LD from
`assets/schema-templates/` per `references/schema.md` (Article + FAQPage are
the common pair).
4. **Produce an llms.txt entry** from `assets/llms-txt-template.md`.
5. **Output** the content + JSON-LD + llms.txt entry + a short "why this is
optimized" rationale mapping choices back to the three lenses.
## Workflow C — Fix (interactive step-by-step)
Use when the user says **"fix [URL]"**, **"fix the issues"**, or **"apply the fixes"**
after an audit — or wants to be guided through improvements interactively.
1. **Run or recall the audit.** If an audit was just completed, use those findings.
Otherwise run Workflow A first silently, then begin fixing.
2. **Load `references/fix-playbook.md`.** It maps every finding type to the
minimum question(s) to ask and what to generate.
3. **Work P0 → P1 → P2 → P3, one fix per turn:**
- State: what you're fixing and why (one line).
- Ask: the minimum question(s) needed (often zero — derive from fetched content).
- Generate: the complete, ready-to-paste output (JSON-LD block, file content,
rewritten copy, HTML snippet, diff of tag changes).
- Confirm: "Fix N of M done — move to the next one? (or say skip / stop)"
4. **Maintain a session checklist** (✅ done / ⏭ skipped / ⬜ pending) and show
it at the top of each turn so the user always knows where they are.
5. **On "stop" or "done"**: show the full checklist summary and remind the user
of any skipped items.
> **Key principle:** Never ask the user to write anything manually. Every output
> should be copy-paste ready. If you need a number or URL you can't derive,
> ask for that one thing — then generate everything else yourself.
## Quick rules of thumb
- **Information density beats word count.** Replace hedges ("might be fast") with
measurable claims ("sub-50ms p95 latency"). LLMs cite specifics.
- **Answer the question in the first sentence**, then elaborate — this serves
snippets, voice, and LLM extraction simultaneously.
- **Structure for two readers**: a human operator and a natural-language parser.
Tables, lists, and JSON-LD help the parser without hurting the human.
- **Authority is distributed.** Off-domain mentions (GitHub, Reddit, citations)
matter for GEO trust, not just on-page factors.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!