The AEO System: get cited by AI search engines
Answer Engine Optimization (AEO) is how Mass gets your content surfaced and cited by AI search — Perplexity, Google AI Overviews, ChatGPT, Brave, and You. This guide walks the system end to end: from spinning up a blog to tracking the day a model starts quoting you.
18 min read · Updated for the current release
What AEO is (and why it's different from SEO)
AEO optimizes your content to be the answer an AI engine cites, not just a blue link a human clicks.
Classic SEO ranks pages in a list. Answer engines do something different: they read the open web, synthesize an answer, and cite a handful of sources inline. If your page isn't structured to be extracted, summarized, and trusted, it never makes the citation — no matter how it ranks in traditional search.
The Mass AEO System is built around that reality. Every blog, post, and piece of structured data it produces is shaped so that an LLM can pull a clean, attributable answer from it. The result is content that wins both worlds: it reads well for humans and is machine-extractable for answer engines.
- Answer-first structure — posts lead with a direct answer under every heading, the single biggest factor in getting quoted.
- Machine-readable signals — JSON-LD, llms.txt, and an explicit AI-crawler policy tell models exactly what you are and whether they may use you.
- Closed-loop measurement — citation polling tells you which engines actually cite you, for which prompts — so AEO stops being a guessing game.
The AEO project: prompts, competitors & the checklist
Above your blog sits a project — the strategy layer that tracks the prompts you want to win and the competitors you're measured against.
A project is where AEO strategy lives. You create one, then work a short guided checklist that takes you from zero to a running citation engine. Everything downstream — briefs, generation, audits, SERP reads, and citation polling — keys off the prompts and competitors you set here.
- 1
Track prompts
Add the real queries you want to be cited for. These target prompts are the unit of AEO — every other feature orients around them.
- 2
Add competitors
Tell the planner which brands you compete with so it can crawl and embed their pages for gap analysis.
- 3
Plan content briefs
Generate the gap-planner queue of post ideas (covered next).
- 4
Launch your first campaign
Sequence a pillar post plus satellites from a starter recipe.
Daily prompt runs
A daily cron tests your tracked prompts against a default model set on a per-prompt cadence and records the results — so your competitive picture refreshes on its own, within a credit-aware cap.
Create your blog
A blog is a publishable site under your tenant: its own name, theme, domain, branding, and analytics.
Open the AEO area of your dashboard and create a blog. Each blog is a self-contained site with its own slug, logo, favicon, hero and Open Graph defaults, default author, and social links. You can run more than one — for example a brand blog and a product blog — and one is always marked the default.
- 1
Name and describe the blog
Set the name, tagline, and description. These feed your homepage, meta tags, and the Organization JSON-LD.
- 2
Pick a theme preset
Start from a preset like Ghost or Substack, then adjust. The theme drives layout, typography, and the sidebar widget set.
- 3
Wire analytics & verification
Drop in a Meta Pixel, GA4 measurement ID, or PostHog key, plus Google/Bing site-verification — all first-class fields on the blog.
- 4
Set visibility
Toggle published and indexable when you're ready. Until then the blog stays private to your workspace.
Theme it and configure the sidebar
Themes control the look; sidebar widgets control what readers and crawlers see alongside every post.
Beyond the preset, the sidebar is fully composable. Each widget is independently toggled and ordered, so you can build anything from a minimal Substack-style rail to a rich resource hub.
- Brand & tagline — logo, name, and one-line pitch at the top of the rail.
- Navigation & topics — custom nav links plus an auto-built topic/tag index.
- Recent posts & authors — the latest articles and an author bios block.
- Newsletter & social — an opt-in capture and your social-profile links.
- RSS & rich HTML — a discoverable feed plus a free-form HTML slot for anything custom.
The gap planner: briefs & campaigns
The gap planner finds the topics your competitors cover and you don't, then turns those gaps into a queue of ready-to-write briefs.
Instead of guessing what to write, let the planner do the analysis. It embeds your existing posts and your competitors' pages, scores coverage with cosine similarity, and emits a content brief for every gap — each pre-loaded with the competitor source URLs that become citations in the finished post.
- Coverage scoring — topics you already cover well are skipped; only genuine gaps become briefs.
- Auto-approve or review — briefs land as queued or pending-approval depending on the project's auto-approve setting.
- Quota-aware — the planner respects a per-tenant monthly brief cap and stops emitting when it's hit.
- Campaigns — group a pillar post and its satellite posts into a single campaign from a starter recipe, so a topic ships as a cluster, not a one-off.
Inside the post editor
The editor is a two-pane workspace: a metadata rail on one side, a Markdown or visual body editor in the centre, and an insights drawer on the edge.
Everything you need to ship a post lives in one screen. The body editor stores Markdown as the single source of truth, so whichever surface you write in, the autosave, preview, publish, and audit paths stay identical.
- Meta pane — title, slug, meta title/description, llms summary, keywords, target-prompt selection, author, and canonical URL — each flushes on blur so structural edits commit without waiting on the body.
- Markdown or WYSIWYG — write in a raw-Markdown pane with slash-command snippets, or flip to a TipTap visual editor; your preference persists per browser.
- Honest autosave — autosave fires 30 seconds after your last keystroke (Save flushes immediately), word count and reading time recompute server-side, and every body change appends a revision row.
- Insights drawer — a slide-out rail with Preview, JSON-LD, Audit, Impact, Related, and Activity tabs so you never leave the editor to check your work.
Generate grounded, citable posts
Mass writes answer-first posts and can ground every claim in real, cited sources before it publishes.
Start from a target prompt — the actual query you want to be cited for — and Mass plans and drafts the post around it. The editor recomputes word count and reading time on every change and appends a revision row, so autosave history stays honest.
When citation grounding is on, the generator fans out a Perplexity Sonar call per target prompt before writing, harvests real source URLs, prepends them to the prompt as evidence, and persists them to the post's sources. Those sources then populate the published JSON-LD citation field. Grounding defaults on for Deep generations and is an explicit toggle for Standard.
Target prompts are the unit of AEO
Track the queries you want to win, attach them to posts, and the whole pipeline — generation, audit, SERP reads, and citation polling — orients around them.
Generation modes & cost control
Choose Standard for speed or Deep for a planned, two-pass write — and always see the credit cost before you commit.
Generation isn't a black box. Before any run, a dialog forecasts the credits due, your balance afterward, and an ETA bucket, and hard-blocks a run that won't fit your balance. You set the tone, audience, extra instructions, depth, and model on the same dialog.
- Standard vs Deep — Standard is a single pass; Deep plans an outline first, then expands it section by section for longer, better-structured posts.
- Outline approval gate — in Deep mode you can review and edit the proposed outline (hook, sections, closing) before paying for expansion.
- Citation grounding toggle — on by default for Deep, optional for Standard — grounded runs cost a little more but ship with real sources.
- Template kinds — start from a template kind (article and others) or a saved template variant whose skeleton seeds the body.
The in-editor AI assistant
A context-aware chat sits beside the post and can reason about it, audit it, read the SERP, and propose edits you apply with one click.
The assistant has your post, project, SERP snapshot, and social variants in context. It suggests improvements and can act through a small set of tools, surfacing changes as proposal cards with Apply/Discard diff previews rather than silently mutating your draft.
- run_audit (free) — runs the deterministic SEO/AEO audit and returns the score plus top failing checks.
- refresh_serp (3 credits) — refreshes the cached Google SERP snapshot for a target prompt when you need a fresh competitive read.
- read_section (free) — returns the verbatim Markdown of one H2 section so the assistant quotes instead of paraphrasing.
- Proposals — section rewrites, metadata updates, inline-image requests, and social-regen all land as Apply/Discard cards.
Audit and score before you ship
A deterministic SEO/AEO audit grades each post and tells you exactly what to fix.
The audit runs a battery of checks across title, slug, meta description, llms summary, body structure, keywords, images and alt text, canonical URL, sources, and competitive gap versus the brands you're up against. It returns a score plus the top failing checks.
A Deep LLM audit goes further, reading the live SERP structure for your target prompt and proposing concrete rewrites. The AEO chat assistant can run the audit, refresh a SERP snapshot, or read a specific section verbatim — and the one-click fix only feeds the model the checks that aren't already passing, so rewrites stay tightly scoped.
Structured data & machine signals
Every published post ships the JSON-LD and machine files that answer engines read first.
- JSON-LD — Organization, BlogPosting, and FAQPage schema generated automatically, including the citation array from your grounded sources.
- llms.txt & llms-full.txt — machine-readable summaries of your site and full content, the emerging standard for LLM ingestion.
- AI-crawler policy — per-area allow/disallow controls — including a training allow/disallow — so you decide which models may read or train on you.
- Per-post llms summary — a tight, model-facing abstract attached to each post for clean extraction.
Schedule, publish & distribute
Schedule a post and a publish cron promotes it, indexes it for semantic search, and fans it out everywhere.
Set a publish time and the post goes to a scheduled state. The publish cron picks up due posts, flips them live, builds their structured data, and runs a sequence of post-publish jobs — all without you babysitting it.
- Semantic indexing — the post is embedded the moment it goes live, so similarity-ranked Related posts and the on-site Ask widget see it immediately.
- Citation-graph reindex — internal citation edges are recomputed so your 'Cited by' relationships stay current.
- Cross-posting — the post is dispatched to all configured publishers/destinations with retry, so a transient failure doesn't drop a channel.
- Webhooks — publish events fire outbound webhooks for anything else you want to trigger.
Track citations & SERP rankings
Citation polling tells you which AI engines cite you, for which prompts, and when it started.
This is the payoff loop. With polling enabled, a cron checks your tracked prompts against the answer engines you've selected — Perplexity, Google AI Overview, Brave, and You — and records when one of them cites you. A per-blog daily cap keeps spend predictable; setting the cap to zero pauses polling without flipping the toggle off.
Results flow into a citation graph and a 'Cited by' widget so you can see your standing at a glance, alongside cached Google SERP snapshots for competitive reads. You're measuring the thing that actually matters: presence in AI answers, not just blue-link rank.
Zero to AI-citable, in order
Create a blog → theme it and set widgets → add target prompts and competitors → generate grounded posts → audit and fix → schedule → cross-post and promote → watch citations land.
Custom domains, RSS & ownership
Run the blog on your own domain with your own feed — you own the surface end to end.
Map a custom domain so the blog lives on your brand, expose an RSS feed for subscribers and aggregators, and keep verification, sitemap, and IndexNow pings handled for you. The whole site is yours: branding, policy, distribution, and the data on who's citing it.
Auto-generate social promo
One post becomes a full promo set — LinkedIn, X, Pinterest, and Facebook variants — generated for you.
Instead of rewriting your article five times by hand, the social promo generator produces platform-native variants from the published post, each tuned to the format and norms of its channel. Pair it with cross-posting and a single 'publish' becomes a coordinated, multi-channel launch.