aeo-optimize
Skill13 starsChanged 6 months agoMITView on GitHub
Turn an AEO visibility baseline into a concrete content work queue. Reads the latest aeo-evidence-v1 file from aeo-data/, optionally reads aeo-report output and fetched page content, then produces a prioritized Markdown task list. Each task is evidence-backed: it cites the prompt_id, the metric driving the recommendation (mention rate, citation rate, position, decay, cannibalization, hub-page opportunity), and concrete next steps (refresh URL X, create page A vs B, add JSON-LD type Z, surface entity Y). SKILL.md-only — the agent reasons over the methodology in references/ and applies it to the user's data. No script, no API calls. Use when a user wants to: turn baseline data into action, decide what content to refresh or create next, plan an AEO sprint, build a backlog from a visibility report, or close the gap between "what's broken" and "what should I do about it".
In this repository22 other files it gives its agents.
- aeo-ai-overview-simulatorSkill
- aeo-analytics-freeSkill
- aeo-baselineSkill
- aeo-cannibalization-detectorSkill
- aeo-citation-gap-finderSkill
- aeo-competitor-monitorSkill
- aeo-content-freeSkill
- aeo-entity-extractorSkill
- aeo-freshness-decay-trackerSkill
- aeo-grounding-query-mapperSkill
- aeo-initSkill
- aeo-multi-prompt-strategySkill
- aeo-pack-ai-toolsSkill
- aeo-pack-b2b-saasSkill
- aeo-pack-local-servicesSkill
- aeo-prompt-frequency-analyzerSkill
- aeo-prompt-question-finderSkill
- aeo-prompt-research-freeSkill
- aeo-reportSkill
- aeo-schemaSkill
- aeo-source-authority-profilerSkill
- aeo-trackSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 5 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
Optionally fetch one or more brand URLs: when a recommendation involves a specific page (use web_fetch).
- Distinctive: line 94
Every recommendation includes: the prompt_id driving it, the metric/evidence backing it, the specific action, the rough effort estimate, …
- Distinctive: line 98
Read references/action-playbooks.md for the full mapping.
- Distinctive: line 120
Every recommendation must cite evidence: If you can't point to a specific prompt + metric, the recommendation is vibes.
- Very specific: line 128
If aeo-data/ is empty or missing, recommend running aeo-baseline first — do not invent recommendations from prior knowledge.
- Distinctive: line 129
If only one evidence file exists, you can still recommend based on snapshot data, but flag that decay and trend signals are unavailable.
- Distinctive: line 130
If multiple brand URLs are cited for the same prompt, consider cannibalization before recommending a refresh — fix the duplicate problem …
- Very specific: line 131
When fetching brand URLs for context, respect rate limits.
- Very specific: line 132
Default output: print the work queue to chat.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AEO Optimize
Source: github.com/psyduckler/aeo-skills Part of: AEO Skills Suite (v2 Core) Reads:
aeo-data/*.json(evidence) + optionalaeo-reports/*.mdWrites: A Markdown work queue (printed to chat or saved to file)
The action layer of the AEO loop. aeo-baseline measures, aeo-report analyzes, aeo-optimize recommends.
How this skill works
This is a SKILL.md-only skill — there is no script to run. The agent reads the methodology in this file plus the references in references/, then applies that methodology to the user's actual data.
The agent should:
- Locate the latest evidence file. Sort
aeo-data/*.jsonby run timestamp and load the latest. - Optionally read the latest aeo-report output at
aeo-reports/*.mdfor pre-computed trend signals. - Optionally fetch one or more brand URLs when a recommendation involves a specific page (use
web_fetch). - Apply the playbooks in
references/action-playbooks.mdto map gaps in the data to concrete actions. - Output a prioritized Markdown work queue with the structure shown below.
Output format
# AEO Action Plan — <brand>
Generated from `aeo-data/<latest-evidence-file>` covering prompts: <list>.
## Quick wins (high impact, low effort)
### 1. Refresh `<url>` with entity "<entity>"
**Evidence:** Mentioned in 14/20 Gemini responses for prompt `<prompt_id>` but missing from your page (`citation_rate = 60%, position avg #4.2`).
**Action:** Add a section that names "<entity>" and explains how it relates to <topic>. Aim for 2–3 sentences of natural mention.
**Effort:** ~30 min
**Expected gain:** Citation rate from 60% → 75–80% based on the recurring retrieval set.
### 2. Add JSON-LD `<schema-type>` to `<url>`
**Evidence:** All cited competitor pages on prompt `<prompt_id>` include `<schema-type>` markup; your page does not.
**Action:** Use [aeo-schema](../aeo-schema/) to generate the JSON-LD block.
**Effort:** ~15 min
**Expected gain:** Improves structural signals for citation.
## Strategic plays (higher effort, higher impact)
### 3. Create comparison page: `<You> vs <Competitor>`
**Evidence:** 8/20 Gemini runs for prompt `<prompt_id>` cited a comparison page from <competitor> (`<competitor>.com/<you>-vs-<competitor>`). You have no comparison page in your sitemap.
**Action:** Draft a 1500–2000 word vs page covering pricing, features, integrations, ideal use case.
**Effort:** ~4 hours
**Expected gain:** Entry into the recurring retrieval set for this prompt; ~15–25pp lift in citation rate over 4–8 weeks.
## Maintenance (alerts, decay)
### 4. Refresh `<url>` — citation rate decaying
**Evidence:** prompt `<prompt_id>` shows citation rate decay: 80% → 45% over the last 6 baselines (METHODOLOGY.md §4: HIGH severity).
**Action:** Audit the page for stale claims, outdated stats, missing competitive context. Update timestamps. Re-publish.
**Effort:** ~1 hour
**Expected gain:** Reverse the decay; restore to 70%+ over 2–4 weeks.
## Hub-page consolidation
### 5. Double down on `<url>` — your strongest hub
**Evidence:** This URL is cited across 4 of 6 tracked prompts (66% coverage). It is your highest-leverage page.
**Action:** Add 3–5 additional sections covering the entities and questions surfaced in `aeo-report` for those prompts. One page that wins more prompts is cheaper than five pages winning one each.
**Effort:** ~2 hours
**Expected gain:** Reinforces hub status; may pick up additional prompts.
## Cannibalization fixes
### 6. Consolidate `<url-a>` and `<url-b>`
**Evidence:** Both pages are cited for prompt `<prompt_id>` with 60%/40% share — the model can't decide which to surface. Internal competition is diluting both.
**Action:** Pick the canonical URL (the one ranking better; usually the older or more comprehensive). 301 the other. Merge unique content into the canonical.
**Effort:** ~1 hour
**Expected gain:** Concentrated citation share on one URL; cleaner signal to the model.Every recommendation includes: the prompt_id driving it, the metric/evidence backing it, the specific action, the rough effort estimate, and the expected gain. No vibes, no vague advice.
How to choose what to recommend
Read references/action-playbooks.md for the full mapping. Summary:
| Gap signal in the evidence file | Recommended action |
Brand mentioned but not cited (mention_rate > 0.5, citation_rate < 0.2) | Add/improve a brand URL that should be cited; check schema; submit to Search Console |
| Brand cited at position #5+ when competitors are at #1 | Improve content depth/freshness on the brand URL; entity coverage |
Entity in entity_universe with high frequency but not on your page | Add a section covering that entity |
Decay flagged in aeo-report | Refresh the page; update stats; add new sections; re-publish |
| Cannibalization flagged | Consolidate competing URLs; 301; canonical |
| Hub-page coverage ≥30% | Double down — add sections for adjacent prompts |
| Citation gap on comparison-intent prompt (no comparison page) | Build a <You> vs <Competitor> page |
| No JSON-LD on a cited brand page when competitors have it | Run aeo-schema |
Pairs With
- aeo-baseline — produces the evidence file this skill reads
- aeo-report — produces trend reports this skill can cross-reference
- aeo-schema — execute the "add JSON-LD" recommendations
- aeo-content-free — execute the "create new page" recommendations
Principles
- Every recommendation must cite evidence. If you can't point to a specific prompt + metric, the recommendation is vibes.
- Prioritize by leverage, not novelty. Refreshing a hub page is almost always higher-leverage than creating a new page.
- One owner per recommendation. Tasks that need cross-team coordination are weaker than tasks one person can ship.
- Effort estimates matter. "Refresh a page" is 1 hour; "build a new comparison page" is 4. Knowing this helps the user pick what fits their week.
- Be honest about uncertainty. Expected gain is a directional estimate, not a promise. At N=20 samples, Wilson 95% CI widths are ~30pp — small movements are noise.
Notes for the agent
- If
aeo-data/is empty or missing, recommend runningaeo-baselinefirst — do not invent recommendations from prior knowledge. - If only one evidence file exists, you can still recommend based on snapshot data, but flag that decay and trend signals are unavailable.
- If multiple brand URLs are cited for the same prompt, consider cannibalization before recommending a refresh — fix the duplicate problem first.
- When fetching brand URLs for context, respect rate limits. The user's
web_fetchallowance matters. - Default output: print the work queue to chat. If the user asks, save it to
aeo-reports/<timestamp>-action-plan.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

