※記事内に商品プロモーションを含む場合があります
発端はこちらの記事。
自動化と複数アカウントの使用について
これによりブログ用アカウントと自分のアカウント、
両方で記事更新のツイートをしている場合はこのルールに引っかかります。
予約投稿などで、ツイートする時間をずらしてもダメ。
もしルールが順守されない場合はアプリやアカウントが凍結される
可能性もあります。
新ルールは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を張ってもらえると嬉しいです。