Google Cloud FunctionsでTwitter検索のRSSフィードを作る
Twitterの検索結果をRSSフィードで提供するサービスはいくつかありますが、リフレッシュ間隔がいまいちだったのでGoogle Cloud Functionsで自作することにしました。
Twitter Search APIの結果をRSSフィードに変換して返して、SlackでRSSフィードを購読します。
Twitter APIへのアクセスやRSSフィードの生成には以下のモジュールを利用することにしました。
Cloud Functionsでは管理コンソールからエディタでindex.js
とpackage.json
を直接編集できるので便利です。
下記のようなスクリプトを書きます。
exports.search = (req, res) => { const { id } = req.query; if (id) { const client = new Twitter(credential); // idユーザのツイートを検索する client.get('search/tweets', {q: `from:${id}`}).then(tweets => { const feed = new Feed({ id: id, title: `${id}'s Tweets`, }); // フィードに追加する tweets.statuses.forEach(tweet => feed.addItem({ id: tweet.id, title: tweet.text, date: new Date(tweet.created_at), })); res.status(200).contentType('application/xml').send(feed.rss2()); }); } else { res.status(400).end(); } };
あらかじめTwitter APIのAPIキーを取得しておく必要があります。今のところ管理コンソールでは実行時の環境変数を設定できないようなので、ソースコードにAPIキーを直書きしています。
デプロイしたらURLに ?id=username
を付けてアクセスしてみましょう。RSSフィードが表示されるはずです。
ソースコードを下記に置いているのでご参考まで。