Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

とりあえず親和性が高そうな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になっちゃうかもしれないです。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした