FileMaker で Twitter に投稿する2

私はブログの過去の投稿を自動投稿する Twitter bot を運用している。

最初は Raspberry Pi を使う方法にしていた。

Raspberry Pi + PHP で Twitter bot を作る – with a Christian Wife
https://wacw.cf/2018/02/15/twitterbot-with-php-on-pi/

しかし API が使えなくなってしまったので、この方法が使えなくなった。

Twitter developer account の申請はハードルが高い – with a Christian Wife
https://wacw.cf/2018/12/09/applying-to-twitter-developer-account/

また Raspberry Pi を使う方法は投稿内容がランダムとはいえ、同一内容が続けて投稿されることもあった。ランダムかつ、全投稿内容を投稿し終えるまではまんべんなく投稿内容を選び出す仕組みを作りたい。

となると FileMaker を使うのが手っ取り早い。FileMaker で Twitter に投稿する方法については以前書いた。

FileMaker で Twitter に投稿する – with a Christian Wife
https://wacw.cf/2019/04/05/tweet-by-filemaker/

これは Twitter API が使えない関係でややこしい方法になっている。投稿内容の管理は FileMaker で管理・抽出するんだけど、それを Tw というコマンドラインの Twitter クライアントを使ってターミナルで投稿している。

FileMaker Server からはターミナルの操作ができないので、別途 FileMaker Pro Advanced を起動してそこに FileMaker Server の情報を引っ張り出し、スクリプトでターミナルのコマンドを実行している(FileMaker Pro Advanced を起動するなら、FileMaker Server は不要かもしれないけど、別マシンからツイート内容を管理したいので FileMaker Server を使っている)。

自動実行は cron を使いたいので、FileMaker Pro Advanced のスクリプトは Automator でアプリケーションを作って実行されるようにしている。

ほら、いろいろややこしいでしょ・・・。

Twitter bot の性質上、ずっとマシンは起動しておく必要があるし、ターミナルが勝手に動き出すわけだから、メインマシンではできない。だからサーバー用途で 24 時間動かしている Mac を使って実現している。

本当は FileMaker Server 単体で Twitter bot が作れたらいいんだけど、私の技術ではそこまで到達していない。

さて、先日 FileMaker から Apple events をターミナルに送れなくなったと書いた。

[FileMaker] Apple events をターミナルに送れない(未解決) – with a Christian Wife
https://wacw.cf/2019/08/25/cannot-send-apple-events-to-terminal/

すなわち、これまでの方法での Twitter bot が運用できなくなったわけだ。

そこで、Keyboard Maestro を使ったシンプルな方法に変えることにした。

(1)投稿内容の管理と抽出はこれまで通り FileMaker Server を使う。

(2)常時立ち上げている FileMaker Pro Advanced で FileMaker Server の情報を引っ張り出してきて、クリップボードにコピー。

(3)Keyboard Maestro でターミナルを開き、クリップボード内容を Tw で投稿するアクションを作る。一定時間で動くトリガーを設定する。

(4)[おまけ] Keyboard Maestro のシェルスクリプトを実行するアクションを使って、curl コマンドで Slack にも投稿が完了したことを通知する。

Keyboard Maestro を使えばあらゆる自動操作ができてしまうのが便利だ。