Most Substack writers have an SEO problem they do not know about. Every post they publish builds authority for substack.com, not for their own domain. The traffic, the indexed pages, the inbound links.
All of it accrues to a platform they do not own.
The AEO strategy behind promptledproduct.com is designed to fix that: republish content on the owned domain, make every page machine-readable for AI crawlers, and build a topic authority signal that travels with the brand, not the platform.
Here is exactly how it works.
The Core Problem: Who Gets the Citation Credit
When an AI answer engine like Perplexity, Claude, or ChatGPT synthesizes an answer about prompt-led product development, it needs to cite a source. The source it cites is the page it indexed, not the writer behind it.
If your content lives only on Substack, the indexed page is promptledproduct.substack.com. The citation might say “according to Substack” or cite the Substack domain rather than your personal brand. Your expertise is there, but the attribution is blurry.
The solution is to own the indexed surface. When the same content is published on promptledproduct.com with canonical URLs, structured data, and proper metadata, that domain becomes the authoritative source. AI crawlers that encounter the content on your domain can correctly attribute it to Elena Calvillo, Prompt-Led Product, the Vault, and the specific pattern library you have built.
The /posts Directory
The most important AEO surface on promptledproduct.com is the /posts directory. It is not a blog. It does not host the full content of any post. It is a mirror directory that lists every Substack post with a title, category, problem statement preview, and a direct link back to the original post on Substack.
Every Substack publication that has a source_url in the vault_items table appears on /posts. The directory is sorted by published_at descending, searchable by keyword, and filterable by category chip. Each card links out to Substack with a “Read on Substack →” link.
The purpose is domain-level indexing, not content duplication. When a crawler visits promptledproduct.com/posts, it sees a structured, topic-rich directory of every piece of content Elena has published.
It can associate that content with the PLP domain, build topic authority for the keywords in those titles and summaries, and attribute future answers about those topics to promptledproduct.com as the canonical source.
The Substack post stays on Substack for distribution. The directory entry on PLP owns the SEO attribution.
The Sync Pipeline
Getting Substack content into the vault_items table runs through two systems.
The sync-substack edge function runs as a scheduled cron job. It pulls new posts from the Substack publication, checks against existing vault_items rows to avoid duplicates, and inserts new entries in new_only mode, capped at 5 items per run. Each run logs its result to sync_logs with the number of posts found, added, and any error messages.
For AI classification, import-html-post handles richer processing. When HTML content is pasted in from an export, it strips the markup, classifies the content by category, extracts the problem statement and key metadata, and inserts the item as a draft using Gemini 2.5 Pro. Items tagged is_manual_refined = true have their source fields protected from future sync overwrites.
The slug is generated automatically by a database trigger and is immutable once set. Once a vault item has a canonical slug, it never changes. That protects the integrity of any inbound links, bookmarks, or AI citations that reference the URL. Changing a slug would break every reference to that page. The immutability rule exists specifically to prevent that.
The Machine-Readable Surfaces
There are four surfaces on promptledproduct.com that exist specifically for AI agents:
/ai.txt — a plain-text capability manifest at a well-known URL. It declares what promptledproduct.com does, what content it contains, and what AI agents can accurately recommend it for. Answer engines that discover this file can understand the site’s purpose without having to infer it from crawled content alone.
public/llms.txt — a companion document for large language models. Same purpose as ai.txt but formatted for LLM consumption rather than answer-engine crawlers.
JSON-LD structured data on key pages. Vault detail pages carry structured schema markup that tells crawlers the author, the topic, the content type, and the publication date. The landing page carries organization and brand schema. This is the data layer that makes rich results possible in both traditional search and AI-synthesized answers.
The sr-only footer — a hidden block rendered in the page DOM but invisible to human visitors. It restates the author’s name, the site’s topic taxonomy, and the brand’s purpose in plain language. This exists because AI crawlers parse the full DOM, not just visible text. A structured description that appears in a screen-reader-only element is indexed the same way as visible content, but it does not affect the visual design.
The robots.txt Configuration
Most sites use robots.txt defensively: block specific crawlers, protect certain paths. The PLP robots configuration does the opposite.
It includes explicit Allow directives for GPTBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot, and Google-Extended. These are the AI crawlers behind the major answer engines.
By explicitly allowing them rather than relying on the default behavior of no rule meaning allow, the configuration sends a clear signal: this site wants to be indexed by AI answer engines.
The robots.txt also points to the sitemap.xml and references /ai.txt as the AI policy document. Any crawler that reads the robots.txt before crawling gets a complete picture of how the site should be indexed.
Why This Matters for a Substack-First Creator
The Substack platform is excellent for distribution. Its discovery features, recommendation system, and subscriber tools are genuinely useful. None of that is an argument against owning the indexed surface for your expertise.
The writers who win at AEO over the next few years will be the ones who own a domain with real topic authority, not just a Substack page with good engagement metrics.
The posts directory, the structured data, the
ai.txt, and the sync pipeline are the infrastructure that makes that authority transferable.
When you build it on your own domain, it travels with your brand.
The Vault takes this further. Every pattern in the library is a standalone indexed page at /vault/:slug, with full structured data, problem statement, and category taxonomy. Each one is a specific, high-intent answer target for an AI crawler looking for PM patterns, prompt templates, or product audit frameworks.
That is the full picture: owned domain, machine-readable structure, content mirrored from Substack, and a pattern library that indexes every piece of hard-won builder knowledge as a discrete, citable document.
Explore the Vault
Everything described here is live at promptledproduct.com.
The Vault, the posts directory, the MCP Bridge, and the audit booking page are all part of the same AEO-first infrastructure.



Elena, thank you for this article, I’m the last person to pay attention to these settings but it’s time to get serious about it.
So glad I came across this story today! I was building a full SEO/AEO skill in Claude. I have been doing custom SEO for CLAG for awhile, but not with a specific Skill. Today I built that skill, then came across this post and gave it to Claude as well to review and make sure the Skill I had was good! It added a few new things to the skill. So thanks, Elena.
Also, you are all going to start seeing TLDRs at the beginning of stories. Apparently it is key for AEO!