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
- Add to Watch Later
- Three dots → Not Interested
- Three dots → Don’t recommend channel
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
- already added to the Watch Later playlist (3)
- already watched, even if partly (4)
- mixes (5)
- older than one year (6)
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]