Free · open source · runs in your coding agent

Ask your coding agent how people find your site.

foundby keeps a ledger in your repo of every way a person has ever reached your site: referring hosts, AI assistants, link previews, in-app browsers, backlinks and web mentions. Each run reports only what is new, and your agent looks up every new one and writes down what it is.

Paste it into Claude Code, Codex, Cursor or any agent that reads a SKILL.md. Or install by hand: git clone https://github.com/preziotte/foundby .claude/skills/foundby

  /foundby
FOUNDBY · example.com · new since 2026-10-22 (7d window, 184 rows in ledger)

  NEW  blog      skinnypuppy.eu                              25  via edge
  NEW  video     youtube.com                                  3  via web  youtube.com/watch?v=…
  NEW  forum     news.ycombinator.com                         9  via edge,web
  NEW  directory github:someone/awesome-music-tools           0  via web  github.com/someone/awesome-music-tools
  NEW  unfurler  unfurl:Discord                              14  via edge
  junk (3): 185.220.101.4, seo-tools.xyz, translate.goog
  PAGE forum     reddit.com                                        reddit.com/r/WeAreTheMusicMakers/comments/…
  SURGE search   duckduckgo.com                              41  was ~2.1/day

  sources: edge 2026-10-22..2026-10-29 (168h) · ga 2026-10-22..2026-10-29 · mentions hn:1 github:4 bluesky:2 lobsters:0 youtube:3 · bing API returns no links for this site

  to look up (3): skinnypuppy.eu, news.ycombinator.com, youtube.com
How it works

Scripts find the hosts. Your agent finds out what they are.

Mention trackers and backlink tools list hosts. They do not open each one, decide that this one is a Spanish AI-music tutorial worth a thank-you and that one is a parked domain never to be shown again, and write that into a file you own. That is the part that makes the report readable, and it is only cheap because the agent is already there.

01 · remembers

A ledger, not a dashboard

Every host, agent and platform ever seen, with first-seen date, kind and a note, in docs/foundby.md next to your code. Each run covers exactly the gap since the last one. Junk surfaces once.

02 · looks up

One line per new host

The report ends with the hosts worth a look. The agent fetches each, searches for the page that links you, and records a kind and a one-line note. Hand edits in the markdown stick.

03 · yours

No service, no account

Runs on your machine with your credentials. State is two files in your repo. Client IPs are never read. Nothing is sent anywhere that you did not already pay for.

Sources

Every source is optional. Together they see what no one of them can.

foundby doctor reads your analytics property, prints the channel mix, and tells you which of these would add the most for your site. A site with only a domain still gets the mention search.

SourceSeesBlind toNeeds
Mention searchPages that talk about your site whether or not anyone clicked: Hacker News, GitHub code (awesome lists, READMEs), Bluesky, Lobsters, YouTube video descriptions, RedditX, Instagram, TikTokNothing. gh auth login for GitHub
Google Analytics 4utm and gclid sources, GA's AI Assistant channel, in-app browsers (TikTok, Instagram), referring pages with three custom dimensionsAnything without JavaScript: agents, unfurlers, ad-blocked visitorsA service account on the property
CDN edge logsEvery request: referrers without JS, link unfurlers (each one a private share in Slack, Discord, iMessage), AI live-fetch agents (ChatGPT-User, Claude-User, Perplexity-User)Native apps and email clients send no RefererCloudFront standard logs in S3, the aws CLI
Bing WebmasterThe backlinks Bing knows about, via the only free backlink APIMost backlinks; often emptyAn API key

Setup, cost and blind spots of each, including the GA custom-dimension snippet, are in docs/sources.md.

Without an agent

The scripts work on their own.

Python 3.10+, standard library only (plus cryptography for the GA token). One foundby.json in your repo.

git clone https://github.com/preziotte/foundby .claude/skills/foundby
python3 .claude/skills/foundby/scripts/foundby.py init example.com
python3 .claude/skills/foundby/scripts/foundby.py doctor
python3 .claude/skills/foundby/scripts/foundby.py run /tmp/foundby
python3 .claude/skills/foundby/scripts/foundby.py set skinnypuppy.eu --kind blog --note "Fan site, links from an inner page"
python3 .claude/skills/foundby/scripts/foundby.py view
FAQ
What does this see that Google Analytics does not?

Pages that mention your site whether or not anyone clicked (Hacker News, GitHub, Bluesky, YouTube descriptions), link previews fired when someone pastes your URL into Slack, Discord or iMessage, AI assistants fetching a page to answer a question, and referring pages rather than just hosts. It also reads GA itself, so you get the union.

Is anything sent to a server?

No. There is no foundby service. The scripts run on your machine, call the public APIs and your own analytics and log bucket with your credentials, and write two files into your repo. Client IPs are never read from logs.

Do I need Google Analytics or CDN logs?

No. A site with only a domain gets the mention search. GA4, CloudFront logs and Bing backlinks are optional and each one adds a layer. doctor looks at what you have and says which would add the most.

Why does an agent need to be involved?

The scripts find new hosts. The agent fetches each one and decides what it is: a tutorial worth a thank-you, a directory that listed you, a parked domain never to be shown again. That one-line note is what makes the ledger readable, and it is only cheap because the agent is already there.

What about AI agents crawling my site?

foundby records the live-fetch agents, because a person was behind each one. For crawlers, training bots and the full picture of what AI agents do on your site, use agenttraffic, which reads the same logs. foundby is about people; agenttraffic is about agents.

How accurate are the hit counts?

They are a magnitude, not a count: edge hits plus GA sessions overlap. The point of the ledger is the first-seen date and the note, not the number.