2014 . 06 . 11

フレキシブルに活用できるTwitterのフィードジェネレーター『TWS-Feed 2』

以前当サイトで公開したもので、最近になってTwitterのデザイン変更に伴い動かなくなっていたYahoo! PipesのTWU-Feed(指定ユーザーTwitterフィード)の対応と同時に、やはり最近になって一部不具合が出ているTWS-Feed(Twitter検索フィード)の修正を兼ねて新しいバージョン『TWS-Feed 2』を製作しました。


TWU-Feedに関してはTwitter検索の方でキーワードに「From」演算子を用いることで、指定アカウントのツイートだけを得ることができ代用が利くため、今回のバージョンでTWS-Feedと統合することにしました。

また、検索フィードに統合したことにより、指定アカウント内のツイートで検索機能が使えいろいろなフィルタリングが可能になりました。

例えば、当ブログのアカウント『@kconf』ではハッシュタグを使ってエントリーのカテゴリーを明記していますが、上の例のように[Target User]を「@kconf」とし[Keyword]に「#design」などと指定すればdesignカテゴリーだけのツイートのみのフィードが作成できることを意味します。

また、[Contents Type]を選択して写真や動画のツイートにフィルタリングしたりという使い方もできるかと思います。

もちろん[Keyword]で何も指定しなければ指定したアカウントのすべてのツイートが対象になり、最新のツイートをそのまま得ることができます。


一方、従来のTWS-Feedとしてもいくつかの改善点があります。

一つは埋め込み画像が表示されやすくなったことと、Instagramの写真に対応したことです。

(Twitter Cardsなどスクリプトを使って動的に表示される写真やタイムライン上で閉じた状態にある写真に関しては表示することはできません)


もう一つは取得するタイムラインのモードで、デフォルトの[new]では新しいツイート順で機械的に取得するのに対し、[top]を選択すると注目度の高いトップツイートを優先して取得することができます。

リツイート数なのかフォロワー数なのか、何を持って「トップツイート」としているかは定かではありませんが、検索にヒットしただけのあまり価値のないツイートを除外するある種のノイズフィルターとしてそれなりの働きをしそうです。

他方、[top]の検索結果は一定時間タイムライン上に停滞するため更新される頻度は低いですが、それでもRSSリーダーぐらいの更新頻度(1時間程度)にはむしろそちらの方が向いているかもしれません。


以下、テストとして実際の出力結果のサンプルをいくつか載せておきます。

「@kojiharunyan」アカウント指定(FeedBurnerで表示

「#AKB48」検索+動画フィルター(FeedBurnerで表示

「#AKB48」検索+画像フィルター(Feedlyで表示

作り手のボヤキ

さて、今回はただ不具合を直すだけでなくいろいろ機能追加しようと欲をかいたせいで無駄に時間がかかってしまいました。

その割りには当初考えていたことの半分も達成できず、費やした時間のほとんどは徒労に終わるという何とも情けない結果となりました。

計画ではリツイートやお気に入りの数でフィルタリングする機能を実装しようと考えましたが、いざ作ってテストしてみるとこれがあまり意味のないことが分りました。

というのも、リツイートやお気に入りが付くのは最低限の時間が必要で、これらが蓄積されるころには取得する20件のタイムラインから消えているのがほとんどで、よほど流れの遅いツイートならともかくこの方法でフィルタリングすると1件もヒットしなくなることがほとんどというありさまでした。

まぁ、これに関しては前述のタイムラインのモードにより注目度の高いツイートにフォーカスをあてることもできるようですし、ツイートの価値判断を自動で行ない重要なツイートだけを抽出するようなことはもはや専門アプリの行なうことで、Yahoo! Pipesでやる仕事を超えているのかな、と改めて思います。


結局のところウェブでの閲覧状態をRSSリーダーに完全な状態で適用することが目標なわけで、それに多くの時間を費やしているわけですが、なかなかうまくいきません。

例えばTwitter CardsのコンテンツなどもURLはスクレイピングできるので、あとは<iframe>にセットするだけですが、如何せんYahoo! Pipesはセキュリティーの関係上<iframe>を出力することができず、動画などは<iframe>の代わりに<embed>を使うという裏技が利きますが、<embed>にHTMLを入れることはできません。

Twitter CardsのURLに個別にアクセスしHTMLをスクレイピングして概要に挿入することも理屈としてはできそうですが、現実的に考えれば大変な処理になりそうです。

処理を最小限に保ちつつ、それでいて効果的な機能の実装というのは中々難しいものです...


それから、悩ましいのがショートURLに関してで、「#AKB48 youtu.be」というキーワードに動画フィルターを入れた上記2番目の表示サンプルでも分るように埋め込み動画になっているものとそうでないものがあります。

こちらでは「youtu.be/***」や「youtube.com/***」というリンクの文字列を読み取って埋め込み動画に置換えているわけですが、これを投稿するクライアントによってはわざわざ独自のショートURLに変換してしまうようで、こうされてしまうともうやりようがないわけです。

ところが、Twitterの検索エンジンからはショートURLの実体が見えるらしく、実際ツイート内に「youtu.be/***」のような文字列がなくても検索結果に登場する結果、このような変換できるもの/できないものがでてくるというわけです。


もっとも、このように画像や動画などのメディアコンテンツの表示性にこだわってみたとしても、読み込むRSSリーダーによっては期待通りに表示できなかったりすることもあるのが残念なところで、これに関してはRSSリーダー側の問題でもあるためこちらが対応することはできません。

まぁ、「RSSなどタイトルとリンクさえあればいいので...」というサッパリした方にとっては何の問題もないと思いますが...


TwiiterのHTMLはいくつものパターンがあり、ごく数回のテストしか行なっていないのが現状で、おそらく何らかのエラーや不具合が生じる可能性が少なくありませんが、何かあればお気軽にご報告頂ければできる範囲で対応します。


追記

2015.10.01

Yahoo!Pipesのサービス終了に伴い正常に機能しなくなりました。