2013 . 08 . 11

Twitter検索や特定ユーザーのTLをRSSで配信するフィードジェネレーター

前回のGoogle検索フィードに引き続き、同じような趣旨で今回はTwitterのタイムラインをRSSで出力するジェネレーターをYahoo! Pipesで作ってみました。

使い方により指定キーワードのTwitter検索をフィード化、あるいは特定アカウントのタイムラインをフィード化することができます。


最終更新日:2014/11/23 TWS-Feed 2.2:Twitterタイムラインの汎用フィード

使用方法

検索フィードとして利用する場合は【Keyword】にキーワードを指定して[Run Pipe]をクリック、結果が表示されたら「Get as RSS」をクリックするとRSSが出力されるので、そのURLを適宜RSSリーダーに登録して下さい。

検索には下記のオプション設定によって異なる結果やフィルタリングが反映されます。

一方、特定アカウントのフィードが希望の場合には【Target User】に「@kconf」という風にTwitter名を指定すればそのアカウントだけのツイートを得ることができます。

「@user1 @user2 @user3」という具合に半角スペース区切りで複数指定することも可能で、指定されたアカウントのすべてが新しい順に一つのタイムラインとしてまとめて出力させることができます。

これらアカウント指定した場合でも【Keyword】でのキーワード指定も有効で、同様に下記【Contents Type】や【Engagement】を使ったフィルタリングの併用も可能です。

設定項目

【Target User】

  • 無指定 - すべてのツイートを対象
  • @{username} - 指定した{username}のツイートを対象
    半角スペース区切りで複数指定可)

【Keyword】

  • 検索キーワードを指定
    (【Target User】の指定がある場合は無指定でも可)

【Timeline Sort】

  • new - 常に最新ツイートを対象
  • top - 最近の注目度の高いツイートを対象
    (フィードアイテムは時間順にソートされます)

【Language】

  • 検索対象言語
    (例:ja=日本語、en=英語、無指定=すべての言語)
    (【Target User】の指定がある場合は無視される)

【Contents Type】

  • 1 - すべてのツイート
  • 2 - 画像のリンクが含まれるツイート
  • 3 - 動画のリンクが含まれるツイート
  • 4 - ニュース系のリンクが含まれるツイート

【Engagement】

  • r:{number} - {number}以上のリツイート数を有すツイート
  • f:{number} - {number}以上のお気に入り数を有すツイート
  • m:{number} - {number}以上の返信数を有すツイート
    半角スペース及び半角パイプ区切りで併記可)

特徴と注意点

  • フィードアイテムの出力数は最大20件まで。
  • フィード名は「TWS-Feed 2.1」として出力されるので、必要に応じてRSSリーダー側でリネームして下さい。
  • 各フィードアイテムのタイトルにはツイートのテキストを入れていますが、URLやその他リンク化されている文字列は取り除かれます
  • 各フィードアイテムの概要には各タイムラインのHTMLソースをそのまま入れています。
    (不要な要素は極力取り外しています)
  • ツイート内に含まれる一部の画像リンク(pic.twitter.com, Instagram.com)に関しては各アイテム概要に挿入されるのでRSSリーダー側で画像を表示することが可能です。
  • 【Contents Type】の指定により同じツイートでも画像が表示できる場合とできない場合があります。また、RSSリーダー側の問題で表示されないケースもあります。
  • ツイート内に含まれるYouTubeとVimeoの動画リンクに関しては埋め込みタグに置換えてアイテム概要に挿入しているのでRSSリーダーでそのまま視聴可能です。
    (Yahoo! Pipeでは<iframe>と<object>が出力できず代替手段として<embed>に動画のURLを入れて出力していますが、一部のRSSリーダーではこれに対応してなく概要に含まれる埋め込み動画が表示できるかどうかはRSSリーダー側に依存します)
  • 【Language】を無指定で「Baseball」というキーワード検索した場合には必然的に英語圏のツイートが並ぶ結果となりますが、【Language】を「ja」と指定することで日本語ツイート内の「Baseball」にフォーカスする働きがあります。
    求める検索結果に応じて適切な指定をして下さい。
  • 【Engagement】は指定数以上のリツイート/お気に入り/返信の量でフィルタリングするオプションですが、一度に複数設定することが可能です。
    例えば「r:20 f:10 m:5」と半角スペース区切りで併記すると「20以上のリツイート、且つ10以上のお気に入り、且つ5以上の返信」すべてを満たすツイートが対象になり、「r:20|f:10|m:5」などと半角パイプで区切ると「20以上のリツイート、もしくは10以上のお気に入り、もしくは5以上の返信」どれかに該当するツイートが対象が対象となります。
    (検索エンジンのトラブルにより過剰な数を指定するとエラーになる場合や、指定数を下回るツイートが検索される場合もあります)
  • このYahoo! Pipeは共用使用される関係上、利用率(トラフィック量)によっては希に障害が発生することも考えられます。
    また、何らかの利用により当方で予告無しに変更/削除する場合もありますので、そのようなことが煩わしい方はクローン(コピー)をとってご自身でご自由に運用されることをおすすめします。

