みんなの「作ってみた」

【個人開発/SEO成果報告】「ツイッターで話題の情報をまとめられる」キュレーションサービスをリリースしました

2019/08/03

2zn01
2zn01
中学~大学でガラケー向けサービスで1億PV/月収100万超えを達成するも、ドメイン失効でふっとばす。 今は「AIメーカー」というweb上で誰でも手軽に機械学習を始められる、みんなのAIプラットフォームを開発しています! https://aimaker.io/ これまでに作ったもの https://note.mu/2zn01/n/n72b37d988cd9


こんにちは、2z(Twitter: @2zn01 )です。

普段はWeb系の開発会社で会社員として働いていますが、最近は業務で全然コードをかけていないので、週末に趣味で個人開発をしています。

私自身、普段あまり時間がない中でどう情報収集したらよいか困っているということもあり、エンジニアらしく技術で何とか解決するべく、ツイッターを活用して、エンジニアの情報収集を助けるキュレーションサービスを作ってみました。

作ったもの

「ツイレポ」という「ツイッターで話題の情報をまとめられる」ツイッターまとめサービスを作りました。

■ツイレポ
https://twirepo.com/

「ツイレポ」では、ツイッターで話題のツイートからあなたの知りたい情報だけに絞ったまとめを作成することができます。
また、作成したまとめは毎日自動更新され、あなたの効率的な情報収集・分析をサポートします。


主要なページの画面イメージは以下になります。

トップページ

まとめ編集ページ

ツイートまとめを作成するページです。

まとめを作る際のツイート収集にはツイッターの検索演算子も使えます!

ツイートまとめページ

収集されたツイートまとめを見ることができます。

まとめたツイートは以下の基準で並び替えを行うことができ、ランキング形式で情報を確認することができます。

  • 新しいツイート順
  • 古いツイート順
  • リツイート数の多い順
  • リツイート数の少ない順
  • いいね数の多い順
  • いいね数の少ない順
  • 引用数の多い順
  • 引用数の少ない順
  • リプライ数の多い順
  • リプライ数の少ない順
  • リツイート速度の大きい順
  • リツイート速度の小さい順
  • いいね速度の大きい順
  • いいね速度の小さい順
  • 引用速度の大きい順
  • 引用速度の小さい順
  • リプライ速度の大きい順
  • リプライ速度の小さい順
  • リツイート率(フォロワー)の大きい順
  • リツイート率(フォロワー)の小さい順
  • いいね率(フォロワー)の大きい順
  • いいね率( フォロワー)の小さい順
  • 引用率(フォロワー)の大きい順
  • 引用率(フォロワー)の小さい順
  • リプライ率(フォロワー)の大きい順
  • リプライ率(フォロワー)の小さい順
  • リツイート速度率( フォロワー)の大きい順
  • リツイート速度率(フォロワー)の小さい順
  • いいね速度率(フォロワー)の大きい順
  • いいね速度率(フォロワー)の小さい順
  • 引用速度率(フォロワー)の大きい順
  • 引用速度率(フォロワー)の小さい順
  • リプライ速度率(フォロワー)の大きい順
  • リプライ速度率(フォロワー)の小さい順

ツイート分析ページ

さらにまとめたツイートをグラフで視覚的に分析することもできます。

これでツイートがバズる要因や傾向なども分析できるようにしてみました!

何で作ったの?

もともと「ツイレポ」は2018年の年末にリリースしていました。

上記の記事にもある通り、「ツイレポ」は作った理由は以下の通りです。

皆さんは情報収集って何でしていますか?

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」を使って、以下の流れで行っています。

  • 1. リツイート数が 10000 以上 または いいね数が 10000 以上のツイート収集(すべて収集したら次へ)

 ↓

  • 2. リツイート数が 1000 以上 または いいね数が 1000 以上のツイート収集(すべて収集したら次へ)

 ↓

  • 3. リツイート数が 100 以上 または いいね数が 100 以上のツイート収集(すべて収集したら次へ)

 ↓

  • 4. リツイート数が 10 以上 または いいね数が 10 以上のツイート収集(すべて収集したら次へ)

 ↓

  • 5. リツイート数が 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で作っていましたので、以下のライブラリを使って、実装しました。

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

ツイレポでまとめる際のキーワード例

今回リニューアルした「ツイレポ」では自分の知りたい情報のキーワードを登録することで、自分の知りたい情報に絞った話題のツイートを収集することができます。

「ツイレポ」でもともと収集していたジャンルごとのツイートは以下の条件で収集していましたので、収集時のキーワードを考える際のご参考にして頂ければ幸いです。

トップ

https://twirepo.com/genre/top

lang:ja -filter:verified

日本語のツイートをすべて取得します。
ただし、フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。

ニュース

https://twirepo.com/genre/news

filter:news lang:ja

ニュースに関するツイートをすべて取得します。
ニュースでは信頼性の高い認証アカウントのツイートも含めています。

画像

https://twirepo.com/genre/image

filter:images lang:ja -filter:verified

画像が含まれるツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。

動画

https://twirepo.com/genre/video

filter:videos lang:ja -filter:verified

動画が含まれるツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。

ライブ配信

https://twirepo.com/genre/live

filter:periscope lang:ja -filter:verified

ライブ配信に関するツイートをすべて取得します。
フォロワー数が多く、リツイート数やいいね数が多くつく認証アカウントのツイートは除外しています。

VTuber

https://twirepo.com/genre/vtuber

#vtuber lang:ja

以下ワードのリンクが含まれたツイートを取得します。

  • #vtuber

ネットメディア

https://twirepo.com/genre/net-media

(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

以下メディアのリンクが含まれたツイートを取得します。

面白メディア

https://twirepo.com/genre/funny-media

(omocoro.jp OR labaq.com OR dailyportalz.jp OR curazy.com) filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

エンタメ

https://twirepo.com/genre/entertainment

(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に含まれると、うまく検索できないケースがあったため、「+」や「*」に置き換えているものがあります。

以下メディアのリンクが含まれたツイートを取得します。

ライフスタイル

https://twirepo.com/genre/lifestyle

(nanapi.jp OR enuchi.jp OR locari.jp OR sheage.jp) filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

女性向けメディア

https://twirepo.com/genre/woman-media

(men-joy.jp OR mainichikirei.jp OR otajo.jp OR youpouch.com OR mdpr.jp OR japan.techinsight.jp) filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

マーケティング

https://twirepo.com/genre/marketing

(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に含まれると、うまく検索できないケースがあったため、「+」や「*」に置き換えているものがあります。

以下メディアのリンクが含まれたツイートを取得します。

スタートアップ

https://twirepo.com/genre/startup

(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

以下メディアのリンクが含まれたツイートを取得します。

ブログ

https://twirepo.com/genre/blog

(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

以下ブログのリンクが含まれたツイートを取得します。

イラスト

https://twirepo.com/genre/illust

(#pixiv OR pixivision) filter:images lang:ja

以下ワードのリンクが含まれたツイートを取得します。

  • #pixiv
  • pixivision

いらすとや

https://twirepo.com/genre/irasutoya

irasutoya.com filter:images lang:ja

以下サイトの画像が含まれたツイートを取得します。

漫画

https://twirepo.com/genre/manga

(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)

以下サイトのリンクが含まれたツイートを取得します。

https://twirepo.com/genre/book

(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

以下サイトのリンクが含まれたツイートを取得します。

アニメ/ドラマ/映画

https://twirepo.com/genre/broadcast

(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

以下サイトのリンクが含まれたツイートを取得します。

音楽

https://twirepo.com/genre/music

spotify.com filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

アプリ

https://twirepo.com/genre/appli

(itunes.apple.com OR play.google.com) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

料理

https://twirepo.com/genre/cook

(cookpad.com OR kurashiru.com) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

飲食店

https://twirepo.com/genre/restaurant

(tabelog.com OR gnavi.co.jp OR retty.me OR hotpepper.jp OR hitosara.com) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

イベント

https://twirepo.com/genre/event

(doorkeeper.jp OR connpass.com OR peatix.com OR atnd.org) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

まとめサイト

https://twirepo.com/genre/matome

(togetter.com OR matome.naver.jp) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

プレスリリース

https://twirepo.com/genre/pr

prtimes.jp filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

はてブ

https://twirepo.com/genre/hatebu

b.hatena.ne.jp filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

NewsPicks

https://twirepo.com/genre/newspicks

newspicks.com filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

note / cakes

https://twirepo.com/genre/note

(note.mu OR cakes.mu) filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

Voicy

https://twirepo.com/genre/voicy

voicy.jp filter:links lang:ja

以下メディアのリンクが含まれたツイートを取得します。

bouncy

https://twirepo.com/genre/bouncy

bouncy.news filter:videos lang:ja

以下メディアの動画が含まれたツイートを取得します。

YouTube

https://twirepo.com/genre/youtube

(youtu.be OR youtube.com) filter:links lang:ja

以下メディアの動画が含まれたツイートを取得します。

TikTok

https://twirepo.com/genre/tiktok

TikTok filter:videos lang:ja

以下ワードの動画が含まれたツイートを取得します。

  • TikTok

Amazon

https://twirepo.com/genre/amazon

(amazon.co.jp OR amzn.to) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

bosyu

https://twirepo.com/genre/bosyu

bosyu.me filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

エンジニア転職

https://twirepo.com/genre/job_hunting_engineer

#hiyokonitsuduke OR #Twitter転職 lang:ja

以下ワードのツイートを取得します。

  • #hiyokonitsuduke
  • #Twitter転職

GitHub

https://twirepo.com/genre/github

(github.com OR c) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

Revue

https://twirepo.com/genre/revue

getrevue.co filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

技術論文

https://twirepo.com/genre/arxiv

arxiv.org filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

技術記事

https://twirepo.com/genre/tech-article

(qiita.com OR qrunch.io OR #Crieit) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

スライド

https://twirepo.com/genre/slide

(slideshare.net OR speakerdeck.com) filter:links lang:ja

以下サイトのリンクが含まれたツイートを取得します。

Advent Calendar

https://twirepo.com/genre/advent-calendar

Advent Calendar filter:links lang:ja

以下ワードのリンクが含まれたツイートを取得します。

  • Advent Calendar

最後に

今回は自分の知りたい話題に絞ってツイートをまとめることができるようにしました。
また、まとめたツイートをグラフで視覚的に表現し、ツイートがバズる要因や傾向なども分析できるようにしてみました。

本サービスに少しでも興味をもって頂けましたら、ぜひ 本記事のいいね や Twitterのフォロー、いいねやリツイートをして頂けると嬉しいです!

ぜひこのサービスを使って情報収集してみてください!

■ツイレポ
https://twirepo.com/