phone-reel-pipeline は何をしますか?
Android → Instagramリールへのエンドツーエンドパイプラインです。スマートフォンが映像(およびオプションでトレンドインスピレーション)を提供し、PCがすべての編集を行い、完成したリールをユーザーが手動で投稿するためにスマートフォンに戻します。このスキルは、他の兄弟スキルをオーケストレーションします。独自のスクリプトは含まれず、それらのロジックを複製することもありません。1回の呼び出しでチェーン全体が実行されます。エージェントがスマートフォンのロックを自動解除し(Vault PIN、ユーザーが端末に触れる必要なし)、インスピレーションが必要な場合はEditsアプリを自ら操作します。
このリポジトリの兄弟スキル — phone-reel-pipelineはそれらにルーティングし、再実装しないでください: phone-media-bridgeはデバイス接続、Keyguardロック解除、メディアの転送(プル/プッシュ)を担当します。ig-edits-inspirationはEditsアプリからのインスピレーション取得(読み取り専用のキャプチャと、ロック解除済みスマートフォンでの自己駆動型ナビゲーション)を担当します。reel-makerはPCでのリールビルドを担当します(それ自体がclip-pickerとvideo-tool-routerに委譲します。ここからそれら2つを直接呼び出さないでください)。各フェーズの前に、その相対パスにある兄弟スキルのSKILL.mdを参照してください。それらのドキュメントがフラグ、パス、注意点について信頼できる情報源です。
使用するタイミング
トリガー: 「スマホの映像からリールを一括作成」「スマホの映像を編集してリールに」「スマホからリールへ」「スマホから映像を引っ張ってきてリールを作成」、またはデバイス→PC→デバイスを1回の実行でまたがる任意のタスク。
使用しない場合:
- 純粋なPC編集で、映像がすでにディスク上にあり、スマートフォンが関与しない場合 → reel-makerを直接呼び出します。
- インスピレーションのみ(「今のトレンドは?」「この編集のロードマップは?」など、まだビルドしない場合) → ig-edits-inspirationを直接呼び出します。
- 投稿 → 常にユーザーがスマートフォン上で手動で行います。このリポジトリのどのスキルも投稿、スケジュール設定、アップロードを一切行いません。自動投稿は明示的に拒否されました。
ワークフロー
フェーズ0 — デバイス確認 + ロック解除
adb devices -lを実行します。adbはブリッジスクリプトのチェーン(--adbフラグ、ADB環境変数、PATH、そしてWinGet platform-toolsのフォールバック)から見つけます。デバイスリストが空の場合は、停止して以下のユーザーチェックリストを表示します:
- ワイヤレス: スマートフォンがPCと同じWi-Fiに接続されていること、ワイヤレスデバッグがONであること(リンクが切れている場合はコードで再ペアリングし、
adb connect <ip>:<port>を実行)。 - USB: データ転送対応ケーブル(充電専用ではない)、ファイル転送(MTP)モード、USBデバッグが有効、RSAフィンガープリントプロンプトがスマートフォンで承認されていること。
デバイスがunauthorizedと表示された場合は、先に進まず、ユーザーにスマートフォンでRSAプロンプトを承認するよう依頼し、その後adb devices -lを再実行してください。デバイスがdeviceと表示された場合のみ続行します。その後、自律実行のためにロックを解除します(ユーザーの操作は不要):
C:\Python314\python.exe %USERPROFILE%\GitHub\editor-pack\skills\phone-media-bridge\scripts\unlock.py
ALREADY_UNLOCKED → 続行。VAULT_ENTRY_MISSING → Vaultポップアップを介してphone-1:passwordを収集します(python "%USERPROFILE%\.agents\skills\secure-vault\vault.py" gui --request "phone-1:password")、その後再実行します。完全なルールはphone-media-bridgeのフェーズ0bにあります。
フェーズ1 — インスピレーション(オプション、ユーザーがトレンドガイド付きの編集を希望する場合のみ)
1つの質問をします: トレンドガイド(Editsインスピレーション)か、直接ビルド(参照リンクまたは自由形式)か?ユーザーがトレンドガイドを希望する場合、ig-edits-inspirationにハンドオフします。同スキルはEditsアプリからキャプチャを行い(読み取り専用キャプチャ推奨。ロック解除済みスマートフォンでの自己駆動型UIナビゲーションはそのドクトリンに従い許可されます)、reel-maker用のレシピを返します。そのレシピがフェーズ3のビルド仕様になります。ユーザー自身にEditsを操作させるのは、高速パスのフォールバックであり、要件ではありません。ユーザーがそうしていない場合、エージェントが操作します。ユーザーがインスピレーションをスキップした場合、フェーズ2に直接進みます。reel-makerのフェーズ1はすでに参照リンクを受け付けるため、ユーザーが提供したリンクはそのままハンドオフに引き継がれます。
フェーズ2 — メディアの取得
phone-media-bridgeにハンドオフします。そのインベントリステップを実行し、次にユーザーにコンパクトなフォルダごとのサマリー(フォルダ名、クリップ数、合計サイズ — 完全なファイル一覧ではない)を表示し、1つの質問(複数選択可)でどのフォルダ/クリップを取得するかを尋ねます。次に、そのプルステップを実行します。取得した映像はジャンクションskills\phone-media-bridge\scripts\phone_pull(物理的にはD:\EditorPackArchive)に配置されます。映像はD:ドライブに残ります。エディタはそこから読み取り、決してC:にコピーしません。再開安全: プル中にスマートフォンが切断された場合は、プルを再実行します。注意点を参照してください。
フェーズ3 — PCでのビルド
reel-makerフローを、フェーズ1のレシピ(または参照リンク)とフェーズ2の映像フォルダを指定して呼び出します。reel-makerはそれ自体でclip-picker + video-tool-routerに委譲するため、ここでそのルーティングを複製しないでください。明示的に引き継ぐべき2つの点: (a) スマートフォンの映像はHEVC/HDRであることが多いため、video-tool-routerのHLG 10ビットガードが適用されます(グレーディング/キャプションバーンの前にトーンマッピングが必要。そうしないと色が飛びます)。(b) HEVCデコードは遅いため、フェーズ3が実行時間の大部分を占めると予想されます(clip-pickerの注意点を参照)。
フェーズ4 — プッシュバック(承認ゲート)
ハードルール: ユーザーがこの実行でその特定のファイルについて明示的に承認しない限り、絶対にスマートフォンに何もプッシュしないでください。 フェーズ3の完了は、プッシュの許可を意味しません。フェーズ3の最後で停止し、PC上のローカルパス、時間、サイズを報告し、「スマートフォンにプッシュしますか?」と尋ね、同意があった場合のみ進みます。包括的な「リールを作成して」という指示は、決してプッシュの承認とはみなされません。
承認されたら、phone-media-bridgeのプッシュステップ(push_reel.py)にハンドオフします。完成したreel_<name>_vN.mp4をスマートフォンの/sdcard/Movies/Reelsにプッシュします。ファイルが端末上に存在することを確認し(adb shell ls)、そのバイトサイズをPCのコピーと比較して報告します。
フェーズ5 — ハンドオフ(ユーザーが投稿)
スマートフォンでInstagramを開くphone-media-bridgeのステップ(push_reel.py --open-app)を実行します。その後、停止します。ユーザーがInstagramアプリ内で手動で投稿します。絶対に自動投稿は行いません。明示的に拒否されています。以下の項目を報告します: リールのパス(スマートフォンのパス + PCのパス)、バージョン番号、投稿前に確認すべき項目(キャプションが読めるか、音声が存在するか、アスペクト比が正しいか)の短いリスト。
出力
- スマートフォン上の
reel_<name>_vN.mp4(/sdcard/Movies/Reels/)+ PCコピーはプロジェクトフォルダに保持(バージョン管理され、v1を上書きしない)。 - エンドツーエンドのステータスレポート: フェーズごとの pass / skipped / failed、フェーズごとの経過時間、各フェーズを担当した兄弟スキル、および正直な注意点(下記参照)。例: フェーズ0 pass(デバイス
<serial>、Vault経由でロック解除、5秒)→ フェーズ1 skipped(ユーザーが直接ビルドを選択)→ フェーズ2 pass(3クリップ、1.2 GB、4分)→ フェーズ3 pass(reel_<name>_v1.mp4、22分)→ フェーズ4 pass(プッシュ確認済み、サイズ一致)→ フェーズ5 handed off(Instagram起動、ユーザーが投稿)。
注意点
- 新規クローン後にジャンクションが存在しない:
skills\phone-media-bridge\scripts\phone_pullはD:\EditorPackArchiveへのジャンクションであり、新規クローン後は保持されません。フェーズ2の前にphone-media-bridgeのドキュメントに従って再作成してください。 - 実行中にスマートフォンが切断された場合: プルは再開可能です(プルステップを再実行)。プッシュは再開不可です。
push_reel.pyを再実行し、adb shell lsで再確認してください。 - 実行中にスマートフォンが再ロックされた場合:
unlock.pyは画面起動維持 + 30分のタイムアウトを設定しますが、再起動や手動ロックはKeyguardを再設定します。unlock.pyを再実行し(PINはVaultに残り、ユーザーの操作は不要)、続行してください。 - HEVCデコードは遅い(clip-pickerの注意点): スマートフォン映像のコンタクトシート生成やモーションスコアリングは、H.264よりも時間がかかります。その旨を事前に伝え、サンプリングを減らして補おうとしないでください。
- 絶対に自動投稿しない: Instagramの投稿フローのUI自動化、スケジュール設定、アップロードは一切行いません。ユーザーにアプリを開くことが最後の自動化ステップです。
正直な報告ルール
- 実際に確認されたことと推測されたことを、フェーズごとに報告します。デバイスのシリアル番号が
adb devices -lで確認されたこと(「スマートフォンが接続された」ではない)、ロック解除がdumpsysで確認されたこと(「スマートフォンが開いている」ではない)、プルのバイト数が一致したこと(「ファイルがコピーされた」ではない)、プッシュがadb shell ls+ サイズ比較で確認されたこと、Instagramが開かれたこと(「リールが投稿された」ではない)。 - フェーズがスキップされた場合(例: インスピレーションなし)、それを明示的に述べ、その出力が存在することを決して示唆しないでください。
- 時間の正直さ: フェーズごとの実測経過時間を報告します。HEVCのトランスコード/スコアリング時間は実際の作業であり、隠すべきオーバーヘッドではありません。
- 品質の注意点を黙って通すのではなく、明示的に指摘します。ブレのある選択、色飛びしたHDR、借用オーディオの再投稿制限(reel-makerのフェーズ5ルールが適用されます)。