mcpField
O
organize-files

organize-files

github.com/jxxghp生産性12.0k53 回インストール今日更新
リポジトリ

organize-files について

MoviePilot を使ってメディアを整理するスキルです。識別や重複確認、対象を限定した転送、任意のメタデータ取得を行い、確認済みのメディア情報と転送状態を保ちながらストレージを管理できます。

主な機能

  1. 01範囲を限定したストレージ確認
  2. 02メディア分類とタイトル認識
  3. 03重複と転送履歴の確認
  4. 04確認済みメディア単位の転送
  5. 05タグ・カバー・歌詞の任意取得

活用シーン

  1. 01指定した映画・テレビ番組フォルダーの整理
  2. 02確認済み音楽アルバムの転送
  3. 03再整理前の転送状態確認

MCP 対応

MoviePilot API を使い、ストレージ確認、メディア認識、ライブラリ照会、ファイル転送、任意のメタデータ取得を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jxxghp/moviepilot --skill organize-files

インストール後、Claude Code で/organize-filesを入力して読み込まれたか確認します。

詳細

ファイルの整理

すべての MoviePilot の業務操作には moviepilot_api を使用してください。廃止されたファイル、認識、転送、履歴のツールは利用できません。

ワークフロー

  1. 対象範囲を確定します。ユーザーがパスを指定した場合は、そのパスを使用します。ダウンローダーのタスクが指定された場合は、downloader-operation と固定の scripts/mp-downloader.py ヘルパーを使用してインスタンスを特定し、tasks.list を呼び出します。設定済みのルートのみが指定された場合は、storage.settings を呼び出します。選択したディレクトリを確認するには storage.list を使用します。明示的かつ限定された範囲が指定されていない限り、広範な共有ルートを処理しないでください。
  2. ファイルを映画、テレビ番組、1件の音楽録音、1枚の完全なアルバム、字幕・サイドカー、または無関係なコンテンツに分類します。同じディレクトリにあるというだけの理由で、無関係なメディアをまとめないでください。
  3. 代表的なタイトルまたはパスを指定して media.recognize を呼び出します。確信が持てない場合は media.search を呼び出します。完全一致する候補が複数残る場合は、ask_user_choice を使用します。ID を推測したり、翻訳したりしないでください。
  4. media_source と media_id の正確な組み合わせを保持します。テレビ番組の番号が曖昧な場合は、media.detail でシーズンの詳細を確認します。音楽の場合、録音は1トラック、アルバムは複数トラックを含む1つのディレクトリ、アーティストは閲覧のみを対象とします。
  5. 重複のリスクが重要な場合は、library.exists を呼び出します。既存の転送レコードが再整理に影響する場合は、transfer.history を確認します。
  6. 状態を変更する転送の前に、ソース、転送先の識別情報、メディアの種類、シーズンまたは音楽エンティティ、ストレージ、モードを要約します。ユーザーの依頼がその操作を正確に承認している場合、または確認を得た場合にのみ続行します。
  7. 検証済みの単位ごとに transfer.file を1回呼び出します。アルバムの場合は、サポート対象の音声ファイル数が選択したアルバムの詳細と一致することを確認してから、アルバムのディレクトリを1回だけ転送します。
  8. 要求された場合は、転送の成功後に media.scrape を呼び出します。タグ、カバー、歌詞の実際の件数を報告し、歌詞がすべて見つかったと決めつけないでください。

構造化された呼び出し

  • ディレクトリ一覧:body にストレージ、パス、ページネーション、ソートを指定して storage.list を呼び出します。
  • 認識:query にタイトルまたはパスを指定して media.recognize を呼び出します。
  • 検索:query にタイトル、種類、ソースの制約を指定して media.search を呼び出します。
  • 詳細:path_params.media_id と識別情報・種類を query に指定して media.detail を呼び出します。
  • ライブラリ確認:正確な識別情報を query に指定して library.exists を呼び出します。
  • 転送:手動転送リクエストを body に指定して transfer.file を呼び出します。
  • 実際の転送レスポンスには、バッチが失敗と報告された場合でも data.items が含まれます。各項目の state を確認してください。accepted と retry_wait はバックグラウンド処理が残っていることを示します。実行と完了が確認できるのは completed のみです。manual_review の場合は、先に転送キューでタスクを解決する必要があります。failed と skipped はインポート済みを意味しません。すでに accepted または completed の項目が含まれるバッチ全体を再送信しないでください。プレビューのレスポンスは計画用データであり、実行状態は含まれません。
  • スクレイプ:path_params.storage、項目ファイルを body、正確な識別情報・種類のフィールドを query に指定して media.scrape を呼び出します。

ソースが見つからない、ディレクトリ設定がない、識別情報が曖昧なまま、アルバムが混在または未完成と思われる、あるいは指定された転送先が無関係なメディアを上書きする場合は、転送を中止して報告してください。

整理の復旧と履歴コンテキスト

storage.list が返す完全なファイル項目を保持してください。これには、任意の modify_time_ns と change_time_ns も含まれます。ローカルバージョンの認証情報を独自に生成しないでください。復旧処理でソースまたはターゲットのバージョン変更が見つかった場合は、手動レビューの状態を報告し、現状を保持してください。検証を回避するために、バッチ全体を再送信しないでください。 過去の履歴を再利用してテレビ番組を整理する場合は、episode_group を保持してください。異なるエピソードグループは分けて処理してください。 ディレクトリ整理の overwrite_skipped も未インポートを意味します。成功として報告しないでください。

コメント