News sites often reject minimal-bot requests; send a full browser header set (User-Agent, Accept, Sec-Fetch-*, client hints). Accept-Encoding is left to requests/urllib3 to avoid undecodable brotli responses.
- 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