movable-type
とりあえずかも知れない-Twitter API変更後の自動投稿対策
最終更新日: 2023年10月26日
年初から色々とイーロンの影響でぐちゃぐちゃなAPI、このサイトで謳っているのはあくまでも記事の投稿に連動したもので、日にいくつもTwitterへ投げるものではない。
そうしたものまでいっしょくたにされちゃうのだから困るが、botの悪使用を考えれば仕方ない部分もあるのだろう。
まぁエンジニアのクビあれだけ切ってりゃ既にあるものをより緻密に仕分けするものへ変えることは、新規で作るより難しいだろう。
当方Wordpressは暫定プラグインで乗り切っている、何れ非プラグインをと思っている。
Wrodpressのものは投稿と同時にTwitterへも投げられるが、MovableTypeのものはcronで叩いて投げる仕様だ。
当方のプログラミング能力不足といえばそうだが、MTのプラグインは有償だしそもそもMTにおいては他にプラグインがない。それにWPでは間々あるがプラグインの開発が停まるとプラットフォームのバージョンを上げられなくなり、Coreserverの様にMT6.1以下は使えないサーバーに強制移行といった事件にも対応できなくなる。
だからプラットフォームとは切り離したもので、それもベースとなるシステムは無料(どのみち当方で弄るし設定もするのでその部分はクライアント様にご負担をお願いします)がベスト。
資本力のある制作会社なんかなら使いまわし可能なPLで良いかもしれないけど、まぁこうしたことはトラブル起きると無限に続いたりするのだからPLは極力避けたいものです。
前説が長くなったが、ようやくcronで叩く(当該ファイルをブラウザで開いてもいいのだがね)ことでTwitterへ自動投稿するbotをどうにかした=作った。
ライブラリは「twify」というもので、API2対応。今まで当方で使っていたライブラリは1.1で、叩くとエンドポイントがちゃいますよとエラーが出た。プログラム弄って1.1から2へ等試したが、そこは専門外だからうまくいかなかった。
twifyの良いところはcomposerでインストールしても、ftpでライブラリアップしてもつ使えること。
システム屋の居る制作ならなんてことないだろうが、composerはその起動やサーバーへのアクセスなど手間かかるからftpアップは楽で良い。
一応今回composerでインストールしたが、叩くファイルのコードを備忘で。
cronで叩く、過去のtwitterでは連投しちゃったこともあるので投稿時間からcronが1度だけ叩くphp設定込みでのもの。
<?php //結果表示のコード、なくてもいいけどね。
ini_set("display_errors", 'On');
error_reporting(E_ALL);
?>
<?php //twiferライブラリ、公式ではvendorからのパスだがディレクトリの都合上twiferというディレクトリを作った
require 'twifer/vendor/autoload.php';
use Twifer\API;
?>
<?php if (date('Y-m-d H:i:s') > '投稿5分後の時間'): ?>
<?php if (date('Y-m-d H:i:s') < '投稿20分後の時間'): ?>
<?php
$conn = new API('CONSUMER_KEY', 'CONSUMER_SECRET', 'OAUTH_TOKEN', 'OAUTH_TOKEN_SECRET');
$postfields = "{\"text\":\"投稿内容\"}";
$res = $conn->request('POST', '/2/tweets', $postfields);
print_r($res);
?>
<?php endif; ?>
<?php endif; ?>
投稿5分後の時間はMTの場合再構築の時間があるのでその分マージンを見て遅延させてる。
投稿20分後はcronを15分おきに設定しているから15分空けて〆る。
投稿内容はタイトルと投稿ページのURLとか必要なものを呼び出す。OGP使ってシンプルにするのがベスト。
これはあくまで投稿するだけのシンプルなもので、どう表示するかはTwitterCardとOGP設定に依る。
画像のアップもできなくはないが、複数画像から選ぶ場合はMTやWPでの投稿でアイキャッチなりなんなり選択する仕組みを作ってOGPに書いた方がベター。
これでcron仕様でよければWPでも使えるしね、iftttはTwitterのpost関連皆有償になるなどなかなかライブラリや方法はないけど使える方法は増やしとかないと困るから助かりました。