╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗██╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ███████╗██╗ ██╗ █████╗ ████████╗ ██████╗██╗ ██╗ ║
║ ██╔════╝██║ ██║██╔══██╗████╗ ██║██╔════╝ ██╔════╝██║ ██║██╔══██╗╚══██╔══╝██╔════╝██║ ██║ ║
║ ██║ ███████║███████║██╔██╗ ██║██║ ███╗█████╗ ██║ █╗ ██║███████║ ██║ ██║ ███████║ ║
║ ██║ ██╔══██║██╔══██║██║╚██╗██║██║ ██║██╔══╝ ██║███╗██║██╔══██║ ██║ ██║ ██╔══██║ ║
║ ╚██████╗██║ ██║██║ ██║██║ ╚████║╚██████╔╝███████╗╚███╔███╔╝██║ ██║ ██║ ╚██████╗██║ ██║ ║
║ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ║
║ ║
║ a doorbell for your published work ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
You can already see what you did. What you cannot see is whether anyone else did anything about it.
The first citation. The first star from a stranger. The first time your name appears somewhere you did not put it. That signal has no instrument - everything that exists reports totals, and a total that moves by three is indistinguishable from noise until you have watched it for a month.
This is a doorbell, not a dashboard. Almost every run says nothing happened and exits.
pip install changewatch
changewatch init # writes a config to fill in
changewatch check # says only what is new
The two rules
1. Only what somebody else did. Your own commits, releases and citations are not news. You made them.
2. A counter is not an event. Downloads wander. A number is worth saying only when it steps, and the step is measured against what that number normally does - three more downloads on a package with four is a story, three more on a package with four thousand is Tuesday.
Why the first rule is the whole design
The first ORCID this was pointed at reported six citations.
All six were the author citing himself, doubled because Zenodo mints a DOI per version. Six is a number that feels like an audience. The real figure was zero.
A tool that cannot tell your own activity from a stranger's will ring on your own deposits, get muted inside a week, and then be silent on the day something real happens. So every source checks: your ORCID, your names, your logins.
What it watches
| Source | What rings | Key |
|---|---|---|
| OpenAlex | a work cites yours, by anyone who is not you | none |
| GitHub | a star, fork, watcher, issue or PR from a stranger | GITHUB_TOKEN |
| Hacker News | your exact phrase appears | none |
| Zenodo | views or downloads step | none |
| PyPI / npm | weekly downloads step | none |
GITHUB_TOKEN is required, not optional - those endpoints answer 401
without one. In a workflow the built-in secrets.GITHUB_TOKEN already works.
Not reachable: Bluesky and Reddit both answer 403 to unknown clients as
of August 2026, and X is paid-only. Measured, not assumed.
It does not trust the search engine
Algolia tokenises inside quotes. Asked for "openapi-drift" it returns a
thread titled "How do you catch OpenAPI drift before the UI breaks?" - two
words, five months old, about nobody's package.
So every hit is checked against the text locally before it counts. Search engines have their own idea of a phrase and it is not yours.
The first run is silent
It has nothing to compare against, so everything looks new - including that five-month-old thread. A doorbell that announces months of history the moment it is plugged in gets unplugged. The first run learns; the second one rings.
In CI
- run: pip install changewatch
- run: changewatch check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Commit .changewatch-state.json so the schedule remembers between runs.
Licence
MIT.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file changewatch-0.1.0.tar.gz.
File metadata
- Download URL: changewatch-0.1.0.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa56487f280cca1f078d5239a9d4df1bfeb677ffe929fb307195ef4abf7e9792
|
|
| MD5 |
4120267a125b71afd285eae21a9c88e6
|
|
| BLAKE2b-256 |
f68ea1a29aa9e865305ed1a5666f2e62585c0af103464e020e53a0da0088ef55
|
File details
Details for the file changewatch-0.1.0-py3-none-any.whl.
File metadata
- Download URL: changewatch-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
197fefe38f7af1f66a2876b9815365e59d8f4dc4c6f4abd7086878db6358e801
|
|
| MD5 |
b0bcf3d0f59bc2a99b4902a230084218
|
|
| BLAKE2b-256 |
26c26d8edd268780ca9af483cbc653f87c3c66685281c541b38f70585274251c
|