More of the visits to a website now come from software acting for a person: a coding agent looking something up, an assistant building a shortlist, a browser agent filling in a form. When I rebuilt this site I treated those visitors as a second audience with their own needs. Humans want a clear page. Agents want clean text, stable URLs and facts they don't have to infer from the layout.
This is what I implemented, and why.
Start with the boring part: real HTML
Every page on this site is plain, server-rendered HTML with a sensible heading order. Nothing important depends on JavaScript or animation, so a crawler that doesn't run scripts sees the same content a person does. That still matters more than anything else on this list. Google's own guidance for its AI features says the usual SEO fundamentals apply, and that no special markup is needed to appear in them (Google Search Central).
Markdown for anyone who asks for it
Every page has a Markdown version. You can get it two ways:
- add
index.mdto the URL, for example /ai-automation/index.md - or request any page with the header
Accept: text/markdown
The second one is content negotiation, and it isn't hypothetical. In a February 2026 test, Claude Code, Cursor and OpenCode all sent text/markdown in their Accept header when fetching pages (Checkly). Cloudflare now offers the same conversion at the edge (Cloudflare). I write the Markdown myself from the same source as the HTML, so it is shorter than an automatic conversion and can't drift out of sync.
Markdown responses carry a canonical link back to the HTML page and a noindex header, so search engines don't treat them as duplicates.
A brief written for agents
The For agents page is the whole site in one Markdown document: who I am, what I offer, what I have built and how to reach me. Each project is labelled with the kind of evidence behind it: live, open source, or a private build. An assistant that reads it shouldn't have to guess which claims can be checked.
llms.txt, with honest expectations
There is an /llms.txt file too, but I don't expect much from it. Ahrefs looked at 137,000 domains and found that 97% of llms.txt files got no requests at all in May 2026, and none of the major AI companies has said its crawlers use the file (summary of the evidence). It costs almost nothing to keep, and coding agents sometimes read it as a table of contents, so it stays. It just isn't the strategy.
Structured data that matches the page
Each page carries Schema.org JSON-LD: a Person, the service I offer, the software I have built, and articles with their authors and dates. Every entity has a stable ID, so the pages describe one connected set of facts rather than a pile of separate snippets. The rule I followed is Google's: markup has to describe what is visible on the page (Google Search Central). There is no FAQ markup on pages without a visible FAQ, and no ratings I can't show.
Tools for browser agents
Chrome is testing WebMCP, which lets a page register tools that an agent in the browser can call instead of guessing where to click. This site registers five read-only tools: get the profile, list services, list projects, list articles, and draft an inquiry. The last one only returns links. It never sends anything, because contacting someone is a decision the person should make.
What I left out
I didn't add files just because they sounded AI-related. There is no ai.txt and no invented .well-known manifest, because nothing I could find reads them. The usage preferences in robots.txt use Cloudflare's Content Signals, which are widely deployed, while the IETF works on a standard version.
The useful part isn't a special file. It's making the facts easy to find, easy to check and the same in every format.
That is the same thing I try to do with automation: leave a trail that someone else can follow.