Optimizing YouTube for discovery

The Flow

Never watch videos from the feed, only from the Watch Later or other playlists

In the feed, for each video, do one of

My observation is that YouTube more or less respects the Not Interested and Don’t recommend channel but not the Dislike

Leveraging uBlock Origin

My custom filters are at the bottom of this page

Removing distracting images

I remove both thumbnails and animated previews using filters (1) and (2)
Using those leaves a gray box, which I find useful to avoid having a scary wall of text

Selectively hiding videos

I hide videos that are

Given the discovery goal, videos already in the Watch Later playlist only take up space in the feed
Some will only disappear once you hover over them

Already watched videos are either completed or dropped
Neither is something that I’d want to see again

Mixes/generated playlists just don’t work with the flow, since they can’t be added to the Watch Later

I hide older videos due to my primary interests being tech and news
Both age very fast these days

Removing unnecessary UI elements

Shorts from the feed and the left-side menu, a bunch of other items from those menus, a bunch of items in three-dots menus are removed with (8)

The filters

! (1) Disable thumbnails (leaves the box)
youtube.com##.ytd-thumbnail img
youtube.com##img[src*="ytimg.com/vi/"]
! (2) Disable animated previews
youtube.com##ytd-moving-thumbnail-renderer[class="style-scope ytd-thumbnail"]
! (3) Hide videos that are already in Watch Later
youtube.com##ytd-rich-item-renderer:has-text(playlist):remove()
! (4) Hide videos that are already watched or started
youtube.com##ytd-rich-item-renderer:has(ytd-thumbnail-overlay-resume-playback-renderer)
youtube.com##ytd-grid-video-renderer:has(ytd-thumbnail-overlay-resume-playback-renderer)
youtube.com##ytd-rich-item-renderer:has(yt-thumbnail-overlay-progress-bar-view-model)
youtube.com##ytd-grid-video-renderer:has(yt-thumbnail-overlay-progress-bar-view-model)
! (5) Hide generated playlists
youtube.com##ytd-rich-item-renderer:has-text(Mix)
youtube.com##ytd-rich-item-renderer:has(yt-collection-thumbnail-view-model)
! (6) Hide videos older than one year
youtube.com##ytd-rich-item-renderer:has-text(/\d+ years? ago/)
! (7) Remove useless context menu items
youtube.com##span.yt-core-attributed-string.yt-list-item-view-model__title:has-text(Add to queue):upward(3)
youtube.com##span.yt-core-attributed-string.yt-list-item-view-model__title:has-text(Save to Watch Later):upward(3)
youtube.com##span.yt-core-attributed-string.yt-list-item-view-model__title:has-text(Share):upward(3)
youtube.com##span.yt-core-attributed-string.yt-list-item-view-model__title:has-text(Download):upward(3)
youtube.com##span.yt-core-attributed-string.yt-list-item-view-model__title:has-text(Report):upward(3)
! (8) Remove garbage
youtube.com##ytd-guide-entry-renderer:has(yt-formatted-string:has-text(Shorts))
youtube.com##ytd-guide-entry-renderer:has(yt-formatted-string:has-text(Your courses))
youtube.com##ytd-guide-entry-renderer:has(yt-formatted-string:has-text(Downloads))
youtube.com##ytd-guide-entry-renderer:has(yt-formatted-string:has-text(Your clips))
youtube.com##ytd-mini-guide-entry-renderer[aria-label="Shorts"]
youtube.com##ytd-mini-guide-entry-renderer[aria-label="Downloads"]
youtube.com##ytd-guide-section-renderer:has(h3:has-text(Explore))
youtube.com##ytd-guide-section-renderer:has(h3:has-text(More from YouTube))
youtube.com##ytd-rich-shelf-renderer[is-shorts]