ワークフローで写真を自動整理

Immichのワークフロー機能で、VRChatの写真を条件に合わせて自動でアルバムへ追加する方法

ぶいちゃフォト(Immich)のワークフローを使うと、アップロードされた写真を条件に応じて 自動でアルバムへ追加 できます。ここでは「特定のフレンドが写った VRChat の写真を、指定のアルバムへ自動で入れる」例で説明します。

ワークフローとは

ワークフローは、次の3つの部品を順につなげた自動処理です。

部品役割この記事の例
トリガー処理を始めるきっかけAssetMetadataExtraction(写真のメタデータを読み込んだとき)
フィルタ条件に合う写真だけを通すassetExifFilter(説明欄を正規表現で判定)
アクション条件に合った写真への処理assetAddToAlbums(アルバムへ追加)

ワークフロー一覧画面

例: フレンドが写った写真を自動でアルバムへ

全体の流れ

  1. VRCX などのツールで、VRChat の写真に一緒に写ったユーザーの情報(ユーザーIDなど)を、写真のメタデータ(説明欄)へ書き込みます。
  2. 写真をぶいちゃフォトへアップロードします(自動同期 が便利です)。
  3. Immich がアップロード時にメタデータを読み込みます。
  4. 説明欄に指定したユーザーIDが含まれていれば、指定のアルバムへ自動で追加されます。

VRCX 側の設定

VRCX の設定で、スクリーンショットにワールド/プレイヤー情報を保存するオプションを有効にしてください。設定画面の該当オプションから切り替えられます。メタデータの書き込み形式は VRCX のバージョンによって異なる場合があるため、実際にアップロードした写真の説明欄を確認してからフィルタを作ってください。

JSON を編集する

ワークフローの編集画面では、ビジュアル編集と JSON 編集を切り替えられます。JSON 編集では次のように書きます。

ワークフローのJSON編集画面
ワークフローJSON編集画面(編集内容はビジュアル編集にも反映されます)
{
  "name": "テスト",
  "description": null,
  "enabled": true,
  "trigger": "AssetMetadataExtraction",
  "steps": [
    {
      "method": "immich-plugin-core#assetExifFilter",
      "config": {
        "pattern": "\"id\":\"usr_(A|B|C|D)\"",
        "property": "description",
        "matchType": "regex"
      },
      "enabled": true
    },
    {
      "method": "immich-plugin-core#assetAddToAlbums",
      "config": {
        "albumIds": ["albumIds"]
      },
      "enabled": true
    }
  ]
}

各項目の意味

項目意味
nameワークフローの名前。好きな名前に変えられます
descriptionワークフローの説明(なくても構いません)
enabledtrue で有効、false で無効
trigger始めるきっかけ。AssetMetadataExtraction はメタデータ読み込み時
steps上から順に実行される処理(フィルタ → アクション)
method使う部品。assetExifFilter がフィルタ、assetAddToAlbums がアルバム追加
property判定する項目。ここでは説明欄(description)
matchType判定方法。regex は正規表現
pattern正規表現のパターン
albumIds追加先アルバムのID(複数指定可)

pattern の読み方

JSON の中では " を \" と書くため、上の pattern は実際には次の正規表現を意味します。

"id":"usr_(A|B|C|D)"

説明欄に "id":"usr_ に続いて、A、B、C、D のいずれかが入っている部分があれば一致します。(A|B|C|D) は「いずれか」を表します。

実際の運用では、matchType を "contains"(部分一致)にして、pattern に "id":"usr_<フレンドのID>" を指定しています。正規表現を使わない簡単な方法です。VRCX が説明欄に "id":"usr_..." の形で書き込むことは、実運用で確認済みです。

A〜D を自分のフレンドのIDに置き換えてください

例の A、B、C、D は仮の値です。実際のユーザーIDは usr_ の後ろが長い英数字とハイフンの文字列です。usr_ に続く部分を、対象のフレンドのID(usr_ を除いた部分)に書き換え、複数人なら | で区切ります。人数が1人なら usr_(ID) の形で構いません。IDの中のハイフンは、そのまま書けます。

albumIds を実際のアルバムIDに置き換える

例の "albumIds" は仮の文字列です。追加先アルバムの実際のIDに置き換えます。

1

アルバムを開く

ぶいちゃフォトのWeb版で、追加先のアルバムを開きます。

2

URLの末尾を確認

ブラウザのアドレスバーのURLは https://photos.buicha.jp/albums/ の後ろにIDが続く形です。この 末尾の文字列がアルバムID です(アルバムを開いたときのアドレスバーのURLのうち、/albums/ の後ろの部分です)。

3

JSON に貼り付け

"albumIds": ["ここにID"] のように、ダブルクォートで囲んで入れます。複数のアルバムに入れたいときは , で区切って並べます。

画面の使い方

ビジュアル編集とJSON編集の切り替え

編集画面の上部にある「ビジュアル」と「JSON」のタブで切り替えます。どちらで編集しても内容は共通です。

ビジュアル編集画面

保存

編集後は、画面右上の「保存」を押してください。保存しないと変更は反映されません。

有効/無効

enabled を true にすると有効、false にすると無効になります。ワークフロー全体と、各ステップのそれぞれに設定があります。うまく動かないときは、ワークフローとステップの両方が有効になっているか確認してください。

動作の確認

ワークフローは、設定後に読み込まれる写真に対して動作します。確認するには、対象のIDが説明欄に入った写真を新しくアップロードして、アルバムに追加されるか見てください。

うまくいかないとき

  • ワークフローとステップが有効になっているか
  • pattern が写真の説明欄の実際の文字列と一致しているか(説明欄を確認してください)
  • usr_ のIDを自分のフレンドのIDに置き換えたか
  • albumIds を実際のアルバムIDに置き換えたか
  • JSON のカンマや括弧が壊れていないか