9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mastodon(マストドン)をZapierでTwitterと連携

Last updated at Posted at 2017-04-20

流行りのマストドン、皆さん使ってますか?

とりあえず親和性が高そうなTwitterとの連携を考えたんですけど、やっぱりIFTTTだと自由度が低いので、Zapierで連携する事にしました。

#運用ポリシー

##1. メンション付きは除外
Mastodonの仕組み上、メンションを飛ばすトゥート(つぶやき)がある以上、Twitterにそのまま流してしまうと誤爆の恐れがあるので避けます。

##2. ブースト(リツイートみたいなもの)は除外
これをそのまま流してしまうと、Mastodon上の他のアカウントのトゥートをそのままツイートしてしまうので、なりすましみたいになっちゃいますし、Mastodon上のアカウントの人がTwitterには流して欲しくないかもしれませんし、条件とか頭に誰かが言ったみたいなのを付けてもいいんですが、正直面倒くさいので除外します。

#Step 1. astodonのatomフィードから抽出
スクリーンショット 2017-04-20 12.07.33.png
ZapierにはデータをごにょごにょするAppsがいくつか用意してあるので、今回のTriggerはそこからRSSを選択。
スクリーンショット 2017-04-20 12.12.56.png
Feed URLにatomフィードのURLを入力します。形式は以下の通り。
https://instans.example.com/@username.atom
ユーザページの末尾に拡張子を付けるだけです。

#Step 2. ツイートしたいものだけをフィルタ
スクリーンショット 2017-04-20 12.23.21.png
サイドバーに先ほど作ったTriggerの下に(+)マークがあるので、クリックしてFilterを選択します。以後、アクションを追加する時は全て同様にします。

スクリーンショット 2017-04-20 12.29.01.png
セットアップ画面が表示されるので、プルダウンするとTriggerで読込んだフィードの項目が選択できるので、項目の値で条件を設定します。ちなみに僕の設定はこんな感じです。

スクリーンショット 2017-04-20 13.48.03.png
Linkって項目は、メンションが付いている場合はメンション先のアカウントのURLが入ってますが、メンションが付いていない場合はhttps://activityschema.org/...って感じのURLが入ってるのでドメインを入れて条件としてます。(今後バージョンやインスタンスのコードの更新で変わるかも)

#Step 3. HTMLのクリーンナップ
MastodonのatomフィードにはプレーンテキストとHTMLの両方が吐き出されてますが、プレーンテキストではURLのプロトコル部とドメインの間に改行コード(?)が挿入されるので使えません。(Zapierでできるのかもしれないけど僕はよく判らないので)今回はHTMLをクリーンナップして使います。

スクリーンショット 2017-04-20 21.40.20.png
ZapierのApp、Formatterを使います。

スクリーンショット 2017-04-20 21.42.32.png
アクションはTextを選択

スクリーンショット 2017-04-20 21.46.07.png
TransformのアクションにはRemove HTML Tagsを選択。図のように、Step 1.で読込んだatomフィードの項目からRaw Content #textを選んでください。

#Step 4. 文字数を調整

Mastodonは500文字も打てますが、Twitterは140文字制限があるので文字数を調整します。挿入するアクションはStep 3.と同様にFormatterのTextアクションを使います。

スクリーンショット 2017-04-20 22.36.47.png
TransformのアクションはTruncate(切り詰める)を選びます。これはテキストを末尾から指定文字数になるまで切り詰めるアクションです。
Max Lengthは最大文字数です。この後でトゥートのURLを添付する分も考慮して、おおよそ120文字程度にしてあります。
Append Ellipsisは末尾に「...」を付けるかどうかです。どっちでもいいですけど、Twitterに流れた時にその先があるってのが判るように付けた方が良いかもしれないですね。

スクリーンショット 2017-04-20 22.39.25.png
Inputの項目なんですが、ここではatomフィードではなくて、Step 3.で調整したテキスト情報を使うので、画像のように選んでください。

#Step 5. トゥートのURLを短縮
スクリーンショット 2017-04-20 22.49.52.png
ここでも同様にFormatterのアクションを使いますが、Shorten URLという専用のアクションを使います。

スクリーンショット 2017-04-20 22.51.21.png
ここで選ぶのはStep 1.のatomフィードの項目からLink Alternateを選びます。

#Step 6. ツイート文を生成してツイートする
スクリーンショット 2017-04-20 22.53.41.png
既にZapierとTwitterアカウントを連携していればYOUR APPSという項目に出ていますが、上の検索か下の方にあるBUILT-IN APPSという項目に多分あります。

スクリーンショット 2017-04-20 22.57.03.png
アクションはいくつかありますが、今回はCreate Tweetを選びます。

スクリーンショット 2017-04-20 22.59.16.png
Messageでツイート文を構成しますが、ここではStep 4.まででクリーンナップ・文字数調整したテキストデータとStep 5.で短縮したトゥートURLを使います。
あと、僕はMastodonからの転送を区別するのに絵文字(Ⓜ️)を頭に付けてます。この辺はオリジナリティ発揮しちゃいましょう。
Should Shorten URLs?という項目はMessageで構成したツイート文の中にURLが含まれていれば短縮するかどうかです。短縮は既にしてるのでnoを選びます。

#問題点

実はトゥート文にURLが含まれている場合で120文字以上後半にかかるようなものは後ろから削られちゃいます。動作もあまり検証してないので多分ツイート上のリンクは404になっちゃうかもしれないです。

また上手く解決できる方法があったらご教示いただけると幸いです。

9
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?