{"id":50800653,"url":"https://github.com/jamdesk/docs-ai-scorer","last_synced_at":"2026-06-12T19:03:57.388Z","repository":{"id":361927505,"uuid":"1238066074","full_name":"jamdesk/docs-ai-scorer","owner":"jamdesk","description":"Single-file Node.js script that measures how AI-friendly a docs site is.","archived":false,"fork":false,"pushed_at":"2026-06-01T20:28:05.000Z","size":10,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T22:17:59.754Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamdesk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T19:27:13.000Z","updated_at":"2026-06-01T20:28:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jamdesk/docs-ai-scorer","commit_stats":null,"previous_names":["jamdesk/docs-ai-scorer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jamdesk/docs-ai-scorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamdesk%2Fdocs-ai-scorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamdesk%2Fdocs-ai-scorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamdesk%2Fdocs-ai-scorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamdesk%2Fdocs-ai-scorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamdesk","download_url":"https://codeload.github.com/jamdesk/docs-ai-scorer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamdesk%2Fdocs-ai-scorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34258373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-12T19:03:56.578Z","updated_at":"2026-06-12T19:03:57.380Z","avatar_url":"https://github.com/jamdesk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docs-ai-scorer\n\nA single-file Node.js script that measures how AI-friendly a docs site is. It powers the scoring in [Which docs platforms are actually AI-friendly?](https://www.jamdesk.com/blog/ai-friendly-docs-platforms-scored) on the Jamdesk blog.\n\n## Run it\n\n```bash\nnode score-docs.mjs \u003cplatform-name\u003e \u003cpage-url-1\u003e \u003cpage-url-2\u003e\n```\n\nOutputs JSON with:\n- Text-to-HTML ratio\n- SSR pass (does the page server-render real content?)\n- `llms.txt` / `llms-full.txt` discovery — checked at the origin root **and** every ancestor subpath of the tested URL, so `/docs/llms.txt` counts, not just `/llms.txt`. The JSON records where it was found via `llmsTxtLocation` (`root`, `subpath`, or `none`).\n- `sitemap.xml` and per-page `.md`-endpoint presence\n- AI-crawler robots policy (GPTBot, ClaudeBot, PerplexityBot, etc.)\n- Chrome-noise ratio between two pages on the same site\n\nNo npm install needed. Just Node.js 24 (or any version with `fetch` and `AbortSignal.timeout` — Node 18+).\n\n## Reproduce the article\n\n```bash\n./run-all.sh \u003e results.json\n```\n\nUses `platforms.json` to score the seven platforms covered in the article. Results land in `results.json`.\n\n## Submit your platform's results\n\nRun the script against your platform's docs and [open an issue](../../issues/new?template=submit-results.yml) with your numbers. If the reproduction stands up, we'll add your platform to the scorecard in the article.\n\n## What this script doesn't do\n\n- It doesn't follow JavaScript-rendered content (it makes plain HTTP GETs and parses HTML).\n- It doesn't simulate Cursor or any specific AI coding agent.\n- It doesn't grade answer quality — that's a separate manual rubric documented in the article.\n\n## Changelog\n\n- **v1.1** — Fixed the discovery-file probe. v1.0 checked only the bare origin root (`/llms.txt`), which produced false negatives for docs served from a subpath (e.g. `/docs/llms.txt`) even though [the llms.txt spec](https://llmstxt.org) allows subpaths. v1.1 checks the root and every ancestor segment, follows redirects, validates the body is real markdown rather than an SPA shell, and reports `llmsTxtLocation`. The story behind the fix is in the [article](https://www.jamdesk.com/blog/ai-friendly-docs-platforms-scored).\n\n## License\n\nMIT. © Jamdesk.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamdesk%2Fdocs-ai-scorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamdesk%2Fdocs-ai-scorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamdesk%2Fdocs-ai-scorer/lists"}