BUILD · SITE · SEO AND AI READINESS

What crawlers and AI agents read, and who decides.

Every page carries the tags search engines expect. One governed policy says which crawlers and AI agents may read what. The site publishes plain files for machines, and a readiness report measures what they find. This page describes each one, as of October 2026.

On this pageThe mechanics
  1. The mechanics
  2. The SEO record
  3. What every page carries
  4. The bot policy
  5. The twelve files, in the screen's own words.
  6. For AI agents
  7. Ten checks, weighted to 100.
  8. Who changes what
  9. What keeps it safe
  10. Common questions

The mechanics

The SEO record

  • Each page and post has one SEO record: the title, the description, the canonical address, the sharing image, the robots line, six social fields, and "Hide from search".
  • The SEO workspace writes it, and so does the copilot, through the same governed tools. EmDash's own page editor can change the same values too, at once, as EmDash defines it.
  • When a page has no words of its own for a field, the site-wide defaults fill in.
  • "Hide from search" tells search engines not to index the page.
  • A page hidden from search is left out of the sitemaps and the agent files. Coming soon.

The bot policy

  • One governed policy decides what crawlers and AI agents may do, with three permissions set apart: training on your content, AI search, and fetching a page for a person who asked.
  • Five presets: open discovery; discoverable but not trainable; licensed AI access, where only the agents you name may enter; private and protected; and segmented by path.
  • From that one policy come /robots.txt, the robots meta tags, the X-Robots-Tag header and, when training is refused, a reservation of text-and-data-mining rights.
  • It names the crawlers it governs. Among the training crawlers: GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent and Bytespider. It also names the search and fetch agents of OpenAI, Anthropic and Perplexity, as of October 2026.
  • It says plainly that robots.txt is not security. A protected path needs real protection in front of it, and until it has some, the policy reports itself as not effective.
  • Changing it is a request to the copilot, behind its own card: "Apply this bot-access policy?", whose consequence reads "Changes what bots and AI agents may access on the live site (robots.txt + response headers)." It carries an undo.
  • While a Praxis policy is in force, the robots.txt box in EmDash's own Settings › SEO is set aside, so there is one source of truth.

The twelve files

The twelve files, in the screen's own words.

Site › SEO explains each file a Praxis site publishes for machines: what it is, who reads it, and why it matters.

/robots.txt

"the crawl policy, exactly as served". Every well-behaved crawler fetches it first.

/sitemap.xml

"the sitemap index search engines read first".

/sitemap-pages.xml

"every published page", with its last-updated time.

/sitemap-posts.xml

"every published post".

/sitemap-taxonomies.xml

"category and tag archives".

/sitemap.md

"the site map in Markdown, for AI agents".

/feed.xml

"the RSS feed of recent posts": the ten newest, with members-only bodies cut.

/llms.txt

"the AI-agent guide to this site".

/content/index.md

"the content catalog in Markdown".

/content/jsonld.json

"the schema.org description of the site's content".

/content/openapi.json

"the machine-readable description of the content API": the read-only content files above, described in the OpenAPI format.

/content/mcp.json

"the Model Context Protocol descriptor": it describes the site's resources for agents.

Which sitemaps the index lists depends on the site, and a site moved from WordPress keeps WordPress's own set of them.

For AI agents

  • /llms.txt lists published entries, up to 500, each with its Markdown copy, and leaves out what you hide from search.
  • Each of those pages and posts has a Markdown copy, at /content/pages/<slug>.md or /content/posts/<slug>.md, and /content/index.md lists them all.
  • /content/jsonld.json carries validated schema.org data for those entries, and /content/validate.json compares what was exported against the site's own facts, with its warnings.
  • Everything here is read-only, and published content only.
  • A members-only article's body is cut from these files. A members-only page's body is cut too. Coming soon.
  • Every link in these files carries the site's real address.

For developers and AI agents

The readiness score

Ten checks, weighted to 100.

The report reads the served home page and the current bot policy, and scores what a crawler or an agent would meet there.

Check WeightWhat it asks
Crawlability 15 Does the page return 200, allow indexing, name a canonical and supply robots.txt?
Policy 15 Do robots.txt and the page headers carry an AI policy?
HTML completeness 15 How much readable text is in the served page?
Extraction 15 Is there readable text and a faithful Markdown copy?
Structured data 10 Does the page contain JSON-LD?
Accessibility 10 Are there headings, labels and page landmarks?
Freshness 5 Does the page carry dates or last-updated signals?
Feeds 5 Are there a sitemap reference and RSS or Atom feed links?
Task readiness 5 Does the page offer forms and buttons for a task?
Defensive risk 5 Does the page carry an obvious prompt-injection phrase?

each check scores from 0 to 1 and contributes its weight times that score. Missing facts in the served page cap extraction at half. The report lists every cap it applied under "Caps applied".

  • Each row shows its weight, its contribution and its evidence. "Rescan" runs it again, and the report downloads as CSV or JSON.
  • It measures and explains.

Who changes what

Setting Where it livesHow it changes
A page's title, description, social card, canonical and "Hide from search" Site › SEO, and the copilot Behind a card, or as an AI draft you approve, with an undo
Site-wide defaults Site › SEO › "Site defaults & robots" Set on that tab, or drafted with "Help me fill it out"
Verification codes, the title separator, the default social image EmDash's Settings › SEO Saved on that screen; through the copilot, behind a card
Crawler and AI-agent access The bot policy Only through the copilot, behind "Apply this bot-access policy?"
Old addresses EmDash's Redirects screen Saved on that screen; through the copilot, behind a card

What keeps it safe

AI drafts you approve.

Every draft from "Fix with AI" is labelled, waits for you, and can be undone.

One policy for machines.

The robots file, the meta tags and the header all come from the same policy.

A card before crawlers are told anything new.

The policy changes only behind its own card, with an undo.

An honest warning.

The policy says when a protected path has no real protection.

Read-only doors.

The agent files are published content only, and none of them can change the site.

A measure with its evidence.

Every readiness check shows why it scored as it did.

Common questions

Can I keep AI training crawlers out and stay in search?

Yes. The preset "discoverable but not trainable" refuses training and keeps AI search and page fetches open. Ask the copilot to apply it, and the card shows the change first.

Will this improve my ranking?

It gives search engines the tags, sitemaps and structured data they expect. How they rank a page is theirs to decide.

What is llms.txt?

A plain-text guide for AI agents: what the site is, and where its readable copies live. On Praxis it lists up to 500 published entries, each with its Markdown copy.

Can an AI agent change my site through these files?

No. They are read-only, and they hold published content only.

What does the readiness score read?

Your home page as it is served, and the current bot policy.

What happens to my Yoast or Rank Math settings when you move my site?

Each item's title, description, canonical, robots and social fields arrive as its native SEO record. Yoast, Rank Math, SEOPress and AIOSEO are read.