Skip to main content
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║                                                                                                  ║
║   ██████╗██╗  ██╗ █████╗ ███╗   ██╗ ██████╗ ███████╗██╗    ██╗ █████╗ ████████╗ ██████╗██╗  ██╗  ║
║  ██╔════╝██║  ██║██╔══██╗████╗  ██║██╔════╝ ██╔════╝██║    ██║██╔══██╗╚══██╔══╝██╔════╝██║  ██║  ║
║  ██║     ███████║███████║██╔██╗ ██║██║  ███╗█████╗  ██║ █╗ ██║███████║   ██║   ██║     ███████║  ║
║  ██║     ██╔══██║██╔══██║██║╚██╗██║██║   ██║██╔══╝  ██║███╗██║██╔══██║   ██║   ██║     ██╔══██║  ║
║  ╚██████╗██║  ██║██║  ██║██║ ╚████║╚██████╔╝███████╗╚███╔███╔╝██║  ██║   ██║   ╚██████╗██║  ██║  ║
║   ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝ ╚══════╝ ╚══╝╚══╝ ╚═╝  ╚═╝   ╚═╝    ╚═════╝╚═╝  ╚═╝  ║
║                                                                                                  ║
║                                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

changewatch-0.1.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

changewatch-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

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

Hashes for changewatch-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fa56487f280cca1f078d5239a9d4df1bfeb677ffe929fb307195ef4abf7e9792
MD5 4120267a125b71afd285eae21a9c88e6
BLAKE2b-256 f68ea1a29aa9e865305ed1a5666f2e62585c0af103464e020e53a0da0088ef55

See more details on using hashes here.

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

Hashes for changewatch-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 197fefe38f7af1f66a2876b9815365e59d8f4dc4c6f4abd7086878db6358e801
MD5 b0bcf3d0f59bc2a99b4902a230084218
BLAKE2b-256 26c26d8edd268780ca9af483cbc653f87c3c66685281c541b38f70585274251c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page