Pipedream 経由で Spotify の曲情報を Misskey に投稿する

Web

目指すゴール

Spotify で特定のプレイリストに曲を追加すると、Misskey 側にノートが自動で投稿される

使用したサービス

Pipedream
https://pipedream.com/

  • API を使ったいろいろな操作をブラウザ上で作成・実行できるサービス
  • 料金プランは以下
  • Free プランでも結構使えそう
    • Workflow / App / Event Source の作成数に制限なし
    • 1ヶ月に 10,000 万回、1日に 333 回まで呼び出し可能

参照するリファレンス

作業ログ

Misskey 側でやること

アクセストークンの発行
  • 設定 > API を選択
  • [アクセストークンの発行] を押下
  • 任意の名前を入力
    • 今回は Spotify連携用 にした
  • 権限を設定
    • ノートを作成・削除する だけあればOK
  • 右上のチェックアイコンで確定
  • 表示された文字列をコピペで控える
    • あとから参照できないので、わからなくなったら再発行が必要

Pipedream 側でやること

以降のスクリーンショットは、動作成功後にあとから撮影したもの。実際の新規作成時画面とは少し異なる。

1:トリガーの設定
  • Spotify → New Track in Playlist を選択
  • CONFIGURE

    • Spotify のアカウントにログイン
    • プレイリストが読み込まれたら、トリガー操作に使うプレイリストを選ぶ
  • SELECT EVENT

    • 実行間隔を設定
      • 今回は1分ごとを指定
    • Spotify で選択したプレイリストに曲を追加してみて、取得できるか試す
  • RESULT

    • 成功すると JSON 形式でデータが返ってくる
2:Webhook の設定
  • Step を追加 → HTTP / Webhook を選択
  • Send POST Request を選択
  • CONFIGURE

    • ノート作成のエンドポイントを入力
      https://misskey.io/api/notes/create
    • Body > Content Type で JSON 形式を選択
      application/json
    • Misskey 側に送る JSON データを作成する
      • 詳細後述
  • RESULTS

    • Test を実行すると Misskey 側に投稿が走る
    • 問題なければ Deploy
3:動作チェック

  • 作成した Workflow の INSPECTOR 画面を開く
  • Spotify 側で設定したプレイリストに曲を追加
  • 1分待ってみて、正しく動作すればOK
    • Free プランの上限に収まるように実行頻度を下げておく

JSON データの書き方

Misskey API のリファレンスを参考に以下を指定する。

KEY VALUE
i 取得したアクセストークン
text ノートに記載する本文
visibillity 公開範囲

今回 text に設定した文字列は以下。

#紹介したい曲とか\n{{steps.trigger.event.track.name}} - by {{steps.trigger.event.track.artists[0].name}}\n{{steps.trigger.event.track.external_urls.spotify}}
  • 変数部分については、実際の値を見ながら挿入するものを選べる
  • 改行は \n で可能
  • アーティスト情報は連想配列で格納されるため、複数アーティストが参加している作品の場合、上記の指定だと先頭のアーティストの情報しか出力されない
    • ちゃんとやるなら文字列を操作する Step が別で必要

特定のチャンネルに投稿する(2023-02-22 追記)

最近「Misskey音楽部」というチャンネルをフォローして、みんな気ままに音源のURLを投げていて良さそうだなあと思ったので、投稿先をこちらに設定してみる。

チャンネルIDを調べる

  1. Misskey にログインした状態で「チャンネル」画面(https://ホスト名/channels)を開く

  2. 「フォロー中」の一覧から投稿先に設定するチャンネルを右クリックし、「リンクをコピー」を選択

  3. 以下のようなURLが取得できる

    https://misskey.io/channels/xxxxxxxxxx
  4. URL 末尾にある10桁の乱数を控える(例:「Misskey音楽部」の場合は 9aqpbtek6g

JSON データ上でチャンネルを指定

Misskey 側に送る JSON データを作成する際に、 channelId パラメータを設定する。

KEY VALUE
i 取得したアクセストークン
text ノートに記載する本文
visibillity 公開範囲
channelId 投稿先のチャンネルID

参考エントリー

Comments

  • Name : やじょ

    Googleで検索してこちらに辿り着きました。とても丁寧に書いていただいたおかげで私も自動で投稿できるようになりました。ありがとうございます。
    困ったことがあったのでご相談だったのですが、一度プレイリストに入れていたものを削除した後、再度入れ直すことでその曲を投稿できるかと思って試したものの自動で投稿されませんでした。もしも何か良い方法などご存じの場合は教えていただけると助かります。
    • Name : サトウ管理人

      コメントありがとうございます。無事動いたようでよかったです!
      曲を入れ直した時の挙動、完全に予想で書きますが、以下のような可能性があるかなと思います。

      - トリガー側が「前回取得した内容と差分があったら発火」といったロジックで組まれていて、そもそも引き金を引けてない
      - Misskey側が、連続投稿対策で「一定時間以内は同じ内容をノートできない」などの仕様になってる

      どこでコケてしまっているかを確かめて、色々トライしてみるのがよいかと。
      後者の場合はノート本文が全くおなじにならないように工夫したら動くかも…?
  • Name : やじょ

    返信いただきありがとうございます。
    >トリガー側が「前回取得した内容と差分があったら発火」といったロジックで組まれていて、そもそも引き金を引けてない

    おそらくこれな気がしています。
    リストから削除された場合のトリガーがあった場合擬似的にやりようはあるかと考えたのですが、特にそういう投稿がされていないようなので、とりあえず一回投稿したものは新しいプレイリストを作成して共有という流れにしようかと思っています。

    全く未知の世界だったのですが少し触れることができてよかったです。
    ご丁寧にありがとうございました。

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。