※記事内に商品プロモーションを含む場合があります
発端はこちらの記事。
自動化と複数アカウントの使用について
これによりブログ用アカウントと自分のアカウント、
両方で記事更新のツイートをしている場合はこのルールに引っかかります。
予約投稿などで、ツイートする時間をずらしてもダメ。
もしルールが順守されない場合はアプリやアカウントが凍結される
可能性もあります。
新ルールは2018年3月23日(金)以降適用されるようで
3月23日までに新ルールを順守するように変更する必要があります。
今までのブログ更新通知
今までは自作プラグインから
@eaxjp
@_hibinodekigoto
両方に記事更新のツイートを流していました。
これが3月23日からできなくなります。
ちなみに、@_hibinodekigotoは日々の出来事で
旧ブログ名です。
今後のブログ更新通知
今後は同じコンテンツ(ツイート)を複数のアカウントから
投稿する事が禁止されています。
ただし、自分で管理している少数のアカウントの場合
リツートすることができます。
今回は、@eaxjpに流したブログ更新ツイートを
@_hibinodekigoto でリツートするようにします。
この辺のスクリプトをこちらをベースに作りました。
【関連】PHPとOAuthでリツイートbotを作ってみた
この時は公開されているプラグインを使っていたので2アカウント
同時にツイートする事ができませんでした。
今はプラグインを自作したので複数のアカウントも
同時にツイートすることができていました。
ブログ更新をリツートするスクリプト
元のスクリプトのまま使うと、すべてのツイートがリツート
されてしまいます。
すべてのツイートがリツートされないようにするため
トリガーを設定します。
ツイートの中にトリガー”【ブログ”が含まれていたらリツートします。
旧版ではリツート済はエラーで済ましていましたが
今回はツイート取得時にリツイート済かも取得。
リツイート済の場合は、リツイートを行わないようにしました。
ソース(eaxjprt.php)
<?php
// *******************************************************************************************
// 特定ユーザーの、ブログ更新など特定のツイートを、リツイートするスクリプト
// @eaxjp 2018年3月4日 https://b.eax.jp/blog-seo/16738
//
//【ブログ更新】や【ブログ過去記事】でツイートを行うため
// "【ブログ"をトリガーとして設定しています。
//
// echoでツイート内容、結果などを出力しています。
//
// *******************************************************************************************
// ** ▽設定
// Consumer keyの値
$consumer_key = "";
// Consumer secretの値
$consumer_secret = "";
// Access Tokenの値
$access_token = "";
// Access Token Secretの値
$access_token_secret = "";
//リツイート元のユーザー名(スクリーンネーム)
$tw_source = "eaxjp";
//リツイートのトリガーとなる、文字列(UTF-8で保存!!)
$s_string = '【ブログ';
// ** △設定
// *******************************************************************************************
// twitteroauth.phpを読み込む。
require_once("twitteroauth.php");
//最新1ツイートのみツイート取得
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$req = $to->OAuthRequest("https://api.twitter.com/1.1/statuses/user_timeline.json","GET",array("screen_name"=>$tw_source,"count"=>"1"));
$tweet = json_decode($req);
//ツイートID($id@num)とツイート($tweet_txt@string)をリツイート済($retweeted@boolian)を取得
$tweet_txt = $tweet[0]->text;
$id = $tweet[0]->id_str;
$retweeted = $tweet[0]->retweeted;
echo $tweet_txt."\n"; //ツイート内容
//トリガーが$tweet_txtに存在するか確認
if(mb_strpos($tweet_txt,$s_string, 0, "UTF-8") !== false){
//ツイート済かの確認
if($retweeted == false){
// 未リツイートなので、リツイートを行う
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$req = $to->post('statuses/retweet/'.$id);
echo "リツイートしました ID:".$id."\n";
}else{echo "リツイート済です";}
}else{echo "トリガー無しです";}
?>
//https://b.eax.jp/blog-seo/16738
使い方
アプリの登録や各キーの設定、必要なファイルは
PHPとOAuthでリツイートbotを作ってみたと変わりません。
追加になったのは$tw_sourceと、
$s_string です。
$tw_sourceはリツイート元のユーザー名を入れます。
デフォルトでは私のアカウント@eaxjpになっています。
$s_stringはトリガーで、ここで入力された文字列が
ツイート内で見つかったらリツイートを行います。
トリガーに日本語を含む場合は、UTF-8エンコードで
保存してください。
テスト
実際の稼働はCRONで行いますが、
テストはSSHからコマンドを打って行いました。
php eaxjprt.php
SSHで確認すると、トリガー無し、リツイート済、リツイートした など状態を知る事ができます。
まとめ
今回のルール変更でブログ更新ツイートを一度に複数アカウントに
流すという使い方ができなくなりました。
自分で管理しているアカウントならリツイートで対処可能なので
スクリプトを作り直しました。
スクリプトは好きに使ってもらっても構いませんが、
公開される場合はこの記事へのリンクやURLを張ってもらえると嬉しいです。

