備忘録のような何か

何か += 備忘録( 日々のこと, 妄想, IT, DIY, 畑仕事 );

Twitterボットを作ってみたのです(TwitterAPI、Amazon Product Advertising API、SynologyNAS、JAVA、MariaDB)

もくじ

はじめに

新刊を紹介するTwitterボット(定期的に自動でツイートするプログラム)を作ってみたので、作った動機とか、作り方とか、数ヶ月運用してみた結果とかを簡単に紹介してみたいと思います。

▼3月16日に「SF・ホラー・サスペンス新刊情報」の運用を開始。

▼約1ヶ月後の4月15日に「ミステリー・サスペンス・ハードボイルド新刊情報」の運用を開始しました。

なんで作ろうと思ったのか

きっかけはこのツイートでした。



昨年の12月から、月末にその月読んだ本をAmazonのリンク付きで垂れ流していたところ、普段は1日あたり2〜3クリックしかないAmazonアフィリエイトだったのが月末だけ30クリック近くの成績を叩き出していました。フォロワーなんてせいぜい40人程度しかいないアカウントなのに。

まだこの時点では売上げにまで紐づいてはいなかったのですが、母数を増やせばそのうち売上げも伸びるだろうという希望的観測のもと見切り発車。やってみて失敗しても失うものは何もないのです。

新刊情報なんて真新しいものでもなく今更感満載ですが、わずかでも需要があればうれしいなというのが10%、「お金が欲しい!」というのが90%。はい、ただの守銭奴ですね。

皆さん、どんどんフォローしてお買い物しちゃってください!(開き直りw)

構成を考える

さて、さっそく作っていこうと思います。まずは全体の構成をざっくり決めました。

▼必要なもの

  • Twitterアカウント
  • TwitterAPIのキー情報
  • AmazonAPIのキー情報
  • ボットのプログラム
  • 情報収集用のプログラム
  • サーバー
  • データベース


▼処理の流れ

  1. 「情報収集用のプログラム」でAmazonから新刊情報を収集して、データベースへストック(1日1回)
  2. 「ボットのプログラム」からツイートする(2時間に1回)


これだけです。簡単そうに見えるでしょ?

TwitterAPIを使えるようにしよう

次にTwitterAPIを使う準備をします。Twitterアカウントは事前に作成しておいてください(モバイルの登録が必須です)。

Twitter Application Managementのページからアプリを登録します。(この辺りの手順は巷に溢れているので、説明はそちらにゆずりましょう)

アプリを登録したら、

の4つの値をメモしておきましょう。あとでプログラムの中で使います。

Amazon Product Advertising APIを使えるようにしよう

あとは、AmazonAPIを使うための準備も必要です。Amazonアソシエイトの審査は通っている前提で話を進めますので、審査がまだの人は自力でなんとかしてください(丸投げ)。

ここでやることは認証キーの取得とサイトの登録です。

Amazon Product Advertising APIのページの[認証キーの管理]からAWSの管理ページを開いて認証キーを取得します。

  • アクセスキーID
  • シークレットアクセスキー

の値をメモしておきましょう。特にシークレットアクセスキーは登録した時にしか確認できない(後から見ることができない)ので忘れないように気をつけてください。

あと

  • アソシエイトID

も必要です。これはAmazonアソシエイトのページの右上に表示されていますので合わせてメモしておいてください。

最後にウェブサイトとモバイルアプリの変更ページのウェブサイトの所にTwitterアカウントのトップページ(例:https://twitter.com/SFShinkanBot)を登録すれば準備完了です。

データベースを用意しよう

ボットなので常時稼働が必要です。常時稼働するにはサーバーが必要です(PC起動しっぱでもいいけど)。レンタルサーバーでもいいけれど、幸いうちにあるSynologyNASについてるサーバー機能が使えそう(非力だけど)。SynologyNASで使えるDBはほぼMariaDB一択?という消去法でMariaDBを使うことにしました。

初めて聞いたのですが、どうやらMySQLの派生として開発されたDBらしいです。新時代のスタンダード?そうなの?まぁ大量のデータを扱うわけでもないので、使い慣れているRDBMSであればなんでも良かったのです。

とりあえず必要なテーブルは1つだけ。名前は「SFSHINKANINFO」にしよう。

カラムはあまり考えずに作ってしまったので実際は使わない項目もあるけれど、こんな感じにしました。

論理名 物理名 PK IDX 実際に使ってる項目
ISBN ISBN
TITLE タイトル
RELEASE_DATE 発売日
AUTHOR 著者
PUBLISHER 出版社
CONTENT 紹介文
EVALUATION 評価
URL 商品URL
INS_DATE 登録日
UP_DATE 更新日
USE_COUNT ツイートした回数


情報収集用プログラムを作る

ここからはプログラミングのお時間です。

言語はJavaを使います。別に他の言語でも問題ないのですが、最初Rubyで作ったらサーバーに実行環境作る段階で躓いた(必要なGemのインストールができなかった)ので今回はJavaを選択。

最初に考えた構成(処理の流れ)の通り、プログラムは二段階構成なので、まずこの章では「情報収集用プログラム」の説明をします。

情報取集って何するものぞ?ってことですが、ここでは「Amazonから新刊情報を収集してデータベースへ登録する」ということです。

プログラムの概要

このプログラムの機能

  • Amazonから商品情報を取得する。
    • 取得項目はDBの項目と同じ(紹介文は著作権の都合でAPIでの取得は出来ないらしい)
    • SF・ホラー・ファンタジーの場合、BrowseNodeに"507300"を指定
    • ミステリー・サスペンス・ハードボイルドの場合、BrowseNodeに"507216"を指定
    • 1回で発売日が新しい順に100件取得
  • 取得した情報をDBへ登録する。
    • ISBN(PK)で重複しないデータだけ登録
  • 古い情報をDBから削除する。
    • 発売日が3ヶ月以上前のデータを削除


ソースコード

長くなるので割愛します。

え?そこが知りたいのに!?という人がいれば別エントリで書くかも?

DB接続とAmazonAPIの検索条件の設定部分がちょっとした難関でした。

ボットプログラムを作る

やっとこさ本丸の登場です。

とはいえ、このプログラムでやることは大してありません。。。

プログラムの概要

このプログラムの機能

  • DBから情報を取得
    • 「ツイートした回数」、「発売日」の昇順でソートして、1レコード目のデータを取得
  • ツイートする
    • DBから取得した値を整形してツイートする内容を編集
    • TwitterAPI経由でツイートする
  • 「ツイートした回数」を更新
    • +1することでソート順の最後尾に移動(次回処理のため)


ソースコード

長くな(ry

こちらは特に問題なく作れるはず。twitter4j.jarを使ってます。

サーバーに置いて自動ツイート

物が出来上がったので、次はサーバーの設定です。

まぁ、こちらも大したことはしてなくて、簡単3ステップ。

  1. Javaコンパイルして実行可能jarファイルを作成後、サーバーにアップロードしておく
  2. jarファイルを実行するためのシェルを作成
  3. タスクスケジューラにシェルを登録


これでボット作りは一通りおしまいです。お疲れ様でしたー!

▼記念すべきファーストツイート


あとは2時間(タスクスケジューラで登録した時間)ごとに勝手にツイートしてくれるという寸法です!!1日で12作品。毎日何作品ぐらいの新作が出版されているのか分かりませんが、これくらいのペースがちょうどいいんじゃない?(最後まで適当)

存在をアピールしよう

ここまでの話で「モノづくり」は一旦終了したわけですが、このまま放置していれば勝手に広がってお金が入ってくるというものではありません。売上につなげるためには何はともあれ存在を知ってもらわなくては。良いものを作ったら勝手に売れる時代ではないのです。。。

ここでは、存在を知ってもらう(=フォロワーを増やす)ためにやったことも書いておきますね。マーケティングの知識とかまったくない僕ですが、そこそこ成果は出てる気がするので最低限これぐらいはやるといいかもしれませんよ。

アイコンをつくる

アカウント作った時点ですでに用意しているかもしれませんが、基本中の基本ですね。さすがにアイコンなしでは寂しいので、とりあえず作っておきましょう。

▼SF・ホラー・ファンタジー新刊情報のアイコン
f:id:m_uta:20180515114555j:plain
娘がダンボールで作ったロボットです(笑)SFと言ったらロボットでしょう?(安直)

▼ミステリー・サスペンス・ハードボイルド新刊情報のアイコン
f:id:m_uta:20180515114534j:plain
こちらは↑のアイコンを加工して、探偵っぽい帽子をかぶせてみました。

紹介文を書く

次は紹介文です。これが結構大事(だと思うのです)。

数あるユーザの中から見つけてもらうために必要な情報を詰め込みましょう。そうしておけば、検索でHITしやすくなるはずです。

あと、この紹介文はポップアップ情報にも表示されるのでしっかり書いておいたほうが良いでしょう。

▼マウスオーバーのポップアップで確認できる情報
f:id:m_uta:20180515155213p:plain

フォローしまくる

待っているだけでは魚は釣れません。ちゃんと餌をまきましょう。

ということで、Twitterで餌をまく行為といえば「フォローする」です(断言)。フォロワーが増えたらとりあえず見に行くでしょ?そこで、もし気に入ったらフォローバックしてもらえるかもしれません。内容がいきなりバズる可能性は低いので地道な営業活動が大切です。

とはいえ、ただ闇雲にフォローをしてもあまり効果がないかもしれません。少しでもフォローバックの可能性を上げるために狙いを絞ります。

このボットは新刊情報なので、とりあえず読書をする人。SF、ホラー、ファンタジー、ミステリー、サスペンス、ハードボイルドなどに興味がありそうな人。作家さん。出版社。あたりを中心にフォローしています。

今回、「読書垢」というアカウントが相当数居ることを初めて知りました。このキーワードで芋づる式に…

サテライトサイト

サテライトサイトという言い方が適当かどうか分かりませんが、本垢で紹介(誘導)したり、リツイートしたり、いいねをしたりして拡散させることで人目に触れる機会を増やそう作戦です。

まぁ、本垢のフォロワーが40人程度しかいないのであまり効果は期待できないんですけどね(汗)フォロワーが多い人には有効な作戦かと。

ブログで紹介

今書いてるコレ。

2ヶ月運用した成果

SF・ホラー・ファンタジー新刊情報の運用を開始してからちょうど2ヶ月が経ちました。(3/16〜5/15)

成果は出たのでしょうか?ちょっと数字で見てみようと思います。

▼SF・ホラー・ファンタジー新刊情報

期間 ツイート ツイートインプレッション プロフィールへのアクセス 新しいフォロワー
3/16〜3/31 191 15,198 254 30
4/1〜4/30 317 30,598 583 71
5/1〜5/14 122 18,193 129 15


▼ミステリー・サスペンス・ハードボイルド新刊情報

期間 ツイート ツイートインプレッション プロフィールへのアクセス 新しいフォロワー
4/15〜4/30 193 12,218 621 56
5/1〜5/14 128 9,168 280 24

あ〜、、、うん。よく分かりませんね(笑)とりあえず、地道な営業の成果としてフォロワーは着実に増えているようです。

で、結局のところ売上はどうなったの?ってことですよね。こちらはAmazonのレポートから数字を拾ってきました。

期間 クリック数 発送済商品数 売上金額 備考
2017/11 46 3 227円
2017/12 116 6 82円 月末の読了ツイート開始
2018/1 122 1 36円
2018/2 196 1 111円
2018/3 836 2 136円 ボット公開その1
2018/4 1,910 6 400円 ボット公開その2
2018/5 1,166 14 536円 〜5/15

注:ブログやAndroidアプリからの流入も含まれているため、純粋にボットだけの成果ではありません。

こちらは分かりやすいですね。明らかにボットを公開した3月以降のクリック数が伸びています。それに伴って売上も!(ニンマリ)

2013年の12月に審査が通って以降、まだ1回も支払い金額(5,000円)に達していない(滝汗)のですが、このペースだとそろそろもらえそうな気がしてきましたよ。

まとめ

以上、Twitterボット作成の一部始終を簡単に紹介しました。

文字通り「簡単に」説明しすぎて物足りない部分もあったかと思いますが、なんとなく雰囲気は掴んでいただけましたでしょうか?

狙いどおり売上に繋げることができました。まだまだ微々たるものですが、もっとフォロワーを増やせられればもう少し稼げそうな気がするので楽しみです。お金お金ばっかり言ってすみません(笑)←反省はしていない

それにしても、数ヶ月かけて作ったアプリよりも、3日で作ったボットのほうが売上に貢献しているというね…世の中そういうものらしいです。

最後にリンク貼っておきますね。気が向いたらで結構なので、フォローお願いします。



(。・ω・)ノシ