phone-reel-pipeline 是做什麼的?
Android 手機到 Instagram Reels 的端到端管線。手機提供素材(以及選擇性的趨勢靈感);PC 負責所有剪輯;手機接收完成的 Reel 讓使用者手動發布。此技能負責協調其兄弟技能——它本身不包含任何腳本,也不重複任何邏輯。一次呼叫即可執行完整鏈條:代理程式自行解鎖手機(使用保管庫 PIN,使用者無需觸碰手機)並在需要靈感時自行導航 Edits 應用程式。
此儲存庫中的兄弟技能——phone-reel-pipeline 會路由到它們,請勿重新實作:phone-media-bridge 負責裝置連接、鎖定螢幕解鎖以及媒體拉取/推送,ig-edits-inspiration 負責 Edits 應用程式的靈感(唯讀擷取以及在已解鎖手機上的自主導航),reel-maker 負責 PC 端的 Reel 建置(其本身會委派給 clip-picker 和 video-tool-router——請勿直接從此處呼叫這兩個技能)。請在每個階段前閱讀位於其相對路徑的兄弟技能 SKILL.md;它們的文件對於標誌、路徑和注意事項具有權威性。
使用時機
觸發條件:「從手機製作端到端 Reel」、「從我的手機素材製作 Reel」、「手機到 Reel」、「從手機拉取並製作 Reel」,或任何在一次執行中跨越裝置 → PC → 裝置的任務。
不適用於:
- 純 PC 剪輯,素材已在磁碟上且不涉及手機 → 直接呼叫 reel-maker。
- 僅獲取靈感(「什麼是趨勢」、「此剪輯的路線圖」,尚未建置) → 直接呼叫 ig-edits-inspiration。
- 發布 → 始終由使用者在手機上手動完成。此儲存庫中沒有任何技能會發布、排程或上傳任何內容——自動發布已被明確拒絕。
工作流程
階段 0 — 裝置檢查 + 解鎖
執行 adb devices -l。透過橋接腳本的鏈結(--adb 標誌、ADB 環境變數、PATH,然後是 WinGet platform-tools 後備方案)定位 adb。如果裝置列表為空,則停止並列印此使用者檢查清單:
- 無線:手機與 PC 連接到相同 Wi-Fi,無線偵錯已開啟(如果連線已中斷,請使用代碼重新配對並執行
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 → 透過保管庫彈出視窗收集 phone-1:password(python "%USERPROFILE%\.agents\skills\secure-vault\vault.py" gui --request "phone-1:password"),然後重新執行。完整規則請參閱 phone-media-bridge 的階段 0b。
階段 1 — 靈感(選擇性,僅在使用者想要趨勢導向剪輯時)
詢問一個問題:趨勢導向(Edits 靈感)還是直接建置(參考連結或自由形式)?如果使用者想要趨勢導向,則交棒給 ig-edits-inspiration:它會從 Edits 應用程式擷取內容(偏好唯讀擷取;根據其原則,允許在已解鎖手機上進行自主 UI 導航)並返回一個符合 reel-maker 格式的配方。該配方將成為階段 3 的建置規格。要求使用者自行導航 Edits 是快速路徑的後備方案,並非必要條件——當使用者未導航時,代理程式會驅動。如果使用者跳過靈感,則直接進入階段 2——reel-maker 的階段 1 已接受參考連結,因此使用者提供的任何連結都會原封不動地傳遞。
階段 2 — 媒體拉取
交棒給 phone-media-bridge:執行其庫存步驟,然後向使用者顯示一個精簡的每個資料夾摘要(資料夾名稱、片段數量、總大小——非完整檔案列表)並詢問一個問題(多選)要拉取哪些資料夾/片段。然後執行其拉取步驟。拉取的素材會放在連結點 skills\phone-media-bridge\scripts\phone_pull(實體路徑在 D:\EditorPackArchive)。素材保留在 D: 磁碟機——編輯器從那裡讀取,絕不複製到 C: 磁碟機。可恢復:如果手機在拉取過程中斷線,重新執行拉取步驟;請參閱注意事項。
階段 3 — PC 建置
使用階段 1 的配方(或參考連結)以及階段 2 的素材資料夾呼叫 reel-maker 流程。reel-maker 本身會委派給 clip-picker + video-tool-router——請勿在此處重複該路由。需要明確傳遞的兩件事:(a) 手機素材通常是 HEVC/HDR,因此適用 video-tool-router 的 HLG 10-bit 防護(在調色/字幕燒錄之前進行色調映射,否則顏色會沖淡);(b) HEVC 解碼速度慢,因此階段 3 將佔據大部分執行時間(請參閱 clip-picker 的注意事項)。
階段 4 — 推回(審核閘道)
嚴格規則:未經使用者明確核准本次執行中的該特定檔案,絕對不要將任何內容推送到手機。 階段 3 完成並不代表允許推送。在階段 3 結束時停止,報告本機 PC 路徑、時長和大小;詢問「推送到手機?」並僅在使用者同意時繼續。籠統的「製作 Reel」指令絕不代表推送核准。
一旦核准,交棒給 phone-media-bridge 的推送步驟(push_reel.py):將完成的 reel_<name>_vN.mp4 推送到手機上的 /sdcard/Movies/Reels。驗證檔案存在於裝置上(adb shell ls)並報告其位元組數與 PC 副本進行比對。
階段 5 — 交棒(使用者發布)
執行 phone-media-bridge 中開啟手機上 Instagram 的步驟(push_reel.py --open-app)。然後停止:使用者手動在 Instagram 應用程式中發布。絕不自動發布——已被明確拒絕。報告:Reel 路徑(手機路徑 + PC 路徑)、版本號碼以及發布前應檢查的簡短清單(字幕可讀、音訊存在、長寬比正確)。
輸出
- 手機上的
reel_<name>_vN.mp4(/sdcard/Movies/Reels/)+ 保留在專案資料夾中的 PC 副本(有版本控制;絕不覆寫 v1)。 - 端到端狀態報告:每個階段的通過 / 跳過 / 失敗、每個階段的實際耗時、每個階段由哪個兄弟技能處理,以及誠實的注意事項(請參閱下方)。範例格式:階段 0 通過(裝置
<serial>,透過保管庫解鎖,5 秒)→ 階段 1 跳過(使用者選擇直接建置)→ 階段 2 通過(3 個片段,1.2 GB,4 分鐘)→ 階段 3 通過(reel_<name>_v1.mp4,22 分鐘)→ 階段 4 通過(推送已驗證,大小相符)→ 階段 5 已交棒(Instagram 已開啟,使用者待發布)。
注意事項
- 重新克隆後連結點遺失:
skills\phone-media-bridge\scripts\phone_pull是D:\EditorPackArchive的連結點,重新克隆後不會保留——請在階段 2 之前根據 phone-media-bridge 的文件重新建立。 - 手機在執行中斷線:拉取可恢復(重新執行拉取步驟);推送不可恢復——重新執行
push_reel.py並使用adb shell ls重新驗證。 - 手機在執行中重新鎖定:
unlock.py會設定保持喚醒 + 30 分鐘逾時,但重新啟動或手動鎖定會重新啟動鎖定畫面——重新執行unlock.py(PIN 保留在保管庫中,無需使用者操作)並繼續。 - HEVC 解碼速度慢(clip-picker 的注意事項):手機素材的縮圖和動作評分比 H.264 花費更長時間——請事先說明,不要為了補償而減少取樣。
- 絕不自動發布:不進行 Instagram 發布流程的 UI 自動化,不排程,不上傳。為使用者開啟應用程式是最後一個自動化步驟。
誠實報告規則
- 報告每個階段實際驗證的內容 vs 假設的內容:在
adb devices -l中看到的裝置序號(而非「手機已連接」)、透過 dumpsys 驗證的解鎖狀態(而非「手機已開啟」)、比對過的拉取位元組數(而非「檔案已複製」)、使用adb shell ls+ 大小比對驗證的推送、Instagram 已開啟(而非「Reel 已發布」)。 - 如果某個階段被跳過(例如沒有靈感),請明確說明——絕不要暗示其輸出存在。
- 時間誠實:報告每個階段的實際耗時;HEVC 轉碼/評分時間是真實工作,不是需要隱藏的開銷。
- 標記品質注意事項,而不是默默地輸出:晃動的選取、沖淡的 HDR、借用音訊的重新發布限制(適用 reel-maker 階段 5 規則)。