ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

Twitterのタイムライン上の特定のプロモツイートを非表示にする方法

   

見たくないプロモツイートをあらかじめ非表示にしたい

How to block specific promoted tweet 00006

Twitterは主にWeb版を利用しているのですが、最近目に余るプロモツイートが表示されて気が滅入っていました。

どんなプロモツイートが嫌なのかは、冒頭の画像から推察してください。

Twitterのタイムラインは基本的に信頼を置く人からのツイートやリツイートで構成されているため、そのつもりで読むのですが、期待を裏切ってイラっとするプロモツイートだったときのガッカリ感といったらありません。

プロモツイートかどうかは、ツイート最下段の「プロモーション」の文字の有無を確認しないと判断できません。上から読んでいくので、プロモツイートかどうかが分かるのは、プロモツイートを読んだ後です。

「期待」→「裏切り」→「期待」→「裏切り」この繰り返しが、心を蝕んでいきます。

せめてプロモツイートは地色をちょっと変えるなど、読む前から心の準備ができるようにしておいてほしいものです。

「× 非表示にする」で非表示にしても後から来る別の広告は表示されてしまい、「× 非表示にする」をクリックすることの意味は見たことの意思表示ぐらいにしかなっていないため、二度と見たくないプロモツイートを常時非表示にする方法を考案してみました。

Webブラウザ拡張のNinjaKitを利用

ページロード時に、任意のJavaScriptを実行するWebブラウザ機能拡張/拡張機能であるNinjaKitを使って実現してみました。

NinjaKit

NinjaKitにはGoogle Chrome用の拡張機能と、Safari用の機能拡張があります。

Firefox用のNinjaKitはありません。Greasemonkeyでは動作がおかしいことは確認しています。

UserScript 「PromotedTweetsFilter」

NinjaKit用のUserScriptは以下です。

// ==UserScript==
// @name PromotedTweetsFilter
// @namespace http://hitoriblog.com
// @include https://twitter.com/*
// @require https://code.jquery.com/jquery-2.2.3.min.js
// ==/UserScript==
var blockList = ["@hoge_no_hoge", "@matome_matome"];
var ngWord = ["俺氏", "悲報"];

function filterThemOut() {
	var promos = $(".stream-item:has('.Icon--promoted')");
	if (promos.length > 0) {
		promos.each(function (index, element) {
			//console.dir($(element).find(".tweet-text").text());
			//console.dir($(element).find(".username").text());
			var tweetText = $(element).find(".tweet-text").text();
			var username = $(element).find(".username").text();
			if (blockList.includes(username)) {
				element.remove();
				//console.dir("removed");
				return true; // continue;
			}
			$.each(ngWord, function (index, word) {
				if (tweetText.includes(word)) {
					element.remove();
					//console.dir("removed");
					return true; // continue;
				}
			});
		});
	}
}

filterThemOut();

$(document).bind('DOMNodeInserted', function (e) {
	var element = e.target;
	if (element.nodeName == "LI") {
		filterThemOut();
	}
});

設定方法

まずは、NinjaKitのインストールを済ませておきます。

NinjaKitの設定画面の表示

設定のために、設定画面を表示します。

Google Chromeでは、ウインドウ右端のNinjaKitのアイコンをCtrl+クリック、ないしは右クリック。

表示されるメニューの中から「オプション」を選択。

How to block specific promoted tweet 00001

Safariでは、アドレスバー左のNinjaKitのアイコンをクリックすると、設定画面が表示されます。

UserScriptの新規作成と貼り込み

設定画面が表示されたら「Scripts」タブを表示。

「Add new script」ボタンをクリック。

How to block specific promoted tweet 00002

NinjaKitの編集画面に上に掲載したUserScript「PromotedTweetsFilter」を貼ります。

How to block specific promoted tweet 00003

UserScriptの書き換えと有効化

UserScript中の、配列、blockListと、ngWordを自分用に書き直します。

var blockList = ["@hoge_no_hoge", "@matome_matome"];
var ngWord = ["俺氏", "悲報"];

「blockList」には、非表示にしたいプロモツイート発信アカウントを羅列。

「ngWord」には、非表示にしたいプロモーションの本文中に含まれる単語を羅列します。

0個、1個、2個、3個連ねて書いた場合の書式を例示しておきます。

var blockList = [];
var blockList = ["@hoge_no_hoge"];
var blockList = ["@hoge_no_hoge", "@matome_matome"];
var blockList = ["@hoge_no_hoge", "@matome_matome", "@are_kore_sore"];

var ngWord = [];
var ngWord = ["俺氏"];
var ngWord = ["俺氏", "悲報"];
var ngWord = ["俺氏", "悲報", "クソワロタ"];

「blockList」と「ngWord」は、対象となるプロモツイートが該当するよう、どちらかだけを指定すればOKです。

「blockList」と「ngWord」を書き換えたら「save」ボタンをクリック。

ここでTwitterをリロードすると、機能し始めているはずです。

 - Twitter

dropbox_sale_banner evernote_sale_banner_03