やってみたけど意外に簡単だったのと,よく使う人もいそうなので超初心者向けメモ.
必要なもの
- IFTTTに接続されたTwitterのアカウント
- 適当なインスタンスのMastodonのアカウント(この場合,mstdn.io というインスタンスの o_ob というアカウント )
- 最新のcurlが利用できるLinux等の環境もしくはWindows版curl
ネット上のドキュメントにはLinux環境でのドキュメントが多いので,Windows版curlでの説明で書いてみます. なお「curl」とはコマンドラインで使えるブラウザのようなもので,curl http://… とすることでそのURLを叩くことができます.ダウンローダーなど嬉恥ずかしい使い方もたくさんあるのですが,今回はPOSTメソッドでMustodonのAPIを叩くのに使います. ちなみにLinux環境で,curlが入っているけどなんかエラーが出る人は,最新のTLS対応でない可能性があります.管理者権限で yum update してください. Macの人はターミナルに入っているはずです.
Windows版のcurlを入手する
https://curl.haxx.se/download.html こちらで「Packages」の「Windows 64bit」の適当な圧縮形式のファイルを入手してください. 64ビット版の7.53.1はこちらにありました.例えばこのZIPをDownloadsにダウンロードして解凍した場合で,以下説明します. バイナリファイル自体は Downloads\curl-7.53.1\src 」に curl.exe として入っていますが,これはコマンドライン用のEXEですのでダブルクリックしても何も起きません(見えない). Windows+R で「ファイル名を指定して実行」→「cmd」でコマンドラインを開く. 黒こわい画面が開いたら,curl.exe をこの画面にドロップしてみましょう.
C:\Users\yourname>C:\Users\yourname\Downloads\curl-7.53.1\src\curl.exe
と出ていたら,エンターキーを軽快に叩いてみてください. なんかメッセージが出たら,今度は curl.exe の後ろに「http://google.com」など適当なURLを打ち込んでみてください. GoogleのトップページにアクセスしたときのHTMLが表示されます.まあ実際には「引越ししました,302エラー」が表示されています. これで準備は終わりです,いろいろ細かいこともありますが,以下,このcurl.exe があるディレクトリで作業してしまいましょう.
まず独自アプリの登録
先ほどのディレクトリで curl(…curl.exe+半角スペース)に続いてコマンドを打っていきます.curl.exeをcurlと見なして以下真似てみてください(太字は変更).
curl -X POST -d “client_name=MSTDN2Twitter&redirect_uris=urn:ietf:wg:oauth:2.0:oob&scopes=write&website=https://aki.shirai.as” -Ss https://mstdn.io/api/v1/apps
なお,コマンドラインでは「↑」キーを押すと過去のコマンドを再利用することができます.マウスの右クリックでクリップボードに張り付けることもできます. なお,client_nameは好きにつけられます,これから皆さんが作る独自アプリの名前ですのでせいぜいかっこいい名前にしましょう.websiteは自分のサイトでも大丈夫なはず,mstdn.ioは自分が利用したいインスタンスに置き換えてください. うまくいくと以下のような文字列が出てきます.
{“id”:xxxx,”redirect_uri”:”urn:ietf:wg:oauth:2.0:oob”,”client_id”:”[A]64文字の英数字”,”client_secret”:”[B]64文字の英数字”}
マウスドラッグして変な改行や,テキストエディタなどに(Windows+Rで「notepad」)スペースが入らないようにして張り付けておきましょう. アプリにユーザを登録する 次に,このアプリを使ってご使用のインスタンスでユーザID,パスワードを使って認証をし,トークン(Token)という専用回数券を入手します.
curl -X POST -d “scope=write&client_id=[A]&client_secret=[B]&grant_type=password&username=[メールアドレス]&password=[パスワード]” -Ss https://[mstdn.io]/oauth/token
- [A]はひとつ前のプロセスで発行されたclient_id
- [B]はひとつ前のプロセスで発行されたclient_secret
- [メールアドレス]はご利用のMastodonサーバ(インスタンス)で登録したメールアドレス
- [パスワード]はご利用のMastodonインスタンスで登録したパスワード
- [mstdn.io]はご利用のMastodonインスタンスのURL本体に置き換えてください
[~]や”~”などのカッコや引用符はつける必要がありません.ドラッグと右クリックを使って丁寧に作業してください.正しく設定できているとエンターを押した後に,
{“access_token”:”[C:英数64文字のトークン]”,”token_type”:”bearer”,”scope”:”write”,”created_at”:[日付数字]}
という反応が出ます.これも大事な文字列なのでテキストエディタに拾っておきましょう.トークンは大事なものなので,ネットなどに撒くのは危険です! 間違っていた場合は以下のような文字列になります.メールアドレスやパスワードをよく確認してください,ちゃんとログインできますか?
You are being redirected.
どうしてもうまくいかないときは上記のcurl の後に続く「-Ss」(反応を表示しない)のところを「-v」(全部表示)にしてみるといろいろ分かるかもしれません.
試しにcurlから投稿してみる
さてせっかくですので試しにcurlから投稿してみましょう!
curl.exe -X POST -d “access_token=[C]&status=Hello World!&visibility=private” -Ss https://[mstdn.io]/api/v1/statuses
- [C]はアクセストークンです.長い英数文字列です.引用符などは不要です.
- Hello World!はつぶやきたい文字列です,日本語はここでは問題があります.
- privateにしておくと,ほかの人には見えません.
- [mstdn.io]はご使用のインスタンスに置き換えてください.カッコは不要です.
いかがでしょうか?うまく投稿されましたか?うまくいかなかった場合は「Oops.png」や「We’re sorry, but something went wrong.」といったHTMLが反応として返ってくるはずです.
IFTTTで自動化投稿設定をする
IFTTTについて細かく解説が必要な方は,ほかのサイトなども見てください.If [何か起きたら] then [何かする]というシンプルな部品の組み合わせで強力なWebサービスが作れます.個人利用や試作としては十分な機能を持っており,プログラミング不要です. 使用するモジュールは「maker_webhooks」です.
- 名称は[My Twitter2Mastodon]など自由にどうぞ.
- [New Tweets by You]:RTを対象にする,@返信を対象にする場合はそれぞれチェック.
- [URL]:[https://mstdn.io/api/v1/statuses] お使いのインスタンスに合わせて変更してください
- [Methods]:[POST]
- [Content Type]:[application/x-www-form-urlencoded]
- [Body]:[visibility=public&access_token=[Cのトークン]&status={ {Text}}
{ {Text}}の前後にはスペースを入れないことをお勧めします.「Ingredient」を使えばURLなども入ります. Saveしたら適当なつぶやきをTwitter側でやってみて実験しましょう!(意味なくつぶやくのは意外と大変…) うまくいかないときはIFTTTのApplet側のLogを確認しましょう.変なスペースが入ってたりすると事故の元です. visibilityは{private, public, unlisted, direct}をとります.小文字で書くことに注意. ちなみにIFTTTを使いこなしている人は,Wordpressの投稿をつないだり,出勤簿にしたりと,いろいろ使い道を思いつくはずです! Happy Tweeting and Tooting!
おまけ1:作業の後片付けをしたい
はい,終わったらcurlのフォルダごと捨ててしまいましょう. 特に,Mastodonのパスワードやトークンがその辺に残っているのは気持ち悪いですので! ここまで解説した方法の良いところは,コマンドライン上で操作していますので,パスワードを保存したりすることが一切ない点なのです.
おまけ2:Mastodon → Twitterもやりたい
ちなみに Mastodon→Twitter はできるけどあまり利点がないので検証してません. 簡単に言うと,Mastodonには標準でATOMを吐いてくれますので,それを拾えば既存の各種サービスでできることが多いからです. 具体的には,ご自身のアカウントの後ろに「.atom」を付けたURLにアクセスすれば,フィードが取れます. https://mstdn.io/@o_ob.atom 以上です! 何か間違いやフィードバックがありましたら,こちらのTOOTまでどうぞ. https://mstdn.io/@o_ob/815348