どんなツイートにも画像を自動的に付けるwebサービス #pictureadd を作ったらヒットした

phpの技術を高めるためになにか作品を作ることになって、題材を考えてたら、Twitterの文章に関連した画像を張り付けてくれるようなサービスを作ったら面白いんじゃないかと思い立った。

http://pictureadd.matatsuna.net/


実装手順

1. Twitterにログイン
2. ツイートする文章を打ち込む
3. Yahoo!のテキスト解析にあるキーフレーズ抽出apiでキーワードを抜き出す
4. 関連度の高いキーワードで画像の検索を行う
5. 結果勝手にツイート

実装方法

他人のアカウントでOAuth認証して画像付きツイートする

記事を探してもこれと言ったものが見つからなかったので、前回使用したライブラリーの記事をよく探してみました。
前回の記事
ハッシュタグを固定して連続ツイートできる pinhashtag をphpで作った - matablo
そうしていたら以下の記事を見つけました。

ログインページを作る方法
qrbys.hatenablog.com

画像付きツイートをする方法
qiita.com

この二つを合わせれば行けるのではないのかと踏んでやってみたら、あっさりツイートできた。
(ツイートするところを少しいじるだけ)

キーワード抽出

何度もお世話になってるいつものapiです。
http://developer.yahoo.co.jp/webapi/jlp/keyphrase/v1/extract.htmldeveloper.yahoo.co.jp
phpからsimplexml_load_fileでxmlを読み込みました。

画像を検索する

phpでスクレーピングをしました。
初めのころは1つのキーワードで検索してましたが、現在は全てのキーワードで検索してます。
最近のアップデートで高速化を図りました。パースにライブラリーを使用することで10秒弱に短縮されました。

たくさんの反響





正直ここまで広く使われるとは思ってませんでした。
拡散した先がセキュリティ、競プロ、他大なので余計ハラハラドキドキで見守ってました。
最終的にはこのような感じになりました。
一気に使われて一気に収束しました。
ネットの拡散力の怖さを実感しました。
アクセス多すぎてazureの制限に引っかかってたけど、自分が作ったものを他人に使ってもらえることは嬉しい!

ツイートをまとめました!
togetter.com

今後の予定

この3つを夏を目標に開発して公開できたらいいなと思ってます。

===

変更・改良 (2018/08/17)

  • ヒットした画像が多かった場合はそのまま使用
  • 認証を全廃し、Twitter Cardを使用