AI Skill
seo-flow
Last updated: 2026-05-17
Top-level SEO/AEO orchestrator — the single entry point Sage and Casey use to find the right skill for any SEO task. Maps every situation to one of the 25 SEO/A
Quick Install
npx skills add seo-flow
Skill: SEO/AEO Flow — The Entry Point
The decision map. Use this skill first whenever an SEO/AEO request comes in. It tells you which of the 22 specialized skills to call.
The five-phase flow
┌─────────────┐
Idea/data │ DISCOVER │ What's worth doing?
│ │
└──────┬──────┘
│
▼
┌─────────────┐
Decision │ PRODUCE │ Build the page (or refresh existing).
│ │
└──────┬──────┘
│
▼
┌─────────────┐
Auto + skill │ AUDIT │ Auto-runs on deploy. Doesn't block, but raises tasks.
│ │
└──────┬──────┘
│
▼
┌─────────────┐
Auto deploy │ PUBLISH │ Push main → Cloud Run. Tycoon's standard pipeline.
│ │
└──────┬──────┘
│
▼
┌─────────────┐
Cron + skill │ MONITOR │ Track rank, traffic, citations. Loop back to DISCOVER.
└─────────────┘
Per-phase skill map
DISCOVER (figure out what's worth doing)
| When user says | Call this skill | Why |
|---|---|---|
| "What should we write next?" | seo-discover | Keyword opportunity scan from GSC + competitor data |
| "What queries does AI search for in our space?" | geo-query-finder | Long-tail AEO query generation per brand |
| "What are competitors ranking for that we're not?" | content-gap-analysis | Cross-competitor delta |
| "What's our current SEO baseline?" | seo-baseline | Snapshot of current standing |
| "What's been working / what hasn't?" | seo-learn | Pattern extraction from past experiments |
| "Plan our SEO/AEO strategy" | aeo-playbook | Maturity diagnosis + 90-day plan |
PRODUCE (build pages)
| When user says | Call this skill | Why |
|---|---|---|
| "Add an alternatives page for X" | seo-create | Single decision point — uses scaffold CLI |
| "Add 20 alternatives pages" | seo-create (batch mode) | Same, comma-separated slugs |
"I need a new SEO page type" (/reviews/, /integrations/, etc.) | seo-create (new template + design rules + i18n-ready schema) | Creates route + types + i18n dirs |
| "Generate 100+ pages from a data source" | programmatic-seo (chained AFTER seo-create model page validates) | Scale playbook + indexation rollout |
| "Write the actual content" | Casey's job; brief from seo-content-brief | Briefs first, then write |
| "Write a content brief for Casey" | seo-content-brief | Gives Casey a structured brief |
| "Translate alternatives to zh-CN" | seo-i18n | Batch translation pipeline |
| "Refresh stale pages" | seo-optimize (apply mode) | Diff suggestions, then apply |
| "Generate llms.txt / robots.txt / ai-plugin.json for our site" | aeo-assets | Universal AEO discovery files |
| "Set up markdown rendering for AI crawlers" | aeo-markdown-render | G2's +300% citation trick |
AUDIT (verify before/after deploy)
| When user says | Call this skill | Why |
|---|---|---|
| "Run a technical SEO audit" | seo-technical-audit | 3-tier deterministic audit |
| "General SEO audit on the site" | seo-audit | Higher-level full-site SEO checklist |
| "Is our site AI-friendly?" | aeo-audit | Tier 1+2+3 AEO health |
| "Audit this specific page" | pnpm seo:audit (CLI) + aeo-audit | Deterministic + LLM judgment |
| "Why did this page tank?" | seo-postmortem | Blameless RCA, write to lessons |
| "Schema markup check" | schema-markup | Per-page schema design |
PUBLISH (ship)
This phase is fully automated:
git push main→ Cloud Build → Cloud Run deploy- Post-deploy GHA
audit-seo.ymlrunspnpm seo:audit --all→ Lark notify if fails aeo-auditskill scheduled to run on Tier 2 sample pages weekly
seo-postmortem.
MONITOR (ongoing tracking)
| When user says | Call this skill | Why |
|---|---|---|
| "Send me the weekly SEO report" | seo-monitor | 3-week rolling trend, top gainers/decliners |
| "Track AI citations" | aeo-citation-track | 4-engine sweep, share-of-voice |
| "Run a retro on last week's experiments" | seo-retro | Friday cadence |
| "Why did X tank last month?" | seo-postmortem | Blameless investigation |
| "Log a new experiment" | seo-experiment-log | BEFORE shipping any change |
| "What did we learn this month?" | seo-learn | Pattern extraction → playbook updates |
Daily/weekly cadence (auto-fired by scheduler)
| Time | Cadence | Skill | Owner |
|---|---|---|---|
| 06:00 | Daily | data collection (GSC + GA4 + indexing) | automation |
| 10:00 | Daily | CTR repair iteration | seo-optimize propose → Sage reviews |
| Mon 09:00 | Weekly | SEO performance report | seo-monitor → Sage → Astra |
| Wed 10:00 | Weekly | AEO citation tracking | aeo-citation-track |
| Fri 16:00 | Weekly | SEO experiments retro | seo-retro |
| 1st of month | Monthly | Full technical audit | seo-technical-audit |
| 1st of month | Monthly | AEO Tier 1+2 audit | aeo-audit |
| 1st of month | Monthly | Pattern learning | seo-learn |
| Quarter start | Quarterly | Refresh AEO discovery files | aeo-assets |
| Quarter start | Quarterly | AEO Tier 3 maturity review | aeo-audit (full) + aeo-playbook |
Multi-source — supported from day 1
Every skill above is source-agnostic. The data layer (ts/src/lib/seo/sources/) abstracts the source. Currently implemented:
- ✅ GSC (search performance, indexing)
- ✅ GA4 (analytics)
- ⏳ Ahrefs (interface ready, adapter pending)
- ⏳ PostHog (interface ready, adapter pending)
- ⏳ Bing Webmaster (interface ready, adapter pending)
- ✅ ChatGPT / Claude / Perplexity / Gemini (citation engines, via
aeo-citation-track)
- Implement the relevant interface in
ts/src/lib/seo/sources/types.ts - Register in
ts/src/lib/seo/sources/index.ts - No skill changes needed — they auto-pick up the new source
i18n — supported from day 1
Every page has hreflang URLs registered in all 3 locales (en, zh-CN, ja) at creation time, even if translations are empty placeholders. Translations land asynchronously via pnpm seo:translate without touching the URL space.
To add a 4th locale (e.g., ja → ko):
- Add to
ts/src/lib/i18n/locales.tsSUPPORTED_LOCALES - Add
HREFLANG_TAGmapping ints/src/lib/i18n/hreflang.ts - (TODO:
pnpm seo:scaffold-locale koto be implemented on first use) — until then, mkdir eachdirectly-ko/ - Translations roll in over time
When NOT to invoke this skill
- User asks a single specific SEO question with a clear answer ("what's a good title length?") → answer directly, don't invoke flow.
- User is mid-flow (already in
seo-create, asking a follow-up) → stay in that skill. - Non-SEO request — flow is for SEO/AEO only.
Quick decision: which skill RIGHT NOW?
"new page" → seo-create
"new theme / new type" → seo-create (Mode 2)
"keyword research" → seo-discover
"AEO query intent" → geo-query-finder
"competitive gap" → content-gap-analysis
"set up AEO files" → aeo-assets
"AI citation tracking" → aeo-citation-track
"technical audit" → seo-technical-audit
"AEO health check" → aeo-audit
"weekly report" → seo-monitor
"why did X drop" → seo-postmortem
"plan strategy" → aeo-playbook (high-level) OR seo-flow (you're already here)
"translate" → seo-i18n
"refresh existing pages" → seo-optimize
"experiment log" → seo-experiment-log (BEFORE shipping change)
"weekly retro" → seo-retro
"monthly learn" → seo-learn
"schema for page" → schema-markup
"content brief for Casey" → seo-content-brief
"new programmatic batch (50+)" → seo-create (model page) → programmatic-seo (scale)
"generate markdown for crawlers"→ aeo-markdown-render
"baseline / first-time setup" → seo-baseline (first ever) → seo-onboard (new property)
"general site SEO audit" → seo-audit
"end-to-end autopilot" → seo-autopilot (one ID → ship → monitor)
"standing SEO rules" → seo-principles (auto-loaded; do not invoke directly)
Inventory — 25 SEO/AEO skills
| Group | Skills |
|---|---|
| Standards (auto-loaded) | seo-principles, seo-flow, aeo-playbook |
| Top-level orchestrators | seo-autopilot, aeo-playbook |
| Discover | seo-discover, geo-query-finder, content-gap-analysis, seo-baseline, seo-learn |
| Produce | seo-create, seo-content-brief, seo-i18n, programmatic-seo, schema-markup |
| AEO discovery | aeo-assets, aeo-markdown-render |
| Audit | seo-technical-audit, seo-audit, aeo-audit |
| Monitor | seo-monitor, aeo-citation-track |
| Iterate | seo-optimize, seo-experiment-log, seo-retro, seo-postmortem |