Qiita
JavaScript
userscript
tampermonkey

Qiitaのフィードから特定キーワードが含まれた投稿を非表示にするユーザースクリプト

2017/11/27追記

Qiita新デザイン(ベータ版)ではトレンドや新着一覧内に本文情報を持たなくなっているので、恐らくですが、このスクリプトは使い物にならなくなっていると思います。

はじめに

Qiitaのフィードから、ユーザが任意で指定した特定キーワードが含まれた投稿を非表示にするユーザスクリプトです。
@khsk さんの Qiitaのフィードから特定ユーザーの投稿を非表示にするユーザースクリプト を参考にして作成させていただきました。ありがとうございます。

動作検証環境

Google Chrome 61.0.3163.100
Tampermonkey 4.4

参考にさせていただいたスクリプトがgreasemonkeyで検証されているので、恐らくそちらでも動くとは思います。

コード

特定キーワード非表示スクリプト
// ==UserScript==
// @name        Qiita keyword filter for feed
// @namespace   real_yaruo
// @description フィードから特定キーワードが含まれた投稿を非表示にする
// @include     http://qiita.com/
// @include     https://qiita.com/
// @include     http://qiita.com/items
// @include     https://qiita.com/items
// @include     http://qiita.com/stock
// @include     https://qiita.com/stock
// @include     http://qiita.com/mine
// @include     https://qiita.com/mine
// @version     1
// @grant       none
// ==/UserScript==


console.time('keywordfilter');

// フィードから非表示にしたいキーワードを以下に追加する
var NG_KEYWORDS = [
    '',
];

// 変更を監視する。追加分だけには対応しておらず、毎回全チェック。
var mo = new MutationObserver(function(data1, data2) {
  var posts = document.querySelectorAll('div.item-body > p');
  Array.prototype.forEach.call(posts,function(post){
    if (post.innerHTML.indexOf(NG_KEYWORDS) != -1) {
      post.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = 'none';
    }
  });
});

var items = document.getElementsByClassName('col-sm-9')[0];
var options = {childList: true, subtree:true};
mo.observe(items, options);

console.timeEnd('keywordfilter');

おわりに

Qiitaのフィード機能には自分がフォローしているタグが紐付いた記事が新着順に表示されますが、稀に宣伝目的なのか単に理解していないだけなのかよく分かりませんが、タグと全然関連しない内容の記事だったり、利用規約をちゃんと読んでいない(と思われる)教えてクンの記事が表示されることがあり、精神衛生上あまり宜しくないケースがあります(タイトルで見て分かればまだ楽なのですが)。

後者の場合、都度都度外部の質問サイトを案内して誘導されている有志の方には本当に頭が下がる思いですが、そもそも目に触れない機能も必要としている人もきっといるよなぁと思い、@khsk さんの記事を参考にこのスクリプトを作成させていただきました。

質問を投げて回答を基に記事を再利用できるFAQとして昇華してくれるのであればまだマシで(ただそういう人は最初から質問サイトに行く)、実際は欲しい答えを貰った途端に出来ましたの返信だけ、下手するとその返信すらなくそのままドロン、というケースの方が圧倒的に多いと思われます。
私個人としても、昔利用していたマイナー言語のフォーラムが、ルールを守らない教えてクンに誰かが餌をあげたがばかりに、教えてクンが好き放題し、その結果人が離れて過疎っていったという苦い思い出があります。その時に悪貨は良貨を駆逐するというのはホントなんだなぁと強く実感しました。
個人的には初心者ウェルカムですし、人に教えるのも好きなのですが、それとルールを守らないというのはまた全然別の話ですし。

他のユーザが任意にタグの付け外しが出来るのであれば(編集リクエストは出来るようです)、質問用のタグを用意してそちらに隔離まとめる手段もあるとは思うのですが、現状ではこのようにキーワードで除外するのがモアベターかと思います。

このスクリプトが皆様の満足したQiitaライフに少しでも役立てれば幸いです。