moviepilot-api について
moviepilot-apiは、構造化APIゲートウェイ経由でMoviePilotを操作するスキルです。エージェントが文書化された操作を選び、ユーザーの権限範囲を守り、結果を確認できるようにします。
主な機能
- 01構造化操作の選択
- 02ユーザー範囲内のサブスクリプション操作
- 03認可と確認のチェック
- 04カテゴリ別APIコントラクト
- 05書き込み結果の検証
活用シーン
- 01メディアやダウンロードの検索・管理
- 02ユーザー所有権に基づくサブスクリプション管理
- 03プラグイン、サイト、ストレージ操作の確認
- 04依頼された変更後の結果確認
MCP 対応
通常のMoviePilot業務操作には、ホストが提供する `moviepilot_api` ツールを使用します。ゲートウェイは固定のHTTPルート、現在のユーザー認証、認可、確認ポリシーを適用し、任意のHTTPアクセスは提供しません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jxxghp/ moviepilot --skill moviepilot-apiインストール後、Claude Code で/moviepilot-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
code-execution.mdapi/config.mddashboard.mddatabase.mddownload.mdfilter.mdlibrary.mdmedia.mdmusic.mdplugin.mdrecommendation.mdscheduler.mdsearch.mdsite.mdslash.mdstorage.mdsubscription.mdsubtitle.mdsystem.mdtorrent.mdtransfer.mdworkflow.md詳細
MoviePilot API
ログで報告された過去の無効なプラグインインスタンス ID に対して、plugin.instance.purge
は、config: true のみを指定し(その他すべてのスコープフラグは false)、正確な ID を受け付けます。削除されるのは、無効化されている空のホストレコードのみです。保存済みの設定、表示の上書き、デフォルトの対象、ログの上書きがあるレコードは削除されません。空の設定オブジェクトが保存されている場合も、レコードは保護されます。この復旧手順では、プラグインの停止やプラグインデータ、データベース、ファイルの削除は行われません。設定のあるレコード、複製されたレコード、存在しないレコード、複数のスコープを指定した要求は拒否されます。
永続的な転送ステップ台帳の処理外で未処理の例外が発生すると、自動再実行は停止し、unhandled_execution_review 診断が作成されます。失敗したプラグインを修復または無効化し、ファイルを調査してから、適用されなかった(not_applied)ものとして解決してください。必要に応じて、まず追跡されていない影響をロールバックしてください。この診断では適用済み(applied)での解決は拒否され、記録済みのファイル操作の証拠が置き換えられることもありません。
関連する過去の会話や以前のツールの証拠が必要な場合は、利用可能であればホスト提供の
session_search ツールを使用してください。セッションを特定してから、アンカーされたメッセージを読み取ります。過去の結果はコンテキストであり、現在の状態の証明でも、書き込みを繰り返す許可でもありません。安定した設定には search_memory を使用してください。以前の activity
カテゴリは存在しません。どちらのツールも API 操作でも外部 MCP ツールでもありません。
通常の MoviePilot 業務操作には moviepilot_api を使用してください。このツールが受け付けるのは operation_id、path_params、query、body のみです。ホストが固定の HTTP メソッドとパスを選択し、現在のユーザーの認証トークンを作成して、認可と確認のポリシーを適用し、API 応答を返します。
ゲートウェイは HOST と PORT を使用してローカルのバックエンドリスナーに直接接続し、環境プロキシを迂回します。APP_DOMAIN は Passkey のオリジンなどの公開 URL 用であり、ゲートウェイのベース URL ではありません。コンテナー内から公開リバースプロキシに到達できない場合でも、設定を維持してください。
subscription.add、subscription.update、subscription.delete には、操作とスコープに対する認可が必要です。これらの操作では、チャンネル管理者の場合も含め、チャンネルアカウントに紐付けられた有効な MoviePilot ユーザーが使用されます。作成されるサブスクリプションはそのユーザーに属します。一般ユーザーが更新または削除できるのは、自分のサブスクリプションのみです。チャンネルユーザーが未紐付け、または無効な場合は、管理者の ID に切り替えるのではなく、有効なアカウントを紐付けてから再試行してください。
subscription.list は現在のユーザー ID と、サブスクリプションの所有者によるフィルタリングを使用します。独立したグローバルサブスクリプション連携エンドポイントには、有効な API_TOKEN と管理者 ID が必要です。このエンドポイントはこのスキルで許可されている操作の範囲外であり、ユーザースコープを迂回するために使用してはなりません。
QQ では、qq_userid または qq_openid のいずれかが現在のチャンネル ID と一致すればよく、Feishu では、feishu_userid または feishu_openid のいずれかが一致すればよいものとします。いずれか 1 つのフィールドが一致すれば十分ですが、すべての候補フィールドを通じて、一致先が有効な MoviePilot ユーザー 1 人だけに特定されなければなりません。回避策として openid を userid フィールドにコピーしたり、曖昧な紐付けを迂回したりしないでください。
subscription.update では、変更せずに維持する設定は省略してください。サポートされているオプション設定をクリアするには、JSON の null を送信してください。正確なフィールドと、フォームでの空文字列の互換性ルールについては、サブスクリプション API を参照してください。
音楽のダウンロードでは、既存のメディアカテゴリを維持し、既存のカテゴリがない場合は中国語の音楽ラベルをダウンローダーのカテゴリとして使用します。ライブラリやメタデータのカテゴリは変更しません。
qBittorrent は引き続き MoviePilot で設定された自動管理トグルに従います。有効な場合はカテゴリルールが保存先を制御します。無効な場合は、MoviePilot はカテゴリを省略して自動管理を明示的に無効化し、指定された save_path を適用します。既存のタスクは再分類も移動もされません。
このファイルは、ルーティングおよび実行ガイドとして意図的に維持されています。詳細な操作契約は、api/ 配下のリンク先カテゴリファイルに記載されています。選択した操作に必要なカテゴリファイルだけを読み込んでください。デフォルトですべてのカテゴリファイルを読み込まないでください。
URL、メソッド、認証ヘッダー、API キー、アクセストークンは決して提示しないでください。廃止されたツール名や moviepilot tool MCP コマンドには決してフォールバックしないでください。このスキルに記載されていない操作を、任意の HTTP リクエストで模擬しないでください。より具体的なスキルを使うか、構造化された操作が利用できないことを説明してください。
SMB での整理では、ソースの FileItem.storage と共有相対の path を一緒に保持してください。SMB にマッピングされたダウンローダータスクのパスには smb: プレフィックスが付いたままにしてください。これらをローカルファイルシステムのパスとして解釈しないでください。同一ストレージ内の SMB コピー、移動、ハードリンク操作はサーバー上で実行されます。サーバーがこれらを実行できない場合は、メディアをダウンロードして再アップロードせずに失敗します。これは、埋め込み音楽タグなどの独立したコンテンツ処理操作には影響しません。shares: ["video", "downloads"] の場合、パスは共有名から始まり、たとえば /downloads/Movie.mkv や /video/Movie.mkv となります。従来の share では、パスは共有相対のままです。共有間の移動では、ソースを削除する前にサーバー上でコピーが行われますが、アトミックではありません。共有間のハードリンクはサポートされていません。パスモードを切り替える際は、保存済みのディレクトリおよびダウンローダーのマッピングを更新してください。
全体的なワークフロー
- 以下のカテゴリインデックスから、正確な
operation_idを選択します。 name="moviepilot-api"とfile="api/<category>.md"を指定してread_skillを再度呼び出し、完全な単独のカテゴリ契約を読み込みます。Skill ドキュメントにはread_fileを使用しないでください。- 選択したカテゴリファイルには、呼び出しの構築に必要な共通のボディモデルがすでに含まれています。2つ目の Models ドキュメントを読み込まないでください。
- 宣言されたフィールドのみを使用して、ゲートウェイ呼び出しを1つ構築します。ソース固有の識別子を保持し、文書化されたページネーションフィールドを使用してください。オブジェクトおよび配列のボディはネイティブの JSON 値として渡し、選択した操作で許可されている場合にのみ null を渡します。文字列のボディとして許可されるのは、
system.upgrade.devのリテラル"dev"だけです。モデルがボディ全体を JSON エンコードした場合、すべてのゲートウェイのエントリポイントは、検証とディスパッチの前にオブジェクト、配列、または null のいずれか1層を復元します。ネストされた文字列値は変更されず、選択した操作の契約は引き続き適用されます。操作フィールドをoperation_idの隣に展開しないでください。それぞれを宣言されたpath_params、query、またはbodyコンテナに入れてください。別の操作のページネーションやフィルターをコピーしないでください。invalid_inputレスポンスには、失敗したフィールドとinput_contractが含まれます。そのフィールドと、必要なすべてのフィールドを修正してから再試行してください。無効な入力は、API リクエストが送信される前に拒否されます。 - 副作用を伴う操作では、アクション、対象、スコープに対する権限を確認します。ユーザーによる明示的な依頼または以前の承認を再利用し、改めて確認しないでください。確認するのは、重要な選択肢や拡張されたスコープが不足している場合に限ります。ホストが要求する確認に従ったうえで、ゲートウェイ呼び出しを一度だけ実行します。
- 報告または依存する操作を行う前に、
success、execution_outcome、エラー、空の結果、コレクションのメタデータを確認します。失敗を成功として報告しないでください。 - 契約で必要とされている場合は、カテゴリの読み取り確認用操作で書き込みを検証してください。結果が
unknownの書き込みを繰り返さないでください。
呼び出し形式の例
例の ID は、先行する呼び出しで返された正確な識別子に置き換えてください。 これらは個別の操作契約であり、互換性のあるパラメーターのテンプレートではありません。
{"operation_id":"media.detail","path_params":{"media_id":"27205"},"query":{"media_source":"tmdb","type_name":"\u7535\u5f71"}}
{"operation_id":"subscription.execution.list","query":{"limit":10}}
{"operation_id":"site.rss","query":{"page":1,"count":20}}
media.detail には、ソース固有の ID とそのソース/タイプの両方が必要です。最近のサブスクリプションの実行では、page や count ではなく limit を使用します。site.rss は RSS 対応サイトを一覧表示します。site_id フィルターは受け付けません。
media.detail と transfer.file では、type_name に movie、tv、または music を指定できます。subscription.add では、同じ値を type に指定できます。対応する中国語のラベルも引き続きサポートされています。
API カテゴリー索引
各カテゴリーのファイルには、その名前空間の操作契約がすべて記載されています。 操作の正確な情報源として、カテゴリー契約と frontmatter の許可リストを使用してください。
| カテゴリー | 詳細ファイル | 操作の名前空間 | 用途 |
|---|---|---|---|
| 設定 | api/config.md | config.* | 識別子、公開/ユーザー設定、システム設定の確認と更新 |
| ダッシュボード | api/dashboard.md | dashboard.* | メディア、ストレージ、プロセス、システム、ダウンローダー、CPU、メモリ、ネットワーク、転送の概要 |
| データベース | api/database.md | database.backups.* | 管理者向けバックアップのライフサイクル |
| ダウンロード | api/download.md | download.* | ダウンロードの送信、クライアント、パス、実行中のタスク、履歴 |
| フィルター | api/filter.md | filter.* | 組み込み/カスタムルール、グループ、テスト |
| ライブラリ | api/library.md | library.* | 存在確認と最新メディアの確認 |
| メディア | api/media.md | media.* | メディアの検索/詳細、認識、スクレイピング、スケジュール、ソース、人物、シーズン、分類 |
| 音楽 | api/music.md | music.* | 認識、グローバルおよびタスクごとの CUE ポリシー、探索、アルバム、アーティスト、テキストの正規化、エディションの優先順位、キャッシュ管理 |
| プラグイン | api/plugin.md | plugin.* | プラグインマーケット、インストール/ランタイム、設定、ソース、フォルダー、評価、リリース、統計 |
| おすすめ | api/recommendation.md | recommendation.* | おすすめ一覧 |
| スケジューラー | api/scheduler.md | scheduler.* | スケジューラーの一覧、進捗、実行 |
| 検索 | api/search.md | search.* | タイトル、トレント、検索結果、おすすめの検索 |
| サイト | api/site.md | site.* | サイトの検出、認証、Cookie、ユーザーデータ、リソース、RSS、優先順位、統計 |
| スラッシュ | api/slash.md | slash.* | スラッシュコマンドの検出と実行 |
| ストレージ | api/storage.md | storage.* | ストレージ設定、参照、ディレクトリ、名前変更、削除 |
| サブスクリプション | api/subscription.md | subscription.* | サブスクリプションの CRUD、検索/更新、履歴、ファイル、共有、フォロー、ステータス |
| 字幕 | api/subtitle.md | subtitle.search.* | 字幕タイトルとメディアの検索 |
| システム | api/system.md | system.* | バージョン、更新、再起動、モジュール、ネットワーク、使用状況 |
| トレントキャッシュ | api/torrent.md | torrent.cache.* | トレントキャッシュの確認、更新、再識別、削除 |
| 転送 | api/transfer.md | transfer.* | 転送キュー/履歴、ファイル、命名、手動レビュー、再試行、ターゲットパス |
| ワークフロー | api/workflow.md | workflow.* | ワークフローの定義、アクション、実行、共有、ライフサイクル |
各カテゴリーのファイルは単独で完結する契約です。そのカテゴリーに必要な操作の詳細と、共通のリクエスト/レスポンスボディの Models が記載されています。操作を追加または移動する場合は、該当するカテゴリーのファイル、この索引、frontmatter の許可リスト、対応するゲートウェイ契約をすべて更新してください。
API サーフェスの範囲
/api/v1/widget/* 配下のシステムウィジェットエンドポイントは、このスキルおよびエージェントのツールカタログの対象外です。コンテキストの取得、登録、所有者による取り消しには既存のメインログインを使用します。スナップショットの読み取りと自身による取り消しには、別途、有効期限付きの読み取り専用 Bearer を使用します。通常の API/MCP ログイン認証情報として使用したり、ユーザーに代わってウィジェットの権限を有効化、ローテーション、エクスポートしたりしないでください。コンテキストの読み取りによって認証情報を発行またはローテーションしてはなりません。プロトコルとユーザーの対象範囲については docs/widgets.md を参照してください。システム拡張機能はメインログイントークンを保持してはなりません。
プラグインのメタデータには、任意の HTTP(S) ドキュメントリンクである plugin_readme が含まれる場合があります。UI はリンクがない場合、管理者 REST エンドポイント GET /api/v1/plugin/readme/{plugin_id}?repo_url=... を通じて解決します。このエンドポイントはプラグインをインストールせずに url または null を返します。このエンドポイントによってエージェントの操作が追加されることはありません。
ソースが紐付けられているインストール済みプラグインについては、そのリポジトリに新しいバージョンがある場合に限り、plugin.market に更新が表示されます。別のリポジトリにより新しいバージョンがあっても、has_update は発生しません。代替ソースを確認するには plugin.source.options を使用してください。ソースの切り替えには、引き続き明示的なソース変更が必要です。ソースが紐付けられていないインストール済みプラグインでは、ソース選択のためにマーケットの候補が引き続き表示されます。
操作にはIDスコープが宣言されています。public はチャンネルアカウントの紐付けを必要とせず、外部の公開メタデータを読み取ります。bound_user は、安定したチャンネル送信者 ID に紐付けられているアクティブな MoviePilot ユーザーを使用します(Web では認証済みユーザー ID を使用します)。admin には管理者権限が必要です。読み取り専用であることは、公開を意味しません。チャンネルのニックネームによって本人確認を行うことはありません。個人記録およびサブスクリプションの書き込みには、既存の所有権と権限の確認が引き続き適用されます。
ID の解決に失敗した場合は、ゲートウェイが実際に返した対処方法のメッセージと送信者 ID を伝えてください。チャンネルユーザーは、アバター > 個人情報 > アカウント紐付けから自身の MoviePilot アカウントを紐付け、該当チャンネルの名前付きフィールドに入力して保存します。「設定 > ユーザー」に紐付けページがあると案内したり、ニックネーム/グループ/ボット ID で代用したり、曖昧な紐付けエラーをネットワークの問題と判断したり、Web ユーザーに通知チャンネルの紐付けを求めたりしないでください。公開操作に紐付けは必要ありません。
このスキルは、エージェントが呼び出せる MoviePilot ビジネス API サーフェスの全体です。allowed-api-operations 内のすべての操作には、カテゴリファイル内の厳密なパラメーター契約と、デフォルトの full スキーマモードにおける対応する MCP tools/list 分岐があります。X-MCP-Schema-Mode: compact を明示的に送信するクライアントには、サイズが大きすぎるスキーマのベストエフォート投影が返されます。厳密な操作契約は、ここおよび GET /api/v1/mcp/tools/moviepilot_api/schema から引き続き参照できます。任意の REST ルートへの隠れたフォールバックはありません。
MoviePilot の基盤となる OpenAPI ドキュメントの方が大きいのは、Web UI、認証、アカウントのライフサイクル、バイナリおよびストリーミングレスポンス、コールバック、互換性エンドポイント、GitHub の認識/表示用ルートも提供しているためです。これらのルートは意図的にこのスキルには含めていません。掲載されていないルートの機能をエージェントが使用するには、次のいずれかに該当する必要があります。
- このスキル内の安定した集約操作として表現されている。
downloader-operation、mediaserver-operation、または独自の厳密なアクション契約を持つ別のドメインスキルが所有している。- ホストのトランスポート、ID、UI、ストリーミング、バイナリ、または診断動作用として予約されており、そのためエージェントのビジネスアクションとして利用できない。
- ロール、効果、確認、復旧、結果、および英語のパラメーター契約が追加されるまで、明示的に未承認である。
ルートごとに管理されているインベントリは、app/agent/policy/api.py 内の固定レジストリです。OpenAPI が変更された際に明示的な所有権の判断が行われていないと、ドリフトテストは失敗します。
管理者向けの復旧ルート POST /api/v1/history/transfer/{history_id}/discard-corrupt は、認証済み管理クライアントからの直接利用向けに予約されており、エージェントが呼び出せる操作ではありません。このルートは履歴レコードを保持したまま、破損したタスク状態を消去します。
呼び出し契約
MCP の操作とフィールドの説明は中国語で記述されています。操作 ID、フィールド名、列挙値、リクエストの形式は、ドキュメントに記載された正確な表記を維持してください。簡易スキーマでは、省略された分岐に関する説明が書き換えられています。入力を正確に確認するには、完全なスキーマを使用してください。
サブスクリプションを状態 S に設定すると、新規サブスクリプションタスクやサイト再試行タスクを含む、キュー内および実行中の自動検索が安全な境界で停止します。明示的なサブスクリプション検索は、一時停止中でも検索とダウンロードを 1 回実行できます。その実行を停止するには、実行バッチをキャンセルしてください。一時停止またはキャンセルをしても、ダウンローダーにすでに送信されたタスクは削除されません。
次の形式でゲートウェイを呼び出してください。
{
"operation_id": "media.search",
"path_params": {},
"query": {"title": "The Wandering Earth", "type": "media"},
"body": {}
}
共通の読み取りおよびダウンロードの契約
search.recommend は、check_only=true の場合、検索結果を読み込まずに現在のステータスを読み取ります。
無効なおすすめは、ただちに disabled を返します。force=true は読み取り専用フラグより優先され、新しいタスクを開始するために候補を読み込みます。
ブラウザーのエンドポイント /media/status と /subscribe/calendar は Agent の操作カタログの対象外です。これらに対するゲートウェイ呼び出しを作り出さないでください。
まずタスクに対応する操作を選び、その操作で宣言されているフィールドのみを送信してください。共通の検証契約は次のとおりです。
| operation_id | path_params | query |
|---|---|---|
subscription.find | media_id | media_source、任意の season、music_type |
subscription.list | なし | 任意の page、count |
download.tasks.active | なし | 任意の page、count、name |
site.list | なし | 任意の page、count、name、status=all|active|inactive |
サブスクリプションの実行ログは、ブラウザーのリソースエンドポイントです。
GET /api/v1/subscribe/{subscription_id}/logs(SSE、または length=-1 を指定したテキスト)
および /logs/download(ZIP)が該当します。これらには既存のリソース Cookie が必要で、サブスクリプションの所有権が確認されます。JSON ゲートウェイや MCP ツールではありません。ログファイルのパスを渡したり、call_api 経由で呼び出そうとしたりしないでください。
サポートされているサブスクリプション操作を通じてサブスクリプションのステータスを読み取ってください。検索タスクが完了しても、サブスクリプションが完了したことにはなりません。
download.add の body には、torrent_in(少なくとも title と enclosure)に加え、同階層の media_source と media_id が必要です。マグネット URI を url に入れたり、メディアの識別情報やフィルターを query に移したりしないでください。書き込みが unknown を返した場合は、決して再試行せず、まずサポートされている読み取り操作で実際の状態を確認してください。
候補の site ID とダウンロード URL を保持してください。直接 HTTP(S) の torrent では、site_cookie を省略できます。バックエンドは、ダウンロード URL のスキーム、ホスト、ポートが一致する場合に限り、設定済みサイトの Cookie と User-Agent を、不足している値に補います。サイト ID がない場合、これには一致する設定済みサイトがちょうど 1 つ必要です。
明示的な認証情報とプロキシの選択は保持されます。マグネットおよび 2 段階のトークン交換によるダウンロードでは、既存の認証情報のルールが適用されます。
subscribe_id、hashString、plugin_id、workflow_id、media_id、storage、rule_id、nameなどのルートプレースホルダーはpath_paramsに入れてください。- GET のフィルターと制御値は
queryに入れてください。ゲートウェイは GET の値をbodyでも受け付けますが、以下の保護されたシークレットのフローを除き、 一貫してqueryを使用してください。 - POST、PUT、PATCH のリクエストモデルは
bodyに入れてください。 - 検索または詳細レスポンスで返される、ソース固有の
media_sourceとmedia_idを そのまま保持してください。音楽の場合は、music_type=recording|album|artistも 保持してください。artist は閲覧専用です。 success=false、HTTP エラーデータ、空の結果、検証エラーは、実際の結果として扱ってください。 レスポンスを確認せずに成功したと主張しないでください。media.scrapeは、メディアの拒否や NFO の書き込み失敗を、ディレクトリ内での失敗も含め、 ビジネス上の失敗として報告します。カスタムフィルターが同時に変更された場合は、 ルールを再読み込みして意図した変更を確認してから、競合を再試行してください。- 明示的な
execution_outcomeを尊重してください。pendingは受け付け済みですが未完了、unknownは書き込みが実行された可能性があることを意味します。不明な書き込みを繰り返したり、 重複保護を回避するためだけにデフォルトを変更したりしないでください。組み込み Agent では、 返された呼び出し ID を使ってget_tool_executionを使用してください。ホストは、 読み取り専用チェックを通じて、サポート対象の非センシティブな設定の置き換えを照合できます。 - 組み込み Agent のプレビューに
result_idとnext_offsetが含まれている場合、 操作を繰り返すのではなく、次のページにはread_tool_resultを使用してください。 これらのレシートツールと結果ツールは Agent 内部のものであり、外部 MCP ツールではありません。
エージェントのタスクと会話状態
agent_taskの更新では、enabled=nullは現在の有効状態を維持します。一時停止中のタスクの名前を変更しても、スケジュールは再開されません。- 従来のメッセージセッションは、チャンネル、設定済みのソース、ユーザー ID によってスコープが定まります。停止、クリア、ステータス照会、確認は、現在のソースのセッションを対象とします。
- バックグラウンドの WebAgent が完了すると、現在のターンが表示履歴に追加されます。フロントエンドの完了スナップショットは、既存の置換契約を維持します。
overwrite=falseでのファイル作成では、同時に作成しようとした処理を拒否します。バージョン管理された編集では、他の処理による割り込み書き込みを拒否します。ファイルを再読み込みし、再試行時は現在の SHA を使用してください。- マーケットスキルのインストールでは、明示的に選択された GitHub ブランチを維持します。そのブランチを利用できない場合は、ブランチを黙って切り替えるのではなく、インストールを失敗として扱ってください。
サブスクリプションの識別とワークフローの復旧
- サブスクリプションを検索または作成するときは、メディアの種類、ソース、メディア ID、シーズン、エピソードグループ、音楽エンティティの種類を維持してください。同じ数値 ID を持つ映画とテレビシリーズは、別々の対象です。ソースベースの検索では、エピソードグループを維持してください。
- 同じユーザーと識別情報で同時に作成された場合は、既存のサブスクリプション ID を返します。既存の対象識別情報への更新は、その更新をキャンセルします。次の手順を決める前に、両方のサブスクリプションを再読み込みしてください。
- 作品、シーズン、エピソードグループ、音楽エンティティを変更すると、以前の対象のダウンロードとアップグレードの進行状況がリセットされます。欠落しているエピソードの処理は新しい合計数から再開します。エピソードグループをクリアした場合も、対象が変わります。
- Servarr で重複するシリーズを追加すると、実際に存在するサブスクリプション ID が返されます。キャンセルされた検索で実行担当が失われた場合、リースの期限切れによってキャンセルが確定し、新しい検索が可能になります。
- ワークフローの復旧では、成功したノードの結果を保持したまま、失敗したノードと、依存関係の失敗によってスキップされたノードを再試行します。一時停止中のワークフローを編集しても、タイマーは無効のままです。Cron ではホストのスケジューラーのタイムゾーンが使用されます。
コレクションの件数とページネーション
- 検索 SSE の
manual_paging=trueは、Web 専用のページ単位モードであり、Agent の操作は追加されません。ドキュメントに記載されたsearch.*操作を引き続き使用してください。Web は検索サイトに並行して検索を行い、最終的にフィルタリングされたページの前にappendプレビューを送信します。ページ番号を進めるためのソース状態を含むのは、完了した結果のみです。 - リストを確認する際は、無制限の従来形式の結果を要求するのではなく、操作のドキュメントに記載されたページネーション用フィールドを明示的に指定してください。従来形式のページネーションが任意の場合は、
query={"page":1,"count":20}から始めてください。 - 操作のドキュメントに正確な合計数が記載されている場合、件数または概要のリクエストには
query={"page":1,"count":1}を送信し、collection.total_countを確認してください。これは、エンドポイントの認可スコープとフィルターを適用した後の正式な件数です。 - 項目リストが大きい場合や
tool_result_truncated=trueの場合でも、合計数を取得できなくなるわけではありません。ゲートウェイはdataより前にcollectionを配置するため、上限付きのプレビューにも正確なメタデータが表示されます。API 契約ですでに宣言されている合計数を取得するためだけに、MoviePilot データベースを照会してはいけません。 database-operationは、管理者向けの診断、またはビジネス API では表現できない集計にのみ使用してください。API のリスト件数を取得する代替手段として使用してはいけません。操作でcollection.total_countが明示的に省略されている場合、1 ページから合計数を推測せず、その操作本来のページネーションを続けるか、上流の合計数を取得できないことを伝えてください。
スキル間のルーティング
ダウンローダーのインスタンス、タスクの確認、ネイティブなタスク制御には downloader-operation を使用してください。ライブラリ、項目、再生セッション、スキャン、更新、その他のネイティブなメディアサーバー機能には mediaserver-operation を使用してください。任意の URL を使ってゲートウェイを迂回してはいけません。
ページネーションまたは集計を伴う読み取り専用の呼び出しを 3 回以上行う場合は、Python aggregation を読み込み、利用可能であれば execute_code を使用してください。
再利用可能な学習
利用可能な場合は、個人のスキルを読むために skills_list と skill_view を使用し、skill_manage は許可された作成/レビューの範囲内でのみ使用してください。
これらが API 操作のスコープを付与することはありません。通常どおり read_skill で公開ドメインスキルを読み込みます。
タスクをまたぐ設定には memory(target="user") を、安定した環境情報には memory(target="memory") を使用してください。手順は該当するスキルに記載し、両方の保存先に重複して記載しないでください。
メモリを置き換える/削除するバックグラウンド提案には、ユーザーが明示的に /memory approve ID を指定する必要があります。ツールの結果や以前の会話から、その承認を推測してはいけません。
ダウンロード提出元情報
download.history.list が返す新しいレコードには、note.subscription_download が含まれる場合があります。
submission_type(initial または upgrade)、best_version_full、および初回とアップグレードのエピソードリストが含まれます。
品質アップグレードが有効でも、不足エピソードを補うダウンロードは初回ダウンロードのままです。
不足エピソードと以前にダウンロードしたエピソードの両方を含むパックはアップグレードとして扱われ、両方のリストが保持されます。
古い履歴レコードにマーカーがない場合、現在のサブスクリプション設定から提出元情報を推測してはいけません。