协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
clip【开发与工程】Cut a video into short-form clips (highlights/shorts) — cut given timecodes directly, or pick the best moments from a Perso AI STT project. Reframes 16:9→9:16. Subtitles are added separately by the srt skill.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Cut a video into short clips + reframe. Subtitles are not this skill's job — after cutting, the srt skill styles them (see the handoff below).
Explicit timecodes ("cut 2:00–3:00 of this video") → cut the local file directly: --video "<file>" --ranges "2:00-3:00,...". No STT, no key, no credits.
AI highlight selection on an STT project → --plan then --clips (the flow below). Needs the project's transcript + word timestamps.
Raw video, "find the good moments" (no timecodes given) → you can't pick highlights without a transcript, so ask the user which they want:
srt skill's STT first to create the project, then clip it with --plan/--clips.--video --ranges.Proceed with their choice — don't run STT (which bills credits) without asking.
--project/--plan/--clips. --video --ranges and --sidecars are fully offline — never run a key check/registration for them.dubbing folder must be installed next to clip.Phase 1 — plan. node scripts/clip.mjs --project <seq> --plan prints the summary's section map (topic guide) plus the full sentence transcript, each line as order [start-end] text.
Phase 2 — pick, then cut. Read the transcript and choose clips, each { "title": "...", "start_order": N, "end_order": M }. Rubric:
01_<title>.mp4).Sections are chapter-length — use the section map only as a guide, then tighten to a hook.
Run: node scripts/clip.mjs --project <seq> --clips '<json>' [--out folder] (--clips also accepts @path). Landscape (16:9) sources are reframed to 9:16 (drama-shorts letterbox); portrait sources are kept. The worker writes the clips plus a clips.json manifest (records each clip + the transcript slice needed for subtitles later). Relay [progress]; deliver the files from [clips-output].
Subtitles are off by default. After cutting, tell the user clips are ready and ask whether to add subtitles. If they want subtitles, show the presets first — never jump straight to one, exactly as the srt skill's styling flow does: the interactive gallery (select + Apply) in the Claude app, or the static ../srt/assets/style_presets.png + node ../srt/scripts/style.mjs --list-presets menu elsewhere. Let the user pick a preset or describe a style (short-form presets like karaoke/bold-punch suit clips). Only after they pick:
node scripts/clip.mjs --sidecars "<out>/clips.json" — add --karaoke only for a karaoke preset (it also writes <clip>.timestamps.json for measured word timing; a plain preset needs just the .srt).node ../srt/scripts/style.mjs "<clip>.mp4" "<clip>.srt" --preset <id> (append --word-timestamps "<clip>.timestamps.json" for karaoke). See the srt skill's "Style & burn subtitles" section.Add --host <runtime> for telemetry (silent), same as the other workers.
Same as /dubbing / /srt (PERSO_API_BASE/PERSO_MEDIA_BASE — https perso.ai hosts only, PERSO_SPACE_SEQ, XP_API_KEY, PERSO_NO_TELEMETRY, …).