YouTubeで特定のチャンネルをブロック/非表示/排除する方法(ログインなし)

コンピュータ関連
スポンサーリンク
スポンサーリンク

YouTubeのフィードから特定のチャンネルをブロックして排除したい

YouTubeを使っていて、
このチャンネルは見たくないのになぜかおすすめに出てくる…
って事ありません?

「出てきにくくなる」じゃなくてもう
出したくないし、サムネすら見たくない。
特に昨今のAIで嘘八百をただ読み上げてるだけの動画とかイライラしてしまう。

そんな動画を排除する方法についてまとめます。備忘録です。

YouTube上で特定のチャンネルをブロックする機能はあるの?

結論から言うと、現時点(2025年7月)では
視聴者が特定のチャンネルを完全に非表示にする機能はなさそうです。

以前は「ユーザーをブロック」することで、そのチャンネルを非表示にする方法が提供されていたようです。が、現在そういったものは見当たりません。
また、「興味なし」とすることで一時的にフィードに出にくくすることは可能ですが、完全な除外ではなく、一定期間が経つと再度表示される可能性があります。
子供の保護者向け管理機能はあるそうですが、これもまた使い方として限定的かなと。

というかそもそもログインして使ってないので設定もなにもないんですけどね自分には。

というわけで、ログインなしで非表示にする場合は、
本記事のような ブラウザ拡張機能を利用した回避策 が現実的なアプローチになります。

スポンサーリンク

方法1:uBlock Originを使う

ブラウザはFirefoxを使っています。
最近では随分とシェアも減ったようですが、なんとなく使い続けています。

  • オープンソースであり、ユーザーのプライバシーに重点を置いている
  • uBlock OriginがManifest V2ベースで動作する最後の主要ブラウザ

そして uBlock Origin は、軽量で高性能な広告ブロッカー/コンテンツフィルター拡張機能です。
JavaScriptやDOM構造を解析し、不要なコンテンツの非表示・削除を行うことができます。広告だけでなく、ユーザー定義のフィルターによりWebページの任意の要素を非表示にすることが可能です。

[公式アドオンページ]からインストールできます。

マイフィルター(カスタムフィルター)の使い方と記述例

uBlock Originでは、「マイフィルター」機能を使って任意の要素を非表示にできます。

  1. uBlock Originの「設定」画面やアイコンからダッシュボードを開き、「マイフィルター」タブを選択
  2. 以下のようなフィルターを追加
  3. 「変更を適用」をクリック

フィルター記述例:


www.youtube.com##ytd-rich-item-renderer:has(ytd-channel-name:has-text(/感動大国日本|世界が称賛JAPAN|世界が○○るニッポン/i))

簡単な解説:

  • ## は、特定の要素を非表示にするセレクター構文
  • ytd-rich-item-renderer はYouTubeのおすすめ・ホーム画面などで使われる要素
  • :has-text() は、特定のテキストを含む要素を指定(チャンネル名に含まれる文字列、iは大文字小文字を区別しない)
  • ytd-channel-name にあるテキストに特定の文字がある時、そのカードの領域ytd-rich-item-rendererを非表示にする

ちなみに、問題ない動画の説明文などに反応されると困るので、チャンネル名で判断しています。部分一致(〜を含む)で指定します。
指定する文字列はあまり汎用なものだと消す必要のないチャンネルまで消してしまう可能性があります。気をつけて。

注意点と限界

  • uBlock Originは「要素の非表示」であり、YouTubeのレコメンドアルゴリズム自体を変更するわけではありません。
  • YouTubeのUIやDOM構造が変更されると、フィルターが無効化される可能性があります。
  • フィルターはユーザー個別に調整する必要があります。排除リストが長くなると動作が重くなるかも。

その他にも、
動画ページの関連動画リストや、その他の場所においては機能しません。
それらも記述しようとすると、場所毎に排除リストを重複して書く必要が出てきます。
冗長だよね…

スポンサーリンク

方法2:Tampermonkeyを使う

Tampermonkeyとはブラウザの拡張機能の一つで、ユーザーがJavaScriptコードを記述して、ウェブページの動作をカスタマイズできるツールです。
これにより、ウェブサイトの表示を自分好みに変更したり、機能を追加したり、既存の機能を変更したりできます。

