AEO — AI Engine Optimization
Write content that LLMs cite when a human asks them a question. Different objective than SEO, different rules than craft writing.
When to use this skill
- User wants content that gets quoted by ChatGPT / Claude / Gemini
- User mentions "AEO", "AI engine", "LLM citation", "get cited", "write for AI"
- Content is for a brand, product, person, or category the customer wants to own in LLM answers
Not for:
- Essays or long-form craft writing → use
writing skill
- LinkedIn posts / launch posts → use
launch or linkedin-content
- Copy-editing existing text → use
copy-editor
Architecture
The skill is scaffolding. The product is the backend endpoint:
atris write aeo "<topic>"
↓
POST /api/business/{id}/workspaces/{ws}/aeo/draft
↓
reads entity graph from /workspace/atris/aeo/{entities,definitions,stats}.md
↓
writes draft to /workspace/atris/aeo/drafts/<slug>.md
↓
returns draft + self-score + credit cost
Entity graph lives in the customer's EC2 workspace (not agent_files, not DB). The customer's files ARE the brand's machine-readable self.
The 10 rules (enforced by the endpoint + skill self-check)
- Front-load the claim. LLMs quote sentence 1 of a paragraph. No throat-clearing.
- Name entities explicitly. "ExampleCo" not "a leading freight platform." Entity density is how LLMs disambiguate and cite.
- Canonical definition. One sentence owns
X is Y that does Z for the category. Make it liftable.
- Q&A scaffolding. H2s in question form: "What is X?" "How does X work?" — matches the prompts LLMs actually get.
- Declarative stats with sources. "$2.3B market (McKinsey 2025)" beats "a growing market." Citable atoms.
- Comparison tables. LLMs love structured data. Build one per category claim.
- Fresh dates visible. "Updated 2026-04-17" at top. LLMs weight recency.
- Counter-position. "Unlike X, Y does Z." Sharpens the entity in the model's mind.
- No hedging. "May/might/could" kills citation rate. Write assertive.
- Schema-ready. If HTML target, emit FAQPage + Article + HowTo JSON-LD.
Process
READ entity graph → DRAFT → SELF-SCORE → WRITE to workspace → (phase 2: AUDIT)
- READ — Pull
entities.md, definitions.md, stats.md from customer workspace. If missing, create skeleton files first.
- DRAFT — Generate article applying all 10 rules. Topic + target queries + entity context → article.
- SELF-SCORE — Append a
## AEO Self-Check section: each rule scored pass/fail with evidence.
- WRITE — Save to
/workspace/atris/aeo/drafts/<slug>.md.
- AUDIT (phase 2) — Run target queries against 4 LLMs, measure whether article is cited, write results to
/workspace/atris/aeo/audits/<slug>-<date>.md.
Entity graph layout (in customer workspace)
/workspace/atris/aeo/
├── entities.md # named entities (products, people, companies)
├── definitions.md # canonical "X is Y" sentences
├── stats.md # citable stats with sources
├── config.yml # target_queries, competitor_brands, target_url
├── drafts/ # AEO articles (one per slug)
└── audits/ # citation-audit results (phase 2)
Commands
# Generate a draft (credit-metered)
atris write aeo "<topic>" --workspace <name>
# Init the entity graph (writes skeleton files)
atris aeo init --workspace <name>
# View current drafts
atris ls workspace/atris/aeo/drafts --workspace <name>
Credits
| Action |
Cost |
| Draft a page |
~5–20 credits (token-metered) |
| Audit (phase 2) |
~20–50 credits |
| Monthly loop (phase 2) |
metered per run |
Rules (non-negotiable)
- Draft writes to customer workspace, never to
agent_file_memory. EC2 is the source of truth.
- Self-score section is mandatory in every draft.
- Never hedge in the body. Hedging kills citation rate.
- Never fabricate stats. If a stat is uncited, flag it in self-check.
- Entity graph skeleton auto-creates if missing — never fail on first run.
Related
- Feature:
atris/features/aeo/idea.md
- Backend:
POST /api/business/{id}/workspaces/{ws}/aeo/draft
- Sister skill:
writing (human-reader craft)
- Sister skill:
copy-editor (deslopper)
1---2name: aeo3description: AI Engine Optimization — write content engineered to get cited by ChatGPT, Claude, and Gemini. Not SEO. Triggers on: aeo, AI engine, llm citation, get cited, write for ai.4---56# AEO — AI Engine Optimization78Write content that LLMs cite when a human asks them a question. Different objective than SEO, different rules than craft writing.910## When to use this skill1112- User wants content that gets quoted by ChatGPT / Claude / Gemini13- User mentions "AEO", "AI engine", "LLM citation", "get cited", "write for AI"14- Content is for a brand, product, person, or category the customer wants to own in LLM answers1516**Not for:**17- Essays or long-form craft writing → use `writing` skill18- LinkedIn posts / launch posts → use `launch` or `linkedin-content`19- Copy-editing existing text → use `copy-editor`2021## Architecture2223The skill is scaffolding. The product is the backend endpoint:2425```26atris write aeo "<topic>"27 ↓28POST /api/business/{id}/workspaces/{ws}/aeo/draft29 ↓30reads entity graph from /workspace/atris/aeo/{entities,definitions,stats}.md31 ↓32writes draft to /workspace/atris/aeo/drafts/<slug>.md33 ↓34returns draft + self-score + credit cost35```3637Entity graph lives in the **customer's EC2 workspace** (not agent_files, not DB). The customer's files ARE the brand's machine-readable self.3839## The 10 rules (enforced by the endpoint + skill self-check)40411. **Front-load the claim.** LLMs quote sentence 1 of a paragraph. No throat-clearing.422. **Name entities explicitly.** "ExampleCo" not "a leading freight platform." Entity density is how LLMs disambiguate and cite.433. **Canonical definition.** One sentence owns `X is Y that does Z` for the category. Make it liftable.444. **Q&A scaffolding.** H2s in question form: "What is X?" "How does X work?" — matches the prompts LLMs actually get.455. **Declarative stats with sources.** "$2.3B market (McKinsey 2025)" beats "a growing market." Citable atoms.466. **Comparison tables.** LLMs love structured data. Build one per category claim.477. **Fresh dates visible.** "Updated 2026-04-17" at top. LLMs weight recency.488. **Counter-position.** "Unlike X, Y does Z." Sharpens the entity in the model's mind.499. **No hedging.** "May/might/could" kills citation rate. Write assertive.5010. **Schema-ready.** If HTML target, emit FAQPage + Article + HowTo JSON-LD.5152## Process5354```55READ entity graph → DRAFT → SELF-SCORE → WRITE to workspace → (phase 2: AUDIT)56```57581. **READ** — Pull `entities.md`, `definitions.md`, `stats.md` from customer workspace. If missing, create skeleton files first.592. **DRAFT** — Generate article applying all 10 rules. Topic + target queries + entity context → article.603. **SELF-SCORE** — Append a `## AEO Self-Check` section: each rule scored pass/fail with evidence.614. **WRITE** — Save to `/workspace/atris/aeo/drafts/<slug>.md`.625. **AUDIT** (phase 2) — Run target queries against 4 LLMs, measure whether article is cited, write results to `/workspace/atris/aeo/audits/<slug>-<date>.md`.6364## Entity graph layout (in customer workspace)6566```67/workspace/atris/aeo/68├── entities.md # named entities (products, people, companies)69├── definitions.md # canonical "X is Y" sentences70├── stats.md # citable stats with sources71├── config.yml # target_queries, competitor_brands, target_url72├── drafts/ # AEO articles (one per slug)73└── audits/ # citation-audit results (phase 2)74```7576## Commands7778```bash79# Generate a draft (credit-metered)80atris write aeo "<topic>" --workspace <name>8182# Init the entity graph (writes skeleton files)83atris aeo init --workspace <name>8485# View current drafts86atris ls workspace/atris/aeo/drafts --workspace <name>87```8889## Credits9091| Action | Cost |92|---|---|93| Draft a page | ~5–20 credits (token-metered) |94| Audit (phase 2) | ~20–50 credits |95| Monthly loop (phase 2) | metered per run |9697## Rules (non-negotiable)9899- Draft writes to **customer workspace**, never to `agent_file_memory`. EC2 is the source of truth.100- Self-score section is mandatory in every draft.101- Never hedge in the body. Hedging kills citation rate.102- Never fabricate stats. If a stat is uncited, flag it in self-check.103- Entity graph skeleton auto-creates if missing — never fail on first run.104105## Related106107- Feature: `atris/features/aeo/idea.md`108- Backend: `POST /api/business/{id}/workspaces/{ws}/aeo/draft`109- Sister skill: `writing` (human-reader craft)110- Sister skill: `copy-editor` (deslopper)