Chrome extension that blurs likely spoilers while you browse. It combines local story-graph matching with an OpenAI semantic check so spoilers can still be caught when a show title is not spelled out.
- Chrome Extension (Manifest V3)
- JavaScript
- OpenAI Chat Completions API
- TMDB API
- Chrome Storage API (
sync+local) MutationObserver+IntersectionObserver
- Clone this repo.
- Open
chrome://extensions, enable Developer mode, Load unpacked, select this folder. - Configure API keys — right-click the extension → Options (or use Extension options on
chrome://extensions):
- OpenAI API key — semantic spoiler detection
- TMDB Read Access Token — search and metadata
Legacy: copy .env.example → .env (gitignored) for OpenAI, TMDB, and false-positive ingest. Or set API keys in Extension options.
- Open the popup, search TMDB, select a row (Add stays disabled until you do), click Add.
- Toggle shields per title, or use pause all / enable all.
- Browse as usual — Reddit, Wikipedia, X, etc. Blurred blocks can be revealed per click. Use not a spoiler? on a revealed block, or Options → false positives, to report mistakes.
- Developer guide — architecture, detection pipeline, debugging, fixture tests
- Adds must come from TMDB suggestions (no free-text or manual keyword lists yet).
- Default LLM escalation favors recall over cost — more API use than a local-only gate.
- Detection and context quality still vary by site layout and model behavior.
- Protected-list updates can briefly re-scan and flash existing blurs on some pages.
Page text snippets are sent to OpenAI for analysis. Do not commit API keys or share screenshots that expose credentials.