[公式アドオンページ]からインストールできます。

さて、こちらはもう少し複雑なことが出来ます。

アドオンをインストールしたら「新規スクリプトを追加」から追加。


// ==UserScript==
// @name         YouTube 特定チャンネル非表示(安定動作版)
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  特定の文字列を含むチャンネルの動画を非表示
// @author       Me
// @match        *://www.youtube.com/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    // ✅ ブロック対象のチャンネル名(部分一致)
    const blockedChannelNames = [
        "感動大国日本","世界が称賛JAPAN","世界が○○るニッポン"
    ];

    const blockedRegex = new RegExp(blockedChannelNames.join("|"), "i");

    // ✅ 対象となる動画カードの要素リスト
    const videoSelectors = [
        'ytd-rich-item-renderer', //ホーム/おすすめのカードに登場
        'ytd-video-renderer', //メインの動画リスト(検索結果)に使用
        'ytd-grid-video-renderer', //サブスクリプションやチャンネルページのグリッド表示
        'ytd-compact-video-renderer', //サイドバーや関連動画リスト
        'ytd-reel-item-renderer', //Shorts(リール)用カード
        'yt-lockup-view-model' //サイド関連動画
    ];

    // ✅ 対象カードからチャンネル名を取得
    function getChannelNameFromCard(card) {
        // チャンネル名の要素(複数形式あり)
        const selectors = [
            'ytd-channel-name a',      // 通常
            '#channel-name a',         // shorts 等
            '.ytd-channel-name',       // 一部検索結果
            '.yt-simple-endpoint',      // fallback
            'yt-content-metadata-view-model' //サイド関連
        ];
        for (const sel of selectors) {
            const el = card.querySelector(sel);
            if (el && el.textContent) {
                return el.textContent.trim();
            }
        }
        return null;
    }

    // ✅ ブロック処理
    function hideBlockedVideos() {
        videoSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(card => {
                if (card.dataset.ytChecked) return;
                card.dataset.ytChecked = "true";

                const channelName = getChannelNameFromCard(card);
                if (channelName && blockedRegex.test(channelName)) {
                    card.style.display = 'none';
                    console.log("🚫 非表示: ", channelName);
                }
            });
        });
    }

    // ✅ 初回 + SPA 対応
    const observer = new MutationObserver(() => {
        setTimeout(hideBlockedVideos, 200);
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // ✅ 初回読み込み後にも実行
    setTimeout(hideBlockedVideos, 1000);
})();

コピペしたら保存して、
「ブロック対象のチャンネル名」の部分に、ブロック(非表示)したいチャンネル名を追加していけばokです。
有効化するのも忘れずに。

これでyoutubeを開いたときに、いらんフィードを非表示にしてくれます。

コンソールを開けば
非表示: チャンネル名
と出るので機能してることがわかります。
コンソール

スッキリ。

注意点

  • こちらも「要素の非表示」であり、YouTubeのレコメンドアルゴリズム自体を変更するわけではありません。
  • YouTubeのUIやDOM構造が変更されると、フィルターが無効化される可能性があります。
  • タグ要素は環境によって変わることもあるようです。対象とする要素はユーザー個別に調整する必要があるかもしれません。
スポンサーリンク

まとめ

これで無事に、見たくないチャンネルの動画フィード、不快なサムネを非表示にできました。

最初はuBlock Originで設定したのですが、痒いところに手が届かないと言いますか、あともうちょいが届かない。
例としては3つほど”架空のチャンネル名”をあげていますが実際はもっと多いです。というか多すぎです。似たような動画ばっかりどうなってんだ。

そんな長ったらしいチャンネル名群を、複数行に書くのは精神衛生上よろしくありません。

そこで実は今回初めて Tampermonkey を使ってみました。
コードも実はChatGPTに手伝ってもらっています。AI動画を排除するためにAIを使うっていうね。ま、そういうもんだよね。うん。

とりあえずスッキリしたので良しとします。
以上。

コメント

タイトルとURLをコピーしました