agentleFS
psyducklerpsyduckler/aeo-skills/aeo-optimize/SKILL.md

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".

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
  1. Very specific:

    Optionally fetch one or more brand URLs: when a recommendation involves a specific page (use web_fetch).

    line 36
  2. Distinctive:

    Every recommendation includes: the prompt_id driving it, the metric/evidence backing it, the specific action, the rough effort estimate, …

    line 94
  3. Distinctive:

    Read references/action-playbooks.md for the full mapping.

    line 98
  4. Distinctive:

    Every recommendation must cite evidence: If you can't point to a specific prompt + metric, the recommendation is vibes.

    line 120
  5. Very specific:

    If aeo-data/ is empty or missing, recommend running aeo-baseline first — do not invent recommendations from prior knowledge.

    line 128
  6. Distinctive:

    If only one evidence file exists, you can still recommend based on snapshot data, but flag that decay and trend signals are unavailable.

    line 129
  7. Distinctive:

    If multiple brand URLs are cited for the same prompt, consider cannibalization before recommending a refresh — fix the duplicate problem …

    line 130
  8. Very specific:

    When fetching brand URLs for context, respect rate limits.

    line 131
  9. Very specific:

    Default output: print the work queue to chat.

    line 132

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AEO Optimize

Source: github.com/psyduckler/aeo-skills Part of: AEO Skills Suite (v2 Core) Reads: aeo-data/*.json (evidence) + optional aeo-reports/*.md Writes: 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:

  1. Locate the latest evidence file. Sort aeo-data/*.json by run timestamp and load the latest.
  2. Optionally read the latest aeo-report output at aeo-reports/*.md for pre-computed trend signals.
  3. Optionally fetch one or more brand URLs when a recommendation involves a specific page (use web_fetch).
  4. Apply the playbooks in references/action-playbooks.md to map gaps in the data to concrete actions.
  5. 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 fileRecommended 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 #1Improve content depth/freshness on the brand URL; entity coverage
Entity in entity_universe with high frequency but not on your pageAdd a section covering that entity
Decay flagged in aeo-reportRefresh the page; update stats; add new sections; re-publish
Cannibalization flaggedConsolidate 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 itRun 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

  1. Every recommendation must cite evidence. If you can't point to a specific prompt + metric, the recommendation is vibes.
  2. Prioritize by leverage, not novelty. Refreshing a hub page is almost always higher-leverage than creating a new page.
  3. One owner per recommendation. Tasks that need cross-team coordination are weaker than tasks one person can ship.
  4. 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.
  5. 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 running aeo-baseline first — 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_fetch allowance matters.
  • Default output: print the work queue to chat. If the user asks, save it to aeo-reports/<timestamp>-action-plan.md.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.