{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigwdj3c56tgm5hsqycn22yycz3h2sh2j2el4vosgzilvw5u7pemya",
    "uri": "at://did:plc:hqad6xwuzg7oqfmwylfkvqfm/app.bsky.feed.post/3mitzdzjghwa2"
  },
  "path": "/viewtopic.php?t=33302&p=271936#p271936",
  "publishedAt": "2026-04-06T19:09:35.000Z",
  "site": "http://forum.palemoon.org",
  "tags": [
    "HYDE.user.js"
  ],
  "textContent": "If you watch Youtube, you certainly have those moments where a clickbait thumbnail appears in the recommended section.\nUnless you like big heads with open mouths or big red arrows showing nothing, they are just distracting and after a while quite annoying.\n\nThere is a Greasemonkey script for the default Youtube interface (Block Youtube Users) that is able to block those channels and hide them out of sight.\nBut for the users of the Vorapis script, there was nothing, until now.\n\nI present you : **HYDE - Hide Youtube Distractions Easily**\n\n**Full disclosure :**\nThis Greasemonkey script was written with the help of AI.\n\nI am no Javascript expert and would never be able to create such a script myself.\nOn the other hand, I am able to understand the internal logic of the script.\nYou might dismiss the script as vibe coded, but that would not be true, since I unterstand vibe coding as making as little effort as possible.\n\n**What I did spent countless hours on :**\n\n  * writing multiple prompts to exactly describe what the script should do (no vibe coding)\n  * putting a lot of thought into logic and user experience (no, the first versions were not good enough)\n  * testing and debugging each function step-by-step, always comparing new and old code and sometimes spotting mistakes myself (no prompts like : it is still not working, fix it again)\n  * using the script myself for some time before writing this post (no real-world untested code)\n\n**Additional remarks :**\nWith all this said, I can confirm that everything works as intended and there are no side effects.\nThe code is also commented, so it should be easy to follow.\nAlthough there are features that could be improved (and AI suggests them), I don't want to overcomplicate stuff.\nThe problem with more features is : more edge cases, which the script has to account for.\nTherefore, I do not really plan to extend the features, since the script works exactly as I want it to.\nIf something breaks, I will fix the script, since I really cannot stand the clickbait thumbnails.\nYou are of course free to modify the script as you wish.\n\n**Fine print :**\nAlthough the script does not contain any harmful code, you should never run scripts from untrusted sources. If you do, you are doing this at your own risk.\nI also welcome anyone with enough expertise to check the script out to confirm it does not perform any harmful actions.\n\n**How the script works :**\nThe script was written for the main, search and watch page.\nIf the script is enabled, the HYDE Menu button appears next to the Upload button.\nOn page load, the script scans the whole page for videos from channels that are on the blocklist and hides the matching containers.\nThe page is then observed for new elements (e.g. when you click on load more) and additional matching containers get hidden as well.\nThe observer runs only for the defined amount of time to conserve CPU cycles.\nDefault timeout is set to 10 seconds in case someone has slow connection and the page takes a long time to fully load.\nI have set mine to 5 seconds and it works fine.\nThe settings are saved and loaded by using GM_setValue and GM_getValue.\n\n**The usage is simple :**\nAfter installing the script into Greasemonkey and loading a new Youtube page, the script starts in Debug Mode and [x] markers appear next to the channel names.\nTo block a channel, right click the [x] marker and select Block by exact name or Block by partial name.\nThe difference between those two options is :\n\n  * exact - channel container gets hidden only if its name matches exactly\n  * partial - channel container gets hidden if its name contains the pattern\n\nThe channel is then put on the selected blocklist, the container gets a red border and a label showing which blocklist the channel is on.\nAfter you have blocked all channels that you want, you can deactivate the Debug mode and hide the [x] markers using the appropriate entries in the HYDE Menu.\nIf you want to block another channel in the future, it is enough to activate the [x] markers, the Debug Mode is only needed for testing.\n\nWhen you block a channel :\n\n  * by exact name - the channel container is hidden immediately.\n  * by partial name - a popup shows up, allowing you to edit the pattern if needed. After clicking on save, the channel container is hidden immediately.\n\n**Explanation of the HYDE Menu items :**\n\n  * Filtering Enabled - Enables / Disables the hiding of channel containers. When disabled the HYDE Menu colour turns red.\n  * Debug Mode - when enabled, channel containers are not hidden, but get a red border instead and a label showing which blocklist is the channel on. The HYDE Menu colour turns yellow.\n  * Show Markers - when enabled, [x] markers appear next to channel names\n  * Observer Timeout - Sets observer timeout in seconds. After the defined timeout, the observer stops. \"mousemove\", \"keypress\", \"scroll\" and \"mouseclick\" activate the observer again and restart the timeout.\n  * Blocklist - Mouseover to show submenu\n  * View / Edit - Popup window appears which shows both blocklists with an option to remove or add items. Items are sorted alphabetically.\n  * Export - Exports both blocklists to JSON file.\n  * Import - Imports blocklist from JSON file, preventing duplicates.\n  * Clear - Clears both blocklists, asks for confirmation.\n\n**Screenshots :**\nHYDE Menu\n\nFiltering Disabled\n\nFiltering Enabled + Debug mode Enabled\n\nFiltering Enabled\n\nExample of partial filtering\n\nHYDE.user.js\n\n* * *",
  "title": "Add-ons • HYDE",
  "updatedAt": "2026-04-06T19:09:35.000Z"
}