Apparently there's a thing called GEO — setting up for AI search, unsure as I go

The series (4 parts) on building and shipping crofty is finished; this is a bonus. The finale, Designing a CLI on the premise that an AI will drive it, was about “the AI that uses it”; this one is about “the AI that arrives via search.”

Search itself is more and more often done by an AI.

Tuning a site for that AI is apparently called GEO (Generative Engine Optimization) — the generative-AI counterpart of SEO. crofty was built from the start on the premise that a person’s AI agent operates it, so I extended that premise to “the AI that finds it” too.

That said, I don’t really know yet what works, or how much. So I’ll sort it into what I know and what I don’t, in three buckets.

What’s settled

The AI that visits Examples What I want it to do
Conversational AI search ChatGPT, Perplexity, Google’s AI answers name and recommend crofty in its answer
Coding agents terminal companions like Claude Code carry “I want to build a site” through to install

What I did this time

In a form an AI can read, I placed checkable facts — free, no account, supported OSes — rather than slogans like “fast” or “easy.” Two forms.

llms.txt — an index for LLMs, in one page of Markdown

llms.txt is a single-page index of the site’s essentials, written in Markdown for LLMs. I put it at https://crofty.site/llms.txt: a one-line definition, the main facts, install commands, and links to each page, in that order. It opens like this.

# crofty

> crofty is a command-line tool that turns plain Markdown into a static
> website you own — write, build, and publish, with no account and no server
> in between. Free and open source; runs on macOS, Windows, and Linux.

llms.txt is itself just Markdown, so writing it and fixing it later took the same effort as an ordinary post.

JSON-LD — the site’s content as structured data

The other is JSON-LD. I embedded the site’s content in each page’s <head> in a form an AI or search engine can read programmatically (structured data). Two of them: a WebSite for the site as a whole, and a SoftwareApplication for the product itself on the top page.

{
  "@type": "SoftwareApplication",
  "name": "crofty",
  "operatingSystem": "macOS, Windows, Linux",
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
  "sameAs": ["https://github.com/ShiroDoromoto/crofty"]
}

Free, the supported OSes, the GitHub it ships from — each is material for an AI to describe crofty in a line.

What I can’t judge yet

From here on, it’s unverified. I set it up expecting the flow below, but whether it actually goes that way is another matter.

A top-to-bottom flow of how an AI that arrives via search ends up describing crofty. (1) A user asks an AI, 'Is there a tool to build a site from Markdown?' (2) An AI — conversational search or a coding agent — composes an answer. (3) It reads the site's content, placed to be read as llms.txt and structured data. (4) It names crofty and describes it correctly, citing concrete facts rather than slogans.
The flow I'm hoping for (a hypothesis — no results yet).

It should be worth doing, so I’ve put it in and I’ll watch for a while. If referrers shift, or anything else turns up, I’ll write a follow-up.

☕ Tip me