Replit
Make a Replit-hosted site agent-ready: public assets, robots, and llms.txt.
Replit hosts a wide range of stacks — Vite, Next.js, Express, Flask, raw Node. AIScan's advice depends on which template you started from, but the file conventions are usually the same as the underlying framework.
Where files live
- Vite / React templates — drop static files in
public/. Vite copies them to the build root. - Next.js templates — also
public/. - Express / Flask — serve from a
static/directory and add explicit routes for/robots.txt,/llms.txt, and/sitemap.xml.
robots.txt
The same template AIScan recommends for everyone:
User-agent: *
Allow: /
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
Sitemap: https://your-repl.replit.app/sitemap.xmlllms.txt
Same format as everywhere — an H1, a one-line summary, then ## sections of markdown links. Static templates: drop the file. Server templates: serve it from your app:
// Express example
app.get("/llms.txt", (_, res) => {
res.type("text/plain").sendFile(path.join(__dirname, "llms.txt"));
});Head metadata
Replit's "AI-built" templates often ship with a generic title like "Vite App" and no meta description. AIScan picks this up in the C3 check. Replace it with a real title and description per page — if you use React Helmet or your framework's head helper, do it there; otherwise edit index.html.
Deployment caveats
- Always-on Repls — your
.replit.appURL is stable; use it forcanonicaland theSitemap:line. - Sleeping Repls — they wake on first hit, which can time out AIScan's fetch. Upgrade to Always-On or Deploy before you scan.
- Custom domains — once attached, update
robots.txt, canonical URLs, and sitemap entries to the custom domain.