PlaybookGenerative engine optimization
AI Visibility for Open-Source Projects: Docs, Stars, and Discussions
by the AEO GEO Labs team3 min read
"What is a good Python library for parsing PDFs?" "Should I use X or Y for background jobs in Rails?" "Lightweight alternative to Z." Developers ask answer engines these questions all day, and the answers shape which projects get adopted.
For an open-source project, visibility in those answers is adoption, contributors, and sometimes funding. Engines are good at reading developer content, so the gap between a recommended project and an ignored one usually comes down to the docs.
How engines pick libraries
In our testing, engines answering a developer prompt lean on project documentation, READMEs, GitHub metadata, Stack Overflow answers, Reddit threads in language and framework communities, blog posts comparing options, and package registry pages.
Engines tend to recommend projects they can describe in one sentence: what it does, for which runtime, and how it differs from the obvious alternative. They also tend to prefer projects with clear maintenance status, probably because the sources they read say things like "unmaintained."
The README is the llms.txt
For most projects, the README is the single most-read document, by humans and models alike. The opening of a README that gets recommended looks like:
- One sentence: what the project does and for whom
- One sentence: how it differs from the main alternatives, honestly
- A minimal install command and a five-line usage example
- Supported versions, platforms, and runtimes, stated plainly
- Maintenance status and release cadence
"A fast, dependency-free PDF text extractor for Python 3.9+, built for batch processing where pdfminer is too slow. Not a renderer." That is a sentence an engine can repeat, and it answers the comparison prompt in the same breath.
Publishing an llms.txt at the docs site that restates this and links the key pages is cheap and consistent with the README. The llms-txt-generator will produce one from your existing pages.
Documentation that answers questions
Engines quote docs pages when those pages answer a question in the first paragraph. A page titled "Configuration" that starts with a paragraph of philosophy gets skipped. A page titled "Configuring retries" that starts with the config block and a sentence explaining each option gets quoted.
Structure docs around tasks, with headings that match how developers phrase questions. Keep the examples runnable. Tie pages to versions so a model knows which API it is reading.
Check that the docs site renders without JavaScript; the javascript-visibility-checker will show you what a crawler sees. Also confirm the docs host is not blocking AI crawlers, which some platforms do by default.
Comparison pages written by maintainers
A "how X compares to Y" page in your own docs, written honestly, is one of the most-cited pieces of open-source content. State where the alternative is the better choice. Developers trust it, engines quote it, and it answers the exact prompt people type.
Package registries and metadata
npm, PyPI, crates.io, and the rest are read by engines. The description field should carry the same one-sentence summary as the README, and the homepage and repository links should work. Keep the metadata current across the registry, the repo description, and the docs site.
Stars, discussions, and the third-party layer
Stars matter less than people think and discussions matter more. Engines cite Stack Overflow answers, GitHub Discussions and issues, and Reddit threads where someone asks "what should I use for." Being active in those places as a maintainer, answering the comparison questions honestly, is the open-source equivalent of getting into the sources engines cite.
User write-ups, conference talks on YouTube, and "awesome" lists are also read. AEO GEO Labs applies the same rule in open source as everywhere: no paid placements, no fake reviews, just making the genuine footprint consistent and easy to read.
Measuring share of answer
List the prompts your project should answer: the category prompts, the comparison prompts, the "alternative to" prompts. Run them weekly across engines. Record whether the project is named, what is said about it, and whether anything is wrong or stale. A model confidently describing an API you removed two versions ago is a docs problem you can fix.
Start with the first paragraph
Rewrite the first paragraph of your README so it says what the project is, who it is for, and how it differs, in two sentences. Copy that into the registry description and the repo description. Then rewrite the first paragraph of your three most-visited docs pages to answer the question in the title directly. AEO GEO Labs can run the audit and the prompt set for larger projects, but most maintainers can see the pattern after fixing one README.