One line from an access log, checked
Who read your site this week, was it good, and what to write next
From your server's access log and a Search Console export. Every crawler is checked against the list its vendor publishes, so a scanner wearing ChatGPT's user-agent is not counted as ChatGPT. It runs on your machine and sends nothing unless you choose to share.
ChatGPT-User requests from outside OpenAI's list came from IPs that also probed for scanner paths.
of the requests claiming DeepSeekBot, CCBot, Grok, Perplexity-User or Claude-SearchBot were fake.
was enough for a rule-of-thumb filter to call a real ClaudeBot spoofed. So where a vendor list exists, the list decides.
One site's nginx log, 30 days to 2026-10-16.
How a weekly read works
Turn the files into numbers
People by first touch, Search Console weeks with impression-weighted position, every crawler verified against its vendor's list.
npx siteread digest --gsc export.zip \ --log access.log --out .siteread/digests
Read it as a dated memo
The seo-read skill for Claude Code writes the week up: what changed, who came from where, which crawler read what, and two to four things to do next.
"my weekly seo read"
See where you stand
Send one week's numbers to the benchmark and see where each stands among the published quartiles. It prints every byte first and sends nothing without a yes.
npx siteread share --dry-run
Read the docs: every command, the share payload, the library.
What the memo says
From the test site example.org, the one the tests run on### 2026-10-21: GSC 2026-09-21→10-18 (export gsc.zip) + log 2026-10-05→10-18
A steady week on small numbers: impressions rose to 34 a day and position improved to 17.9, while clicks stayed at 3. The sample is small, so the read rests on the four-week trend.
| Number | 2026-10-05→10-11 | 2026-10-12→10-18 |
|---|---|---|
| Impressions / day | 27 | 34 |
| Clicks | 4 | 3 |
| CTR | 2.1 % | 1.3 % |
| Weighted position | 21.4 | 17.9 |
| People (log, unique) | 3 | 4 |
Crawlers. Googlebot, verified, fetched 7 sitemap URLs last week against 4 the week before, and still asks for /old-page/, which is not in the sitemap. ClaudeBot, verified, read 2 pages. One ChatGPT-User request came from outside OpenAI's list: spoofed, not counted.
The benchmark
Anonymous weekly numbers from sites that chose to share, with the count printed on every row. Small and dated, and it says so.