ブログ記事更新など複数アカウントに同一ツイートできなくなる

※記事内に商品プロモーションを含む場合があります

発端はこちらの記事。
自動化と複数アカウントの使用について

これによりブログ用アカウントと自分のアカウント、
両方で記事更新のツイートをしている場合はこのルールに引っかかります。

予約投稿などで、ツイートする時間をずらしてもダメ。
もしルールが順守されない場合はアプリやアカウントが凍結される
可能性もあります。

新ルールは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を張ってもらえると嬉しいです。