Missing llms.txt in Vanilla JS
llms.txt is the emerging convention for handing LLMs a clean, curated markdown map of your site — what it is, and links to the pages you most want read — instead of leaving them to scrape rendered HTML full of navigation and markup. As assistants increasingly answer questions using your content, an llms.txt is a cheap way to steer them to the right, accurate source.
Framework fixes
Symptoms
How VibeCheck catches it
In your widget · Problems
No llms.txt
To your coding agent · MCP
agent › get_detected_issues
→ { detector: "aeo", issue: "No llms.txt", threshold: "/llms.txt is not served as a 2xx text/plain or markdown response" }
The same string in your widget and in your agent’s context — no screenshot, no copy-paste.
Root causes
The fix for Vanilla JS
Place a static llms.txt at the web root and ensure your server sends a text/plain content type for it.
# served from https://acme.com/llms.txt with Content-Type: text/plainSteps
- Write
/llms.txt: an H1 title, a one-line summary, then curated link sections - Link your most important, canonical pages with a short description each
- Serve it from the site root with a
text/plainor markdown content type
FAQ
- Is
llms.txtan official standard? - It’s an emerging convention, not a formal standard, but it’s increasingly recognised. It costs almost nothing to add and gives you a curated surface for LLMs, which is why it’s worth doing.
- What’s the difference between
llms.txtandrobots.txt? robots.txtcontrols what crawlers may access;llms.txtis a positive, curated markdown summary that points LLMs to your best content. They’re complementary.- What should I put in it?
- A title, a one-line description of the site, and grouped links to your most important canonical pages, each with a short description. Keep it concise and current.