使用例とヒント

一般のTwitter検索のページで検索するのと同じ動作なため、Twitterが用意している検索オプションを活用しフレキシブルなフィードが作れます。

その他、『IFTTT』を使ってフィードの更新をトリガーに何らかのアクションを実行させたりという活用の仕方もできると思います。

また、出力したフィードをそのまま利用するのではなくFeedBurnerを中継させるとトラフィックや更新間隔の最適化やフィードタイトルの変更など、いろいろな面でメリットがあるのでおすすめです。

さらに、パイプ内部を弄ればもっといろいろなことができるのでYahoo! Pipeユーザーはクローンを作って好きなようにカスタマイズしてください。

製作にあたって

さて、このようなパイプを作るきっかけになったのも、TwitterのAPIの仕様変更によってRSSが廃止されたばかりかすべてのAPIにOAuthによる認証が必須になったことが挙げられます。

少し前までは検索や特定ユーザーのパブリックなタイムラインは何の手順も踏まずURLを投げるだけで普通に取得できていましたが、今ではこれらですら七面倒くさい認証のプロセスが必須というわけです。

そもそもこのようなパブリックな情報の請求のために、認証のための個人情報を送信しなければいけないのは、むしろセキュリティ的に考えて理不尽な気もします。

そこで、昔のような気軽に使える汎用フィードというスタンスで作ってみた次第ですが、何分HTMLから直接パースするという泥臭いやり方なためページのレイアウトが変更されると機能しないという点はどうにもなりませんが、反面、APIを使用していないため余計なプロセスを考えずシンプルな造りですむのが特徴です。


更新履歴

  • 2014/11/23
    • ソース取得による不具合の修正

追記

2015.10.01

Yahoo!Pipesのサービス終了に伴いこのPipeはすでに機能しません。






#1
2013 . 09 . 08  06 : 34 AM
名無しさん

これは便利です、ありがとうございます。

#2
2014 . 01 . 23  10 : 30 AM
エレクとロト

TWS-Feedをクローンで使わせて頂いています。生成したフィードはFeedlyで読むのが日課です。
YahooPipeに関しては不勉強で申し訳ないのですが、ここ数週間の間で何故か取得できなくなりました。改めて同じキーワードを使ってフィード生成し取得Feedを眺めてみるとどうやら取得日付がおかしい?のではと思っています →"Thu, 01 Jan 1970 07:00:00 +0000" 
Feedly側でもみると、16092日前に配信されたようになってました。 お手間でなければ修正方法をご教示いただけないでしょうか。

#3
2014 . 01 . 24  07 : 57 AM
kenz0

Twitter側の日付の書式が変更されたことでpubDateが想定する形に出力できていないことが原因のようでした。
早速、上記2つのパイプはその部分を修正し、一応正常な出力を確認しましたので、この修正済みのクローンをあらためて作って使って頂くのが簡単かと思います。
尚、今使っているクローンを引き続き使用したい場合には、やはり一度クローンを作りソースを開いて変更部分を参考に修正して下さい。
(変更された部分は1番目のRegexモジュールの4から6番目のルールになります)

#4
2014 . 01 . 24  10 : 17 AM
エレクとロト

kenz0さん、早速のご対応有難うございます。修正試してみます。

#5
2014 . 05 . 30  09 : 36 PM
名無しさん

いつも便利に使わせてもらっています。
昨日か一昨日よりTWU-Feedで、RSSが取得できていません。
修正の対応をしているようでしたら、よろしくお願いします。

#6
2014 . 05 . 30  10 : 37 PM
kenz0

プロフィールページのデザイン変更が原因の不具合のようです。
大がかりな改修になりそうなので2,3日お待ち下さい。


不具合修正に留まらず根本的に仕様を見直すことにしました。新しいバージョンの公開は多少先になるのでTWU-Feedをご利用の方はとりあえず上記説明にあるようにTWS-Feedでキーワードに「from:ツイッター名」としてアカウントを絞り込めばほとんどTWU-Feedと同じ結果が得られるので、当面はそちらで代用して下さい。

#7
2014 . 06 . 10  12 : 26 AM
kenz0

あらたに製作した上記「TWS-Feed 2」としてTWU-Feedの機能を統合したのでそちらをご利用下さい。

#8
2014 . 06 . 11  12 : 44 AM
TWS-Feedユーザー

表示時間のズレの問題はpubDateにdata-timeを使えば解決するのですね、勉強になりました。ありがとうございます。

いままでこんなふうにしていました。

Regrex:
Rules in item.pubDate
replace .*?title="(\d*:\d*) (AM|PM) - (\d*) (\w*) (\d*)".*
with $1 $2 $5 $4 $3
_s__

Rules in item.pubDate
replace 12:(\d{2}) AM
with 00:$1 AM
____
Rules in item.pubDate
replace 12:(\d{2}) PM
with 00:$1 PM
____

Loop:
For each item.y:published.utime in input feel:
sinple Math:
item.y:published.utime += 25200
assign results to item.y:published.utime


#9
2014 . 06 . 11  03 : 11 PM
kenz0

そうですね。私も前のバージョンではタイムスタンプの文字列から力技でpubDateに変換していましたが、今回、Web版のTwitterでは「data-time」というHTML5の属性から直接UNIX時間を拾えることを知りました。
また、HTML5の属性はXpath Fetchモジュールで文字列として書き出した場合にデバッガ上では隠れた状態になっていますが実際には存在しており「data-time="(.*?)"→$1」みたいにしてやれば抽出できるということを発見するのに結構時間がかかりました。

#10
2014 . 08 . 21  11 : 27 AM
たろう

ナイスなパイプありがとうございます。

質問です。
特定アカウントのフィードについて。

特定アカウントの本人のみならず、リツイートまでも表示されるようです。
本人のみのツイートを取得できますか?

#11
2014 . 08 . 21  03 : 47 PM
kenz0

現在のいわゆる「公式RT」はそもそも検索TLには現れないと思うので、おそらく「非公式RT」と呼ばれているリツイートのことだと思いますが、これに関してはキーワードで「-RT」と指定することで除外することができると思います。

#12
2014 . 09 . 22  09 : 05 AM
mon1127

こんにちは。これはとても役に立っています。
ありがとうございます。
私もPopesを勉強しはじめました。
ソースをまずみて勉強しています。

質問ですが、表示件数をふやしたり、減らしたりするのは
どこで指定するのでしょうか。

100件ぐらいにしたいのですが、お時間があるときにおしえていただけないでしょうか。

#13
2014 . 09 . 22  10 : 45 AM
サンコンさん

大変便利なツールをありがとうございます。
早速、使わせて頂いているのですが、
出力されるフィードのタイトルに元ツイートの画像リンク等をそのまま表示させることは、可能でしょうか?
(元ツイートを画像リンク等も含めて、そのままフィードのタイトルとして出力可能でしょうか?)
Yahoo!Pipeはあまり詳しくない為、ご教授頂けると大変助かります。

#14
2014 . 10 . 01  05 : 22 PM
kenz0

レスが遅れて申し訳ありませんでした m(_ _)m

> mon1127さん
ソースとなるTwitterの公式ページでは20件以上の結果はスクリプトによってその都度動的に追加読み込みされるようになっている構造ですが、このようにあとからスクリプトで追加される部分に関してはをPipeで対応することが不可能なため、20件以上の結果を取得することは難しいかと思います。
一方、逆に件数を減らすことは可能で、例えばOutputの手前にTruncateモジュールを挿入して出力件数を制限してしまうのが最も簡単な方法かと思います。


> サンコンさん
「フィードのタイトル」という内容のご質問ですが、RSSフィード自体のタイトルという意味でしたら、残念ながらYahoo! Pipesはその部分に関して弄れない仕様なので不可能です。
他方、「各アイテムのタイトル」という意味でしたら、それは可能です。
過去に言及したとおり、現行ではあえてリンク化されている文字列は取り除くようにしてありますが、そのプロセスを省略すれば純粋に元のツイート内の文字列そのものすべてがタイトルになります。
ご質問では「ツイート内にある画像にリンクしたURL」のことか「Twitterで表示されている画像ソースへのリンク」のことかよく分りませんが、いずれにしてもPipeのRegexモジュールの1-2行目の項がその処理にあたる部分で、ここを弄ることで適宜編集が可能です。
詳細な変更手順などに関しては、何度かのやり取りが必要になってくることもあるので、直接メールでお問い合わせ頂ければと思います。

#15
2014 . 11 . 23  02 : 22 AM
マイク

No pipe results for TWS-Feed 2.1.
と出て21日くらいから使えなくなっているのですが

#16
2014 . 11 . 23  01 : 20 PM
kenz0

取り急ぎ修正しておきました。

#17
2014 . 11 . 24  02 : 15 AM
TWS-Feedユーザー

早速の修正版ありがとうございます。

それから、もうひとつの修正ヶ所 Regrex item.description の replace 項目の修正も必要ではないでしょうか?

Regrex:
Rules in item.description
replace http://www.orkut.gmodules.com
with https://twitter.com
g___

#18
2014 . 11 . 24  10 : 47 AM
kenz0

ご指摘の通りdescription及びlink要素内のリンク置換の変更を忘れており、只今修正を入れました。
ご報告ありがとうございました。

#19
2015 . 06 . 05  12 : 49 PM
エレクとロト

こんにちは。とても便利につかわせていただいています。ところでこのニュースは大ピンチなのでは…と思いまして。
>Yahoo、IFTTTの先駆けともなったYahoo Pipesのサービスを停止(Yahoo Mapsなど含む) | TechCrunch Japan http://tcrn.ch/1InAiOr

#20
2015 . 06 . 05  02 : 05 PM
kenz0

もう何年も更新している様子が無く、いつ終わってもおかしくないサービスと云うことで、数年前から覚悟はしていましたが、とうとうこの日が来たかという感じですね。
Pipeはこのブログの情報収集にも大いに活用しているので正直ダメージが大きいです。

#21
2015 . 06 . 12  01 : 58 PM
ごろー

こんにちは。非常に便利なので使わせていただいております。ありがとうございます。

最近、一部ツイートの取りこぼしが発生しているようです。
もし可能でしたら修正していただけると非常に助かります。
よろしくお願いいたします。

#22
2015 . 06 . 12  02 : 29 PM
kenz0

「一部のツイート」という曖昧なケースでは、こちらが同じ状況を再現するのが困難であり、またそのような時間的余裕もないため問題が発生する具体的事例などの究明はユーザー各位で行なって頂きたいと思います。
その上で問題がハッキリ特定できれば修正できることは対処いたします。

#23
2015 . 06 . 14  11 : 44 AM
もー

kenz0さんこんにちは。pipesが終了という事を知ってこちらに早速来てみました。pipesの存在はこちらで知ったのと今では重宝して常に利用していたので、残念と思ってます。代替のものをまとめたツイートをみかけるのですが、kenz0さんが作成されたリアルタイム検索との利用法などが出来るのか自分ではまだよく把握しきれてないです。
kenz0さんの方ではpipes終了に関して、近くBlog記事として投稿されたりしますか?意見等を拝見し参考にもしたいとも思っていたので、少し期待しながらBlog自体も引き続き拝見させて頂きたいと思ってます。

#24
2015 . 06 . 14  12 : 49 PM
kenz0

当サイトは特にPipes関連サイトというわけではないので、今回の件についてあまり深く立ち入るのもどうかと思っていましたが、購読者の方からそのようなリクエストがあるのであれば今後記事にするかもしれません。
たぶん只のボヤキと嘆きに終始することになるでしょうが。

#25
2015 . 06 . 14  08 : 55 PM
もー

kenz0さんありがとうございます。
お昼に投稿したもーです。
了解致しました。
自分はグラフィック方面の人間なのでBlogの内容は結構自分のアンテナにあっていて楽しんで拝見させて貰っています。
では、もしその機会が来た際にも参考にさせてもらいます。

#26
2015 . 09 . 26  05 : 49 AM
名無しさん

もしかして8月30日にこのサービス死んだんですかね?
そのようなメッセージでてるんですが…

#27
2015 . 09 . 26  10 : 45 AM
kenz0

はい。そのとおりです。
今動作しているPipeも今月30日で完全終了ということです。
ちなみにこの記事を含めて当サイトでこれまで紹介したYahoo! Pipe関連の記事は今後ほとんど意味が無くなりユーザーの混乱を招くだけなので、削除するかあるいはその旨注意書きを追記するかする予定です。