この頃、サービスをリリースした阿部です。
過剰なタイトルをつけたものの、マーケティングがわからなく四苦八苦です。
とりあえず、RubyでTwitter運用を始めたので、そのナレッジを記載します。
(始めたばかりで成果のほどは不明。)
Twitter運用めんどくさい。。
僕、Rubyエンジニアでツイッタラーじゃないんだけど(怒)
簡単に運用する方法ないの?
って人向けの記事です。
サンプルはRubyで記載しています。
アジェンダ
- どうやって自動化した?
- Twitter Rest APIとは?
- RubyのTwitter REST APIの導入方法
- 実際にどんな運用をしているか
- まとめ
どうやって自動化した?
僕は、Twitter Rest APIを使って自動化しました。
Twitter Rest APIとは?
名前の通り、Twitterが提供しているAPIです。
このAPIを呼び出すことによって、
ツイートやリツイートなどのTwitter上の処理を、プログラムから実行することができます。
RubyにはこのTwitter Rest APIを簡単に呼び出せるgemがあるので、
恩恵に預かりましょう。
https://github.com/sferik/twitter
各APIの概要、パラメーターなどを知りたい場合は下のリファレンスを参照してください。
わかりやすくまとめられています。
https://rdoc.info/gems/twitter/Twitter/REST
Twitter REST APIの導入方法
アカウント作成
まずはTwitter開発者アカウントを作成します。
僕はこちらの記事を参考にしました。
https://qiita.com/kngsym2018/items/2524d21455aac111cdee
英語で連絡しなければいけないので少々手間ですが、
気合で乗り越えてください。
実装
Clientを作成するクラスを実装しましょう。
ClientがTwitterAPIを呼び出す各メソッドを持っています。
Clientを作成してメソッドを呼び出せば、
ツイートやリツイートなどの処理をプログラムから呼び出すことが可能です。
require 'twitter'
class TwitterWrapper
attr_accessor :client
def initialize
@client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_API_KEY"]
config.consumer_secret = ENV["TWITTER_API_SECRET"]
config.access_token = ENV["TWITTER_ACCESS_TOKEN"]
config.access_token_secret = ENV["TWITTER_ACCESS_TOKEN_SECRET"]
end
end
def tweet(content:, option: {})
@client.update(content, option)
end
def tweet_with_media(content:, images: , option: {})
@client.update_with_media(content, images, option)
end
def retweets(tweet_id: nil)
@client.retweet(tweet_id)
end
end
今回、設定はconfig/twitter.ymlに配置しましたが、好きなところに配置してください。
Twitter::REST::ClientをNewする際に、それぞれの値を正しく入力できれば問題ないです。
twitter-wrapper.rbには今回説明するメソッドしか記載していませんが、
他にもたくさんメソッドがあるのでドキュメントで確認してみると面白いと思います。
実際にどんな運用をしているのか
僕は以下の運用を行っています。
- コンテンツが投稿されたタイミングでツイートする
- 一定時間ごとに自分のツイートをリツイートする
コンテンツが投稿されたタイミングツイートする
コンテンツが投稿された時、tweetを呼び出しています。
ツイートAPIを呼び出すupdate_with_mediaのラップメソッド(tweet_with_media)を実行しているだけです。
今回は画像も一緒にツイートしたかったので、update_with_mediaを使っています。
画像が不要な場合は、updateメソッドを使えば大丈夫です。
class Tweet < Twitters::Application
def tweet(content)
tweet_wrapper = TwitterWrapper.new
content = content #ツイート内容
images = 【画像】 # Array<File>
tweet_wrapper.tweet_wrapper.tweet_with_media(content: content, images: images)
end
end
一定時間ごとに自分のリツイートする
cronで下記処理を呼び出しています。
ただ、すでにリツイートしているツイートを再度リツイートしようとするとエラーを吐きます。
処理を追加してあげたほうが優しいと思います。
tweet_wrapper = TwitterWrapper.new
tweet_wrapper.search('アカウント名').each do |tweet|
user_name = tweet.user.screen_name
return false if !user_name.include?('アカウント名')
tweet_wrapper.retweets(tweet_id: tweet_id)
end
まとめ
上記は僕がパパッと考えたやり方なので、もっと洗練できると思います。
こんなやり方、書き方あるよって方はコメントいただければ幸いです!
良き、Twitterライフを!