バズったツイートまとめを作れるサービスをリリースしました!🎉
— 2z / AIメーカー開発者 (@2zn01) July 28, 2019
✅まとめたいキーワードからバズったツイートを収集
✅毎日の自動更新であなたの情報収集をサポート!
✅ツイッター分析のマーケティングツールにも!
ツイッターから知りたい情報をまとめよう!
📝ツイレポhttps://t.co/oFiPYwT34N pic.twitter.com/TbOTUMzwim
こんにちは、2z(Twitter: @2zn01 )です。
普段はWeb系の開発会社で会社員として働いていますが、最近は業務で全然コードをかけていないので、週末に趣味で個人開発をしています。
私自身、普段あまり時間がない中でどう情報収集したらよいか困っているということもあり、エンジニアらしく技術で何とか解決するべく、ツイッターを活用して、エンジニアの情報収集を助けるキュレーションサービスを作ってみました。
作ったもの
「ツイレポ」という「ツイッターで話題の情報をまとめられる」ツイッターまとめサービスを作りました。
■ツイレポ
https://twirepo.com/
「ツイレポ」では、ツイッターで話題のツイートからあなたの知りたい情報だけに絞ったまとめを作成することができます。
また、作成したまとめは毎日自動更新され、あなたの効率的な情報収集・分析をサポートします。
バズったツイートまとめを作れるサービスをリリースしました!🎉
— 2z / AIメーカー開発者 (@2zn01) July 28, 2019
✅まとめたいキーワードからバズったツイートを収集
✅毎日の自動更新であなたの情報収集をサポート!
✅ツイッター分析のマーケティングツールにも!
ツイッターから知りたい情報をまとめよう!
📝ツイレポhttps://t.co/oFiPYwT34N pic.twitter.com/TbOTUMzwim
主要なページの画面イメージは以下になります。
トップページ
まとめ編集ページ
ツイートまとめを作成するページです。
まとめを作る際のツイート収集にはツイッターの検索演算子も使えます!
ツイートまとめページ
収集されたツイートまとめを見ることができます。
まとめたツイートは以下の基準で並び替えを行うことができ、ランキング形式で情報を確認することができます。
- 新しいツイート順
- 古いツイート順
- リツイート数の多い順
- リツイート数の少ない順
- いいね数の多い順
- いいね数の少ない順
- 引用数の多い順
- 引用数の少ない順
- リプライ数の多い順
- リプライ数の少ない順
- リツイート速度の大きい順
- リツイート速度の小さい順
- いいね速度の大きい順
- いいね速度の小さい順
- 引用速度の大きい順
- 引用速度の小さい順
- リプライ速度の大きい順
- リプライ速度の小さい順
- リツイート率(フォロワー)の大きい順
- リツイート率(フォロワー)の小さい順
- いいね率(フォロワー)の大きい順
- いいね率( フォロワー)の小さい順
- 引用率(フォロワー)の大きい順
- 引用率(フォロワー)の小さい順
- リプライ率(フォロワー)の大きい順
- リプライ率(フォロワー)の小さい順
- リツイート速度率( フォロワー)の大きい順
- リツイート速度率(フォロワー)の小さい順
- いいね速度率(フォロワー)の大きい順
- いいね速度率(フォロワー)の小さい順
- 引用速度率(フォロワー)の大きい順
- 引用速度率(フォロワー)の小さい順
- リプライ速度率(フォロワー)の大きい順
- リプライ速度率(フォロワー)の小さい順
ツイート分析ページ
さらにまとめたツイートをグラフで視覚的に分析することもできます。
これでツイートがバズる要因や傾向なども分析できるようにしてみました!
何で作ったの?
もともと「ツイレポ」は2018年の年末にリリースしていました。
- ツイッターを活用したエンジニアの情報収集を助けるキュレーションサービスを作ってみた
https://qiita.com/2zn01/items/58f472ff13b9702a0e65
上記の記事にもある通り、「ツイレポ」は作った理由は以下の通りです。
皆さんは情報収集って何でしていますか?
GIGAZINE、ITmediaなどの様々なネットメディア、それからはてなブックマーク、技術記事であればQiita、はてなブログ、等々、あげると切りがありません。
忙しいエンジニアにとっては、情報収集のためにすべてに目を通すのは難しいです。
きちんと情報収集されている方だと、RSSリーダーなどを使って自分の欲しい情報を効率的に得ている人もいるかと思います。
ただ、僕の場合、そこまでのことはやっておらず、はてなブックマークで話題になっている情報にさっと目を通して終わりというのがほとんどでした。
少ない時間の中でいかに効率良く情報収集できるか、を解決するために、今回自分でサービスを作ってみることにしました。
僕が目をつけたのは、ツイッターです。
ツイッターは自分がフォローした人がつぶやいた情報を見ることができますが、タイムラインではすべてを追うのは難しいです。
しかし、ツイートにはリツイート、いいね、リプライといった、他の人がつけた評価みたいなものがつけられています。リツイート数やいいね数が多いものほど、話題になっている情報ととらえることができます。
この話題となっているツイートをキュレーションすることで、効率的に情報収集ができるのでは!? と考え、このサービスを作り始めました。
ただ、このときは私が予め用意したジャンルに関するツイートしかまとめることができませんでした。
そこで、今回のリリースでは自分の知りたい話題に絞ってツイートをまとめることができるようにしました!
使用技術
Linux
クラウドのホスティングはAmazon Web Searvicesで、EC2インスタンスでサーバを立てています。
サーバのOSはLinuxでCentOSの7系を使っています。
Apache
webサーバはApacheを使っています。
Nginxもありますが、Apacheは普段から使っており、設定も把握していたため、いつも通りの安定の選択としました。
MySQL
Amazon RDSを使ってMySQLを立てています。
PHP
サーバ側のプログラムはPHPを使って実装しました。
jQuery
クライアント側のJavaScriptは、jQueryを使って実装しました。
ツイッターAPI
ツイートの情報を取得するために使用しています。
使い方については、後述させて頂きます。
cron
cronを使って定期的にバッチを走らせてツイートを収集しています。
ツイッターAPI
ツイートはツイッターAPIを使って取得しています。
エンドポイント
GET
https://api.twitter.com/1.1/search/tweets.json
リクエストパラメータ
パラメータ | 説明 |
---|---|
q | ツイートを検索するワード。検索演算子も利用できます |
geocode | 緯度,経度,範囲(半径)を指定。 |
lang | 検索対象とする言語を指定。 |
locale | 検索に使用する言語を指定。 |
result_type | ツイート結果をpopular(話題のツイート)、recent(最新のツイート)、mixed(すべてのツイート)の中から指定。 |
count | ツイートを取得する数を指定。 |
until | yyyy-mm-ddの形式で検索期間のエンドを指定。 |
since_id | 検索対象とするツイートIDのスタートを指定。 |
max_id | 検索対象とするツイートIDのエンドを指定。 |
include_entities | レスポンス値にentitiesプロパティを含めるかを指定 |
また、上記のqパラメータには以下の検索演算子を使うことができます。
これはツイッターの検索でも同様に使用できますので、ぜひお試しください。
検索演算子 | 説明 |
---|---|
min_retweets:○○ | リツイート数が○○以上のツイートを取得できます。 |
min_faves:○○ | いいね数が○○以上のツイートを取得できます。 |
min_replies:○○ | リプライ数が○○以上のツイートを取得できます。 |
@○○ | ○○(ユーザーID)さんに関するツイートを(ユーザーがしたツイートも、ユーザーへのリプライ、メンションも含め)取得できます。 |
from:○○ | ○○(ユーザーID)さんがしたツイートを取得できます。 |
to:○○ | ○○(ユーザーID)さんへのツイート(リプライ、メンション)を取得できます。 |
since:yyyy-mm-dd | yyyy年mm月dd日以降のツイートを取得できます。 |
until:yyyy-mm-dd | yyyy年mm月dd日までのツイートを取得できます。 |
filter:images | 画像が含まれるツイートを取得できます。 |
filter:videos | 動画が含まれるツイートを取得できます。 |
filter:links | リンクが含まれるツイートを取得できます。 |
filter:news | ニュースに関するツイートを取得できます。 |
filter:periscope | ライブ配信に関するツイートを取得できます。 |
filter:verified | 認証アカウントのツイートを取得できます。 |
filter:safe | 不適切でないツイートを取得できます。 |
source:○○ | ツイートの投稿元(クライアント)を指定して取得することができます。○○には「Instagram」などが使えるようです。 |
near:○○ within:××km | ○○の場所、半径××km以内でツイートされたものを取得できます。 |
geocode:○○,△△,××km | 緯度○○、経度△△、半径××km以内でツイートされたものを取得できます。 |
lang:○○ | ツイートの言語を指定して検索することができます。日本語の場合は「ja」を指定します。 |
"○○ ××" | 「○○ ××」に完全一致したツイートのみ取得できます。 |
:) | ポジティブなツイートを取得できるみたいです。 |
:( | ネガティブなツイートを取得できるみたいです。 |
- | 条件の先頭に「-」をつけると否定の条件にすることができます。これを使うことで除外したツイートを取得できます。 |
OR | 通常は半角スペースで複数のワードを入力するとAND検索となりますが、ORを使うことでOR検索をすることができます。 |
話題の(バズった)ツイートを収集する方法
話題の(バズった)ツイートの取集方法ですが、上で紹介したツイッターAPIの検索演算子にある「min_retweets」と「min_faves」を使って、以下の流れで行っています。
-
- リツイート数が 10000 以上 または いいね数が 10000 以上のツイート収集(すべて収集したら次へ)
↓
-
- リツイート数が 1000 以上 または いいね数が 1000 以上のツイート収集(すべて収集したら次へ)
↓
-
- リツイート数が 100 以上 または いいね数が 100 以上のツイート収集(すべて収集したら次へ)
↓
-
- リツイート数が 10 以上 または いいね数が 10 以上のツイート収集(すべて収集したら次へ)
↓
-
- リツイート数が 1 以上 または いいね数が 1 以上のツイート収集(すべて収集したら終わり)
※リツイート数といいね数がともに1未満のツイートは収集していません
上記の要領でツイートを収集することで、リツイート数やいいね数が多いツイートから収集することが可能です。
リリース後のSEO対策について
2018年末にこのサービスはリリースしましたが、特にバズったりもせず、1日のユーザー数は数人~数十人程度でした。SNSでの流入だけでは難しいと思い、年末年始でSEO対策を勉強しながら、「ツイレポ」に対策を講じることにしました。
その結果、検索流入が増やすことができましたので、SEO対策として実際にやったこと、その成果をご紹介したいと思います。
※ただ、SEO対策としてやったことは基本中の基本かとは思いますので、ご承知おき頂ければと思います。
SEO対策としてやったこと
1. metaタグ系はちゃんと設定
以下のように基本的なmetaタグを設定しました。
2. メニューにリンクをつける(実際はJSで遷移させていたけど、リンクにした)
3. h1タグに主題を入れる。
4. URLのパラメータは ~/?key=value ではなく、 ~/key/value の表現にする
効果のほどは分かりませんが、もともとクエリパラメータが ~/?key=value だったところを静的なURLに見えるように、 ~/key/value に変更しました。
5. パンくずをつける
6. XMLサイトマップ、robots.txtの整備
6-1. XMLサイトマップ
6-2. robots.txt
7. サチコ(Google Search Console)でXMLサイトマップの送信
8. パンくずやナビゲーションなどの構造化マークアップ (JSON-LD&microdata)
9. 同じジャンルの関連ツイートを表示するように対応(内部リンク対策)
10. PubSubHubbub対応
リアルタイムにサイトの更新情報をGoogleに通知する仕組みです。
ツイレポはPHPで作っていましたので、以下のライブラリを使って、実装しました。
- joshfraser/pubsubhubbub-php
https://github.com/joshfraser/pubsubhubbub-php
SEO対策の成果
2018年末にリリースし、2019年初に取り組んだことなので、ちょっと情報は古いですが、以下に成果をまとめさせて頂きます。
■Googleインデックス数の遷移
1/23まではXMLサイトマップ、PubSubHubbub対応のおかげか、インデックス数は一気に増えてましたが、100万を超えた後は減り、また徐々に増加してるという感じです。
日付 | インデックス数 |
---|---|
1/7 | 約 10,000 件 |
1/8 | 約 19,400 件 |
1/10 | 約 115,000 件 |
1/11 | 約 280,000 件 |
1/12 | 約 469,000 件 |
1/22 | 約 785,000 件 |
1/23 | 約 1,100,000 件 |
1/31 | 約 741,000 件 |
■検索での表示回数の遷移
インデックス数の増加とともに検索での表示回数も増えていきました。
1/23以降にインデックス数の減少により検索の表示回数も一時的に減少しましたが、その後、また伸びていきました。
日付 | 表示回数 |
---|---|
1/7 | 3,532 |
1/8 | 5,995 |
1/9 | 13,187 |
1/10 | 22,488 |
1/11 | 37,870 |
1/12 | 51,150 |
1/13 | 56,488 |
1/14 | 58,549 |
1/15 | 59,138 |
1/16 | 57,445 |
1/17 | 59,784 |
1/18 | 64,416 |
1/19 | 68,433 |
1/20 | 69,816 |
1/21 | 73,754 |
1/22 | 75,008 |
1/23 | 74,630 |
1/24 | 70,944 |
1/25 | 76,098 |
1/26 | 79,311 |
1/27 | 83,039 |
1/28 | 94,417 |
■検索からのクリック数の遷移
インデックス数の増加とともに検索からのクリック数も増えていきました。
検索での表示回数と同様に、1/23以降に一時的に落ち込んだものの、その後、検索からのクリック数も伸びていきました。
日付 | クリック数 |
---|---|
1/7 | 121 |
1/8 | 285 |
1/9 | 517 |
1/10 | 930 |
1/11 | 1,585 |
1/12 | 2,270 |
1/13 | 2,436 |
1/14 | 2,478 |
1/15 | 2,331 |
1/16 | 2,270 |
1/17 | 2,386 |
1/18 | 2,933 |
1/19 | 2,918 |
1/20 | 2,859 |
1/21 | 2,935 |
1/22 | 2,800 |
1/23 | 2,892 |
1/24 | 2,776 |
1/25 | 3,002 |
1/26 | 3,263 |
1/27 | 3,353 |
1/28 | 3,405 |
ツイレポでまとめる際のキーワード例
今回リニューアルした「ツイレポ」では自分の知りたい情報のキーワードを登録することで、自分の知りたい情報に絞った話題のツイートを収集することができます。
「ツイレポ」でもともと収集していたジャンルごとのツイートは以下の条件で収集していましたので、収集時のキーワードを考える際のご参考にして頂ければ幸いです。
トップ
lang:ja -filter:verified
日本語のツイートをすべて取得します。
ただし、フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。
ニュース
filter:news lang:ja
ニュースに関するツイートをすべて取得します。
ニュースでは信頼性の高い認証アカウントのツイートも含めています。
画像
filter:images lang:ja -filter:verified
画像が含まれるツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。
動画
filter:videos lang:ja -filter:verified
動画が含まれるツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。
ライブ配信
filter:periscope lang:ja -filter:verified
ライブ配信に関するツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。
VTuber
#vtuber lang:ja
以下ワードのリンクが含まれたツイートを取得します。
- #vtuber
ネットメディア
(gigazine.net OR gizmodo.jp OR nlab.itmedia.co.jp OR rocketnews24.com OR getnews.jp OR wired.jp OR itmedia.co.jp OR ggsoku.com) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
面白メディア
(omocoro.jp OR labaq.com OR dailyportalz.jp OR curazy.com) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
エンタメ
(oricon.co.jp OR mantan+web.jp OR nikkan*spa.jp OR wpb.shueisha.co.jp OR narinari.com OR news.mynavi.jp OR cinra.net OR rockinon.com) filter:links lang:ja
※半角ハイフン「-」がURLに含まれると、うまく検索できないケースがあったため、「+」や「*」に置き換えているものがあります。
以下メディアのリンクが含まれたツイートを取得します。
- ORICON NEWS
- MANTANWEB(まんたんウェブ)
- 日刊SPA!
- 週プレNEWS
- ナリナリドットコム
- マイナビニュース
- CINRA.NET
- rockinon.com(ロッキング・オン ドットコム)
ライフスタイル
(nanapi.jp OR enuchi.jp OR locari.jp OR sheage.jp) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
女性向けメディア
(men-joy.jp OR mainichikirei.jp OR otajo.jp OR youpouch.com OR mdpr.jp OR japan.techinsight.jp) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
マーケティング
(liginc.co.jp OR bazubu.com OR ferret-plus.com OR seojapan.com OR webtan.impress.co.jp OR liskul.com OR gaiax-socialmedialab.jp OR seolaboratory.jp OR smmlab.jp OR dmlab.jp OR promonista.com OR cont+hub.com) filter:links lang:ja
※半角ハイフン「-」がURLに含まれると、うまく検索できないケースがあったため、「+」や「*」に置き換えているものがあります。
以下メディアのリンクが含まれたツイートを取得します。
スタートアップ
(japan.cnet.com OR jp.techcrunch.com OR thebridge.jp OR techwave.jp OR techable.jp OR thestartup.jp OR turnyourideasintoreality.com) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
ブログ
(hatenablog.com OR hatenablog.jp OR hateblo.jp OR hatenadiary.com OR hatenadiary.jp OR ameblo.jp OR blog.livedoor.jp OR medium.com OR blogos.com OR blogger.com OR exblog.jp OR cocolog-nifty.com) filter:links lang:ja
以下ブログのリンクが含まれたツイートを取得します。
イラスト
(#pixiv OR pixivision) filter:images lang:ja
以下ワードのリンクが含まれたツイートを取得します。
- #pixiv
- pixivision
いらすとや
irasutoya.com filter:images lang:ja
以下サイトの画像が含まれたツイートを取得します。
漫画
(mangaz.com OR sukima.me OR bookstore.yahoo.co.jp OR comic-walker.com OR manga-bang.com OR #pixivコミック OR manga-zero.com OR cmoa.jp OR sokuyomi.jp OR renta.papy.co.jp OR mangabox.me OR comico.jp OR dokuha.jp OR comic-meteor.jp OR mangag.com OR comic-polaris.jp)
以下サイトのリンクが含まれたツイートを取得します。
- マンガ図書館Z
- スキマ
- Yahoo!ブックストア
- コミックウォーカー
- マンガBANG!
- #pixivコミック
- マンガZERO
- コミックシーモア
- ソク読み
- Renta!
- マンガボックス
- comico
- マンガ読破!EX
- COMICメテオ
- マンガごっちゃ
- COMICポラリス
本
(bookmeter.com OR booklog.jp OR honz.jp OR sinkan.jp OR flierinc.com OR bijodoku.com OR bizpow.bizocean.jp OR bukupe.com OR bookvinegar.jp OR book-smart.jp OR booklog.kinokuniya.co.jp) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
アニメ/ドラマ/映画
(gyao.yahoo.co.jp OR anime.nicovideo.jp OR abema.tv OR fod.fujitv.co.jp OR cu.ntv.co.jp OR videomarket.jp OR tver.jp OR freshlive.tv) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
音楽
spotify.com filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
アプリ
(itunes.apple.com OR play.google.com) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
料理
(cookpad.com OR kurashiru.com) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
飲食店
(tabelog.com OR gnavi.co.jp OR retty.me OR hotpepper.jp OR hitosara.com) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
イベント
(doorkeeper.jp OR connpass.com OR peatix.com OR atnd.org) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
まとめサイト
(togetter.com OR matome.naver.jp) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
プレスリリース
prtimes.jp filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
はてブ
b.hatena.ne.jp filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
NewsPicks
newspicks.com filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
note / cakes
(note.mu OR cakes.mu) filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
Voicy
voicy.jp filter:links lang:ja
以下メディアのリンクが含まれたツイートを取得します。
bouncy
bouncy.news filter:videos lang:ja
以下メディアの動画が含まれたツイートを取得します。
YouTube
(youtu.be OR youtube.com) filter:links lang:ja
以下メディアの動画が含まれたツイートを取得します。
TikTok
TikTok filter:videos lang:ja
以下ワードの動画が含まれたツイートを取得します。
- TikTok
Amazon
(amazon.co.jp OR amzn.to) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
bosyu
bosyu.me filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
エンジニア転職
#hiyokonitsuduke OR #Twitter転職 lang:ja
以下ワードのツイートを取得します。
- #hiyokonitsuduke
- #Twitter転職
GitHub
(github.com OR c) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
Revue
getrevue.co filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
技術論文
arxiv.org filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
技術記事
(qiita.com OR qrunch.io OR #Crieit) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
スライド
(slideshare.net OR speakerdeck.com) filter:links lang:ja
以下サイトのリンクが含まれたツイートを取得します。
Advent Calendar
Advent Calendar filter:links lang:ja
以下ワードのリンクが含まれたツイートを取得します。
- Advent Calendar
最後に
今回は自分の知りたい話題に絞ってツイートをまとめることができるようにしました。
また、まとめたツイートをグラフで視覚的に表現し、ツイートがバズる要因や傾向なども分析できるようにしてみました。
本サービスに少しでも興味をもって頂けましたら、ぜひ 本記事のいいね や Twitterのフォロー、いいねやリツイートをして頂けると嬉しいです!
- Twitter: @2zn01
バズったツイートまとめを作れるサービスをリリースしました!🎉
— 2z / AIメーカー開発者 (@2zn01) July 28, 2019
✅まとめたいキーワードからバズったツイートを収集
✅毎日の自動更新であなたの情報収集をサポート!
✅ツイッター分析のマーケティングツールにも!
ツイッターから知りたい情報をまとめよう!
📝ツイレポhttps://t.co/oFiPYwT34N pic.twitter.com/TbOTUMzwim
ぜひこのサービスを使って情報収集してみてください!
■ツイレポ
https://twirepo.com/