Communitygithub.com

kaustubhupadhyaya/手机到视频流水线

一键从安卓手机拍摄的素材端到端制作Instagram Reel:检查设备、通过保险库PIN解锁、可选从Edits App获取趋势灵感、拉取媒体到PC、制作Reel、推送回手机,然后交给用户发布。

手机到视频流水线 是什么?

这是一个端到端的安卓到Instagram Reel流水线技能,专为需要从手机素材开始、在PC上编辑、最终在手机上发布的场景设计。它协调多个兄弟技能(phone-media-bridge、ig-edits-inspiration、reel-maker)完成完整流程,本身不包含任何脚本。核心工作流程包括:设备检查和自动解锁(通过保险库PIN,无需用户触碰手机)、可选从Edits App获取趋势灵感(由agent自主导航)、媒体拉取、PC端Reel构建(自动处理HEVC/HDR问题)、推送回手机并验证、最终交给用户在Instagram中手动发布。技能支持Windows平台(通过ADB和Python),并严格遵守永不自动发布、推送前需用户明确批准等硬性规则。其输出包括版本化的Reel文件(同时存在于手机和PC)以及详细的每阶段状态报告(含时间、处理者、质量警告)。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kaustubhupadhyaya/editor-pack/tree/HEAD/skills/phone-reel-pipeline

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

phone-reel-pipeline

端到端的安卓 → Instagram Reel 流水线。手机提供素材(并可选择性地提供趋势灵感);PC 完成所有编辑;手机接收成品 Reel,由用户手动发布。此技能负责协调其兄弟技能——它自身不包含任何脚本,也不重复任何现有逻辑。一次调用即可运行整个链条:agent 自己解锁手机(通过保险库 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。通过 bridge 脚本的链式查找方法定位 adb(--adb 标志、ADB 环境变量、PATH,最后是 WinGet platform-tools 备选方案)。如果设备列表为空,则停止并打印以下用户检查清单:

  1. 无线:手机与 PC 在同一 Wi-Fi 下,无线调试已开启(如果连接已断开,需使用代码 + adb connect <ip>:<port> 重新配对)。
  2. 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 是快速路径备选方案,并非必需 —— 当用户未操作时,agent 自行驱动。如果用户跳过灵感,直接进入阶段 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 自动化,没有安排,没有上传。为用户打开应用是最后一个自动化步骤。

诚实报告规则

  • 报告每个阶段实际验证的内容与假设的内容:在 adb devices -l 中看到的设备序列号(而非"手机已连接"),通过 dumpsys 验证的解锁状态(而非"手机已打开"),拉取的字节数匹配(而非"文件已复制"),通过 adb shell ls + 大小匹配验证的推送,Instagram 已打开(而非"Reel 已发布")。
  • 如果某个阶段被跳过(例如没有灵感),明确说明 —— 永远不要暗示其输出存在。
  • 时间诚实:报告每阶段测量的挂钟时间;HEVC 转码/评分时间是实际工作,不是需要隐藏的开销。
  • 标示质量缺陷而非默默输出:画面抖动、HDR 色彩变淡、借用音频的重新发布限制(适用 reel-maker 阶段 5 规则)。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能