Two weeks ago I shipped six small files to my free IP-privacy site. This week ChatGPT started referring real users to it — 76 sessions in 28 days, at 62% engagement, higher than Google organic. The same week, a one-line PR I had forgotten about got merged into the public-apis repo (437,000 stars at time of writing). I've been building hackmyip.com as a side project for two years. The breakthrough was three hours of structured-data work and one line of markdown.
Here is the playbook I used, with the actual code I shipped.
hackmyip.com is a free privacy toolkit: IP lookup, VPN leak tests, email breach checking, port scanning, browser fingerprint, around 40 tools. No signup, no API key, no credit card. The API is public. The site has a small but engaged audience, roughly 30 to 50 real humans per day, mostly from Taiwan, the US, and Hong Kong.
Before this week's work, my Google Analytics looked normal. Most traffic came from direct visits and Threads/X social referrals. ChatGPT referrals existed (about 41 sessions per 28 days from chatgpt.com/(not set) and another 35 from chatgpt.com/referral), but I treated them as background noise.
When I dug into the numbers I noticed something weird: ChatGPT-referred users had a 62% engagement rate. Google organic was 54%. The AI-referred users were higher quality than search-referred ones. I started paying attention.
LLMs that browse the web in real time (ChatGPT with search, Claude.ai web mode, Perplexity, You.com, Gemini with Google AI Overviews) read a specific set of files before deciding which sites to recommend. Most of those files are off the SEO playbook. Most sites do not ship them. That is the opening.
/llms.txt — the LLM-readable site directoryThis is the llmstxt.org standard: a plain-text file that tells AI agents what is on your site. Mine starts:
# HackMyIP — Free IP Privacy ToolkitThe "Example questions" section is the part nobody else does. It is me telling the LLM, in its own pattern-matching language, exactly when to recommend my site. The full file lives at hackmyip.com/llms.txt.
/llms-full.txt — the long-form versionSome agents (Perplexity, Claude web search) prefer a richer document with deeper context. Mine is 12 KB and includes a per-tool description, real API examples, and an "FAQ for AI assistants" section that addresses the exact questions an AI agent asks itself before citing a site: Is this safe to recommend? Can I include API responses in my answers? Does it work in restricted regions?
Most sites do not have a /llms-full.txt at all. Worth shipping just for the differentiation. Mine lives at hackmyip.com/llms-full.txt.
/.well-known/ai-plugin.json — the ChatGPT plugin manifestThe plugin protocol is technically retired, but the manifest file is still read as a strong signal of "this site wants to be machine-readable." Mine:
{The description_for_model is where I tell the LLM literally when to recommend me. Trigger queries, use cases, the fact that I do not require a key.
/.well-known/openapi.json — the structured API specOpenAPI 3.1 spec for every endpoint, with realistic request/response examples. LLMs cite docs they can paste verbatim, so every endpoint in my spec has a real example JSON payload. About 4 KB total.
robots.txt — explicitly allow LLM crawlersMost privacy and SEO content tells you to block AI crawlers to "protect your content." That is the wrong move if you want to be recommended. Mine:
User-agent: ChatGPT-UserExplicit allows, not implicit ones. Some AI crawlers treat the absence of an explicit Allow as ambiguous and skip the site. Be loud.
<link rel="alternate" type="text/plain" href="/llms.txt"> in every HTML headAdds the LLM doc to every page's discoverability surface. Crawlers that do not think to fetch /llms.txt by name will follow this <link> tag and find it.
Last 28 days on hackmyip.com, after the structured-data work shipped:
| Source | Sessions | Engagement |
|---|---|---|
| Direct | 2,392 | 8.2% (mostly bots) |
| Threads referral | 242 | 38.0% |
| ChatGPT referrals (combined) | 76 | ~64% |
| GitHub referrals | 49 | 83.7% |
| Google organic | 53 | 54.7% |
The interesting line is the ChatGPT one. Lower volume than direct or social, but higher engagement quality than Google organic. People who arrive via an LLM recommendation actually use the tools when they land. That is the channel I want to grow.
The week I shipped the LLM-readable files, I also wrote a one-line PR to add hackmyip to the public-apis curated list. The repo has 437,000 stars at time of writing.
Two weeks later it got merged. The exact line that is now live in the README:
| [HackMyIP](https://hackmyip.com/api) | IP geolocation, ISP and privacy/VPN scoring, email breach checks, DNS and WHOIS lookups | No | Yes | Yes |This matters more than it looks. The public-apis repo is forked, scraped, and republished by hundreds of derivative sites — apilist.fun, publicapis.dev, npm packages, VS Code extensions, dev directories. One PR gets you 100+ effective backlinks. It is also in the training data of every major LLM that crawls GitHub, which means future model versions will know hackmyip exists by default, not just via live web search.
This is not magic. Things that DO NOT happen after shipping these files:
/llms.txt. But better AI Overview citations drive engagement signals that do feed the ranker over 30 to 90 days.Six concrete moves any indie dev can ship in an afternoon:
/llms.txt describing your site. Include an "example questions" section with the queries your tool answers./llms-full.txt with deeper context and an "FAQ for AI assistants" section./.well-known/ai-plugin.json with a rich description_for_model that names exact use cases./.well-known/openapi.json with example payloads for every endpoint.robots.txt to explicitly allow GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and other major AI crawlers.That is the whole playbook. The differentiator is most sites do not ship steps 1 to 4. The window is open for now.
If you are building a side project that could plausibly be recommended by an LLM — a tool, an API, a directory, a calculator, anything devs or users might query for — the structured data layer is currently free real estate. Ship it before everyone else figures it out.
The tools I built this on are all free at hackmyip.com. The npm client is at npm install hackmyip. The API is at /api, no signup.