All use cases
Platform

Be legible to search engines and to AI agents

Server-rendered SEO plus the well-known files agents look for.

The problem

A single-page app ships an empty document and fills it in with JavaScript. Search crawlers have mostly adapted; the newer readers — the agents fetching your pages on someone's behalf — often have not, and either way you are relying on someone else's renderer to see your content.

There is also a second audience now with its own conventions: files agents look for to learn what your site is and what it permits. Missing them is not an error anywhere, it is simply an absence.

What you are building

Live surfaces, not screenshots — every one composed from the same components you would install.

robots.txt and llms.txt

Edited as STRUCTURE, not text — which is what stops a site disallowing the path it meant to protect.

Crawlabilityrobots · llms

Protected paths

Disallowed for every agent · cannot be Allowed
/admin

Sitemaps

https://acme.dev/sitemap.xml

Host

User-agent groups

Group 1
User-agents
*
Disallow
/admin/api
Allow
/

Header

Sections

The code

The files are structure, not stringsphp
// robots.txt hand-edited in a textarea is how a site ends up disallowing the
// path it meant to protect. Model the rules, render the file.
XFiles::robots()
    ->group(userAgents: ['*'], allow: ['/'], disallow: ['/admin', '/api'])
    ->sitemap(route('sitemap'))
    ->protect('/admin');           // refuses to emit a rule that exposes it
Server-render the head, not just the bodytsx
// A page that assembles its own head after hydration is a page crawlers see as
// untitled. fancy-seo emits it in the first byte, with the JSON-LD alongside.
<Seo
  title={page.title}
  description={page.summary}
  jsonLd={{ "@context": "https://schema.org", "@type": "Article", headline: page.title }}
/>

How to solve it

  1. Render metadata on the server

    Head tags, sitemap and crawlability handled server-side for Laravel and Inertia, so what a crawler receives does not depend on running your JavaScript.

    Run thisbash
    composer require particle-academy/fancy-seo
  2. Serve the well-known files

    robots.txt, security.txt, llms.txt, humans.txt, the sitemap and an agents manifest — generated from your app rather than pasted into public/ and forgotten.

    Run thisbash
    composer require particle-academy/fancy-x-files
  3. Give someone a way to edit them

    Editors for each of those files, so changing what crawlers and agents are told is not a deploy.

  4. Turn on SSR for the pages that matter

    The Inertia bridge carries a server entry point, so the pages that need to arrive complete do.