Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

My solution: uBlock Origin icon → gears icon → My Filters tab, then add:

  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^apnews\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^bbc\.co(m|\.uk)$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^bloomberg\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^businessinsider\.(com|in)$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^cbc\.ca$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^cbsnews\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^cnn\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^cnbc\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^commonsense\.news$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^dw\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^economist\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^forbes\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^foreignpolicy\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^fortune\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^ft\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^globalnews\.ca$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^independent\.co\.uk$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^latimes\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nautil\.us$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nbcnews\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^newsweek\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nikkei\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^noahpinion\.substack\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^npr\.org$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^newyorker\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nymag\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nypost\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^nytimes\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^platformer\.news$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^politico\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^politicopro\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^propublica\.org$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^restofworld\.org$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^reuters\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^telegraph\.co.uk$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^theatlantic\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^theconversation\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^theguardian\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^themarkup\.org$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^unherd\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^vice\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^vox\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^washingtonpost\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^wsj\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^yahoo\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.sitestr:has-text(/^youtube\.com$/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bBankman\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bBiden\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bBig Tech\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bclimate\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bcovid\b/i):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bElon\b/i):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bfar[ -]right\b/i):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bFTX\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\b(microplastics|PFAS|forever chemicals)\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bMusk\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bSBF\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bTesla\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bTwitter\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bUkrain(e|ian)\b/):upward(tr)
  news.ycombinator.com##:matches-path(/^/(news)?(\?.*)?$/) tr.athing span.titleline > a:has-text(/\bunions?\b/):upward(tr)
...and if my comments really piss you off, try:

  news.ycombinator.com##:matches-path(/^/item\?id=/) tr a.hnuser:has-text(/^dpifke$/):upward(tr)


  >My solution: uBlock Origin...
Wow! --this is a brilliant idea. I'd been trying to hack something together in GreaseMonkey to do something like this. But unfortunately my JS-foo is practically non-existent. So I never got very far with it. I never even thought of trying to do it with uBO.

Mind you, my ABP filter syntax knowledge is about as flakey as my understanding of JS. Nevertheless, this is what I've got so far:

  #block submissions with these domains...
  #or with this in the title...
  news.ycombinator.com#?#tr.athing > td.title > span:-abp-contains(/[Tt]witter/):upward(tr)
  news.ycombinator.com#?#tr.athing > td.title > span:-abp-contains(/[Yy]ou[Tt]ube/):upward(tr)
  news.ycombinator.com#?#tr.athing > td.title > span:-abp-contains(/[Ee]moji/):upward(tr)
  news.ycombinator.com#?#tr.athing > td.title > span:-abp-contains(/[Ww]orld [Cc]up/):upward(tr)
  news.ycombinator.com##tr.athing > td.title > span:-abp-contains(/[Pp]interest/):upward(tr)
It's a bit clunky to write and it leaves the 'submitted by' line behind. But already my HN viewing is 23% less annoying.

Do any of you ABP syntax gurus out there know a less clunky way to match case insensitively? For some reason the -abp-contains() filter is case sensitive and uBO doesn't accept a regex with /(?i)keyword/ or /(?i)[keyword]/


    > FTX
    > Musk
Very nice! How can I add friends on HN?!


This is brilliant. Thanks!

Can I suggest making a Github/Gitlab/other project out of this? Reason being because those platforms typically offer Atom feeds folks can subscribe to for updates.


This is actually great! Filters out a lot of the sensationalism.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: