Add resources/excluded_phrases.txt (skip links, privacy/consent, legal boilerplate) and match it case- and punctuation-insensitively as a contiguous run of words. Phrases live in a data file so they can be extended without touching code.
- Track source domain and publication time on each headline - Cluster near-duplicate headlines into stories (union-find) - Output stories covered by >=N distinct sources (--min-sources) - Add --since/--until date window - Ignore __pycache__ build artifacts