Replit

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.

Use the platform guide index when you're unsure which stack Replit deployed, and compare with the Next.js guide if your Repl uses App Router. Most Replit fixes touch Discoverability, Content, Bot Access, and Capabilities.

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.xml

llms.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"));
});

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.app URL is stable; use it for canonical and the Sitemap: 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.

Further reading