It would be better to exclude at the query level, than at the last minute. See e.g. 417f2b4c58829c2eaa025c4241367bd33fe8f8f9, T108396: New flow topics not appearing in watchlist, T109537, T109544, https://gerrit.wikimedia.org/r/#/c/232435/ .
If we only really care about the web pages (e.g. it's okay to have a 'double' new-topic and initial-post notification on the IRC and JSON feeds), we could instead hook in at the query level.
The hook is ChangesListSpecialPageQuery . However, I'm not sure if we can do this query, or if everything is stuck in rc_params.
If the latter, we could keep doing it per-entry, but add separate methods for ChangesListQuery, one to be called for the feeds and one for the web site (so the methods know whether to hide unwanted records or not).