マストドンにポストするワークフロー 機能全部入り

トゥートするAPIの機能を全て利用できるようにしました。
やるつもりはなかったのですが、時が経って全て忘れてしまってからやるのは大変なので今やりました。

テキストや画像を単純にポストするだけならRun WorkflowにInputするだけでできます。

テキストだけの投稿は、URLスキームでも可。

workflow://run-workflow?name=Post%20to%20Mastodon(Full)&input=URLエンコードしたテキスト

--

オプションの指定はDictionaryを作る必要があるので最初だけちょっと面倒ですが、難しくはありません。
Dictionaryの使い方がわからない方も、説明のスクリーンショットの通りにやれば大丈夫。


[Input](単・複)
Text, Numbers, URLs, Images, Photo media, Media, Dictionary

[Result]
トゥートのURL(投稿エラーの場合はDictionary)

インポート

▼本体
https://workflow.is/workflows/a36a46b17bba43ad944f2dfeb4c4a60d
▼OAuth認証をするワークフロー(前回と同じもの)
https://workflow.is/workflows/c7993dae85a74e89b9d7d4bf370103e2

使用開始までの手続き

前回のコピペなので既に読まれた方は「Inputの説明」まで飛ばしてもらって大丈夫です。

--

まずはOAuth認証をします。
以下の4つをスタンバイしてください。

  • アカウントのEmailアドレス
  • パスワード
  • インスタンスのドメイン(例 : mstdn.jp)
  • クライアント名

クライアント名というのは、Twitterにおける "Twitter for iPhone" とか "Tweetbot for iOS" とかのことです。投稿日時の右に表示されますのでできるだけかっこいい名前にしましょう。日本語も絵文字も使えます。

準備ができたらOAuth認証のワークフローを実行し、指示通りに入力していきます。
成功するとcliend_id、client_secret、access_tokenの3つがクリップボードにコピーされますので、パスワード管理アプリ等に格納してOAuth認証の完了です。


次に、トゥートするワークフロー本体の設定です。

フローの先頭あたりのTextに、アクセストークンとインスタンスのドメインを記入します。
アクセストークンをワークフローに直書きすると、セキュリティ的にはパンツを履かないでゴムの緩んだジャージだけ履いて手で押さえながらジョギングしているような状態ですので、セキュリティをマシにする処置を各自でお願いいたします。

くれぐれもアクセストークンを書き込んだままワークフローをシェアしてしまわないよう十分に気をつけてください。
流出させてしまった場合は、OAuth認証のワークフローを実行して認証解除を選択し、表示されたページでクライアントの認証を取り消してください。

Inputの説明

投稿文

Inputのアイテムの中からText、URL、Numberを抜き出し、改行を挟んで結合して本文とします。

API経由で投稿する場合は投稿文は必須のため、送れるものがない場合はポストする前にエラー処理します(ResultはNo Item)。
500文字を超えている場合もエラー処理します(ResultはNo Item)。

画像、メディアファイル

Inputにこれらが含まれる場合はアップロードしてトゥートに添付します。
添付できるのは4つまでのため、5つ目以降は除外して処理します。

オプション

ここからは、単一のDictionaryを作成してInputに含めることで指定できます。

visibility

Text型
トゥートの公開範囲を指定します。
このオプションを使用しない場合はアカウントのユーザー設定に従います。

  • direct
    • メンションしたユーザーだけに公開
  • private
    • フォロワーだけに公開
  • unlisted
    • 誰でも見られるが、ローカルタイムラインや連合タイムラインには載せない
  • public
    • 全てに公開

 
DictionaryでTextを選択し、↓のようにします。

これをInputに含めることでこのオプションが有効化されます。

sensitive

Boolean型
添付したメディアファイルを「不適切なコンテンツ クリックして表示」に指定します。
メディアファイルがない場合はこのオプションを使用しても何も起こりません。

DictionaryでBooleanを選択し、↓のようにします。

これをInputに含めることでこのオプションが有効化されます。

spoiler_text

Text型
このオプションに記述したテキストを警告文として表示し、投稿文は「もっと見る」のクリックの先に配置されます。
spoiler_textの値に何らかのテキストを記述することでこのオプションが有効化されます。
投稿文に対してのオプションですので、メディアファイルも隠したい場合はsensitiveを併用する必要があります。

DictionaryでTextを選択し、↓のようにします。

これをInputに含めることでこのオプションが有効化されます。

in_reply_to_id

Text型
特定のトゥートに返信したい場合に使用するオプションです。
実際に使用するシーンが思い浮かばないですが、機能全部入りとするために一応入れておきました。

DictionaryでTextを選択し、↓のようにします。

文字が切れてしまっていますがin_reply_to_idです。
これをInputに含めることでこのオプションが有効化され、指定したIDに対する返信となります。

フォトライブラリの画像を添付して投稿
フォロワーだけに公開
画像を「不適切なコンテンツ」に指定

Inputのアイテムはどのような順番でもOKです。

オプションのDictionaryの中身は、どのような順番でもOKです。
Dictionaryは最初の一つしか読み込まないようにしていますので、上の例のように一つのDictionaryにまとめてください。

↓ これはダメな例(Dictionaryが2つになっている)

スポンサーリンク
スポンサーリンク

4 件のコメント

  • 関連項目を検索中にこちらのサイトに目がとまり閲覧させていただきました
    お伺いしたいことがあるのですがこちらのWorkflowを試したところ「アクセストークンエラー」と表示がされました
    色々試したのですがパスワード、メール、ドメインなどの不足、間違いは無いのですが投稿が出来ない状態となっております
    改善策として何かご教授頂けると幸いです よろしくお願いいたします

  • 度々失礼いたします
    再度試したところ投稿できるようになりました
    こちらのアクセストークンの表記で1部欠けていたことがエラーの原因と判明しました
    度重なるコメント重複申し訳ありません
    遅くなりましたがこちらのWorkflowレシピを改めて使用させて頂きます
    ありがとうございます

    • 無事動作したようでよかったです。
      ワークフローを公開しても何の反応も得られず一人相撲を取り続けているばかりですので、実際に使ってみてくださった方のコメントはとてもありがたいです。

  • コメントを残す

    メールアドレスが公開されることはありません。