Satu rekaman dapat menghasilkan beberapa klip pendek, tetapi transkrip tidak dapat menentukan apakah cuplikan mewakili sumber secara adil, dan ekspor 1080 × 1920 tidak membuktikan kenyamanan menontonnya. Panduan ini menggunakan lima keterampilan proyek Claude Code yang dijalankan secara manual: mentranskripsikan, mengurutkan, memotong, memberi takarir, dan merender. Editor manusia menyetujui setiap rentang sumber dan menonton setiap berkas akhir. Alur ini ditujukan bagi video yang Anda miliki atau yang secara tegas boleh Anda sunting dan bagikan.

Ini adalah resep berbasis dokumentasi untuk macOS Terminal dengan zsh. BIG CHANGE belum menjalankan perintah ini, memeriksa rekaman pribadi, atau menghasilkan kelima berkas. Periksa bantuan alat yang terpasang dan media Anda sebelum mengikutinya. Ilustrasi utama secara konseptual menggambarkan lima video vertikal yang akan ditinjau kreator. Gambar itu bukan klip nyata, keluaran perangkat lunak, atau pengujian BIG CHANGE atas alur yang didokumentasikan.

Perubahan besar

  • Apa yang berubah: Keterampilan proyek Claude Code dapat membagi penyuntingan video lokal menjadi lima tahap yang dijalankan manual. Catatan serah terima yang diusulkan menghubungkan penanda waktu sumber, potongan yang disetujui, takarir terkoreksi, dan berkas akhir; dokumentasi alat tidak membuktikan bahwa rangkaian khusus ini telah berhasil dijalankan.
  • Mengapa penting: Kreator dengan rekaman sumber yang diizinkan dapat memberikan keputusan khusus kepada editor manusia pada setiap tahap, termasuk apakah terdapat lima cuplikan yang berbeda. Struktur ini memungkinkan potongan lemah atau menyesatkan ditolak sebelum diekspor dengan takarir.
  • Yang perlu diperhatikan: Keputusan membagikan hasil tetap bergantung pada hak, kebijakan data akun Claude yang dipilih, dan pemutaran penuh setiap MP4 tersimpan. Pemeriksaan teknis berkas yang lolos tidak dapat memutuskan hal-hal itu.

Sebelum memulai

Anda memerlukan source.mp4 lokal dengan audio yang dapat digunakan, ruang penyimpanan memadai, akses Claude Code, whisper.cpp whisper-cli lokal yang berfungsi dan model yang mendukung bahasa, serta FFmpeg dan ffprobe dengan enkoder dan filter yang diperlukan. Anda juga memerlukan editor yang dapat memeriksa rekaman dan kelima hasil ekspor. Catat akun dan kebijakan data Claude Code, versi terpasang, commit atau build whisper.cpp, SHA-256 dan lisensi model, serta batas penggunaan. Claude Code dapat menggunakan model yang dihosting meskipun transkripsi dan rendering berlangsung lokal. Berikan hanya akses transkrip atau media yang diizinkan hak dan kebijakan akun Anda. Instruksi keterampilannya tidak membatasi akses. Kontrol izin alat yang terpisah mengatur pemanggilan alat; tergantung pengaturan, tindakan rutin hanya-baca dapat berjalan tanpa permintaan konfirmasi. Periksa dengan sengaja apa yang dapat dibaca keterampilan, serta apa yang diusulkan untuk ditulis atau dijalankan.

Letakkan salinan sumber yang tidak diubah dan rights.json dalam folder kerja lokal baru yang tepercaya. Catatan hak harus mencantumkan SHA-256 sumber, editor, cuplikan dan penggunaan lanjutan yang diizinkan, izin pembicara, musik dan visual, serta aturan penyimpanan dan retensi. Jangan lanjut jika hak belum jelas. Buka Terminal di folder itu, verifikasi pwd, lalu buat folder kerja:

Terminal
mkdir -p transcript clips captions shorts probes .claude/skills/video-transcribe .claude/skills/video-rank .claude/skills/video-cut .claude/skills/video-caption .claude/skills/video-vertical
command -v claude
command -v ffmpeg
command -v ffprobe
claude --version
ffmpeg -version
ffprobe -version
ffmpeg -hide_banner -h encoder=libx264
ffmpeg -hide_banner -h encoder=aac
ffmpeg -hide_banner -h filter=subtitles
ffmpeg -hide_banner -h filter=scale

Atur WHISPER_CLI dan WHISPER_MODEL ke jalur absolut nyata dalam tanda kutip. Atur LANGUAGE ke kode bahasa tuturan yang telah diverifikasi, misalnya en hanya untuk audio berbahasa Inggris. Pastikan model mendukungnya; model .en khusus bahasa Inggris tidak mendukung bahasa lain. Bahasa campuran atau yang tidak didukung memerlukan rencana terverifikasi sebelum melanjutkan. Referensi CLI whisper.cpp mendokumentasikan -l, -m, -f, -osrt, -oj dan -of; cocokkan dengan bantuan build Anda. Jangan aktifkan opsi penerjemahannya.

Terminal
WHISPER_CLI='/absolute/path/to/whisper-cli'
WHISPER_MODEL='/absolute/path/to/approved-model.bin'
LANGUAGE='en'
test -x "$WHISPER_CLI"
test -r "$WHISPER_MODEL"
"$WHISPER_CLI" --help
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json source.mp4

Ganti contoh jalur dan bahasa sebelum menjalankan apa pun. Periksa durasi sumber, aliran media, orientasi, audio, dan ruang kosong. Pastikan filter subtitles terpasang mendukung libass dan scale menerima force_original_aspect_ratio, force_divisible_by dan reset_sar. Jika fitur wajib tidak tersedia, gunakan petunjuk build pengelola dan ulangi pemeriksaan. Jangan menghilangkan takarir tanpa penjelasan.

Buat lima keterampilan proyek dengan batas yang jelas

Dalam proyek tepercaya, simpan lima berkas .claude/skills/<name>/SKILL.md terpisah. Masing-masing membutuhkan name, description, disable-model-invocation: truesendiri, serta masukan, tindakan, keluaran, dan aturan berhenti yang lengkap. Jalankan manual secara berurutan: /video-transcribe, /video-rank, /video-cut, /video-caption, /video-vertical. Jangan tambahkan allowed-tools: Claude Code menyatakan bahwa bidang itu mengizinkan penggunaan alat yang tercantum tanpa konfirmasi selama pemanggilan; itu tidak membatasi keterampilan. Pertahankan pengaturan izin normal dan tinjau akses secara sengaja. Pemanggilan alat hanya-baca mungkin tidak meminta konfirmasi, sedangkan penulisan dan eksekusi mengikuti kontrol akun yang sebenarnya.

Gunakan isi lengkap berikut bersama catatan kerja bersama yang dijelaskan di bawah. Prosa dalam keterampilan adalah instruksi bagi Claude Code, bukan batas yang ditegakkan secara teknis.

.claude/skills/video-transcribe/SKILL.md

Markdown
---
name: video-transcribe
description: Transcribe the authorized local source for the five-short workflow.
disable-model-invocation: true
---

Input: rights.json, immutable source.mp4, checked source probe, verified language and local whisper.cpp executable/model. Confirm matching source and model hashes, usable audio and permitted access before any command.
Action: From the checked run directory, confirm source.wav and both transcript output paths do not exist. Extract mono 16 kHz 16-bit PCM source.wav with explicit first-audio mapping and no overwrite. Continue to whisper-cli only after a zero exit and valid WAV readback; use the verified model and explicit language, SRT and JSON output, and translation off. Inspect both outputs, parse source-relative times, and compare representative passages and uncertain names or quotes against source audio. Record a nonzero exit or uncertain output as a manifest blocker before any next stage.
Output: transcript/source.srt and transcript/source.json, recorded hashes, corrections or marked uncertainties, tool and model identity in manifest.json.
Stop: Missing rights, changed inputs, absent audio, empty or malformed transcript, or unverified relevant speech. Do not upload, publish or overwrite accepted files; ask the editor to settle uncertainty.

.claude/skills/video-rank/SKILL.md

Markdown
---
name: video-rank
description: Suggest source moments for human selection of five distinct clips.
disable-model-invocation: true
---

Input: Checked source transcript and hash, immutable source hash and probe duration, rights.json, intended audience. Verify all identities and authorized transcript access.
Action: Suggest more than five moments with numeric source-second start/end, source words, surrounding context and editorial rationale. Treat ranking as a suggestion, never a viral forecast. Have the editor open each candidate in the original and check speaker, wording, facts, context and rights. Record exactly five distinct coherent approved intervals and a rejected-candidate log.
Output: approved-moments.json with order, source hash and five numeric bounds satisfying 0 <= start < end <= source duration.
Stop: Fewer than five permissible, meaningful moments, mismatched hashes, uncertain bounds or missing human approval. Do not invent a fifth excerpt.

.claude/skills/video-cut/SKILL.md

Markdown
---
name: video-cut
description: Cut the five approved source intervals into separate local clips.
disable-model-invocation: true
---

Input: Immutable source.mp4, source hash/probe and five human-approved intervals. Verify hashes and calculate each duration as end minus start.
Action: For each 01-05, confirm its unique output path is unused, then transcode the approved source-relative interval with input -ss, -t duration, explicit first video/audio mapping, libx264, AAC and -n. Continue only on zero exit and file readback. Probe streams and duration, inspect first and last frames, and have the editor watch each whole cut for boundaries, sync and context. Record the exact command and output hash. Any failure or uncertain write is a manifest blocker; never pass that clip to captioning.
Output: Five accepted numbered clips, individual probe records and links to approved intervals in manifest.json.
Stop: Wrong bounds, absent stream, drift, misleading context, output collision or uncertain command result. Read back the existing path first; correct bounds with human approval and use a new filename. Never overwrite or reuse an old clip hash.

.claude/skills/video-caption/SKILL.md

Markdown
---
name: video-caption
description: Create and check local captions from each accepted clip.
disable-model-invocation: true
---

Input: Five accepted clip hashes, verified language and local model identity. Reject stale clips or mismatched source links.
Action: For each actual numbered clip 01-05, verify its accepted hash and unused WAV/raw-SRT paths, then extract its own mono 16 kHz 16-bit PCM WAV with -n. Run whisper-cli only after zero exit and WAV readback, with the matching language and SRT output; translation stays off. Preserve raw SRT. Have the editor correct words, names, numbers, cue timing, overlaps and readability against the actual clip, then save a distinct .checked.srt. Use clip-local times, not source-offset cues. Record failures as blockers before rendering.
Output: Five checked SRTs with raw-ASR and exact clip hash links in manifest.json.
Stop: Any cue outside clip duration, uncertain speech, bad alignment or stale clip hash. Repair and replay before rendering; a recut requires matching new captions.

.claude/skills/video-vertical/SKILL.md

Markdown
---
name: video-vertical
description: Render and review five captioned 1080x1920 MP4s.
disable-model-invocation: true
---

Input: Five accepted clip hashes/probes, matching checked SRT hashes, rights record and a human-approved crop or framing plan for each clip.
Action: Check decoded orientation and sample aspect ratio. Choose even integer crop width, height and x/y for each clip; require positive dimensions, nonnegative offsets and a rectangle within the decoded frame. A fixed crop does not track motion. Verify unique output and probe paths are unused. From the established run directory, render each separately with crop, aspect-preserving scale, pad, clip-local subtitles, explicit video/audio mapping, libx264, yuv420p, AAC and -n. Continue only on zero exit and saved-file readback. Create probe JSON without clobbering an existing path, reopen the MP4 and have the editor watch its entire video and audio, checking cut context, every caption, framing, sync, facts and rights. Record any failure or uncertain output as a blocker.
Output: Five distinct accepted 1080x1920 MP4s, hashes, probe JSON, exact source/clip/SRT lineage and UTC human acceptance notes.
Stop: Unknown orientation, invalid crop, missing filter, collision, unreadable file, silent audio, cut-off text, wrong duration, bad context or failed full playback. Inspect uncertain existing outputs; revise to a new filename, probe and watch again. No upload or publishing.

Simpan satu manifest.json untuk proses ini. Pada setiap serah terima, catat dokumen hak dan SHA-256 sumber yang tidak diubah, versi alat, SHA-256/lisensi/bahasa model, masukan dan keluaran beserta SHA-256, rentang sumber numerik yang disetujui, perintah persis, dan keputusan berwaktu UTC. Jika nama berkas atau hash berbeda, berhenti dan selesaikan sebelum keterampilan berikutnya.

Perlakukan setiap blok shell di bawah sebagai satu tahap dalam skrip zsh baru atau shell terkendali, dengan set -e agar perintah gagal menghentikan tahap tersebut. Periksa bahwa setiap jalur keluaran belum digunakan sebelum menjalankannya dan catat kode keluar bukan nol, berkas hilang, atau penulisan tidak pasti sebagai penghalang dalam manifest. Keterampilan berikutnya harus membaca status itu dan hash keluaran; potongan gagal tidak boleh diterima hanya karena klip lama masih ada.

1. Transkripsikan sumber

Menurut README pengelola whisper.cpp , contoh CLI saat ini membutuhkan WAV 16-bit. Setelah audio sumber dipastikan, jalankan berikut dari folder proyek yang telah diverifikasi. -n mencegah FFmpeg menimpa WAV yang sudah ada.

Terminal
set -e
test ! -e source.wav
test ! -e transcript/source.srt
test ! -e transcript/source.json
ffmpeg -i source.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n source.wav
test -s source.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f source.wav -l "$LANGUAGE" -osrt -oj -of transcript/source
test -s transcript/source.srt
test -s transcript/source.json

Pastikan transcript/source.srt dan .json ada, berisi tuturan dengan penanda waktu, dan berada dalam durasi sumber yang diperiksa. Dengarkan bagian yang mewakili rekaman dan verifikasi nama, angka, serta kutipan yang meragukan terhadap aslinya. Simpan transkrip sumber yang dikoreksi atau penanda ketidakpastian yang jelas. Jika ekstraksi audio atau transkripsi kosong, periksa aliran sumber, berkas eksekusi, bahasa, dan kecocokan model sebelum mencoba keluaran baru dengan nama unik.

2. Pilih lima momen dalam rekaman asli

Jalankan /video-rank dengan transkrip terperiksa dan audiens. Minta lebih dari lima kandidat agar editor dapat menolak cuplikan lemah. Untuk setiap usulan, wajibkan waktu mulai dan akhir berupa detik numerik sejak awal sumber, bagian tuturan, konteks sebelum dan sesudah, serta alasan segmen dapat berdiri sendiri. Buka setiap rentang pada rekaman asli. Editor menentukan apakah pembicara, susunan kata, konteks visual, fakta, dan izin tetap terjaga setelah pemotongan. Simpan tepat lima rentang berbeda yang disetujui dalam approved-moments.json; sertakan urutan, hash sumber, dan 0 <= start < end <= source duration. Bagian transkrip hanya merupakan penunjuk lokasi. Untuk tugas yang lebih sempit berupa pencarian penanda waktu, lihat Temukan momen tuturan sebelum menyunting video.

Jika rekaman tidak memuat lima momen yang dapat dipertanggungjawabkan, berhenti. Tugas lima berkas tetap belum selesai.

3. Potong rentang yang disetujui

Jalankan /video-cut. Untuk setiap rentang, hitung DURATION = END - START dari batas numerik yang disetujui. Ganti penanda dalam kurung sudut di bawah dengan angka sebenarnya; penanda bukan nilai yang dapat dijalankan. Ulangi untuk clip-02.mp4 hingga clip-05.mp4. FFmpeg mendokumentasikan pencarian posisi masukan, durasi, pemilihan aliran secara eksplisit, dan perilaku keluaran tanpa penimpaan. Lakukan transkode, bukan penyalinan aliran, untuk batas potongan yang dimaksud.

Terminal
set -e
test ! -e clips/clip-01.mp4
ffmpeg -ss <START_SECONDS> -i source.mp4 -t <DURATION_SECONDS> -map 0:v:0 -map 0:a:0 -c:v libx264 -c:a aac -n clips/clip-01.mp4
test -s clips/clip-01.mp4

Periksa aliran dan durasi setiap klip nyata, tinjau bingkai pertama dan terakhir, lalu tonton seluruhnya. Catat hash dan rentang sumber yang disetujui. Potongan keliru membutuhkan batas baru yang disetujui dan nama keluaran baru. Jika perintah gagal atau hasilnya tidak pasti, periksa berkas yang sudah ada dan hasil probe sebelum mengulang apa pun; jangan arahkan percobaan ulang ke nama yang sama.

4. Koreksi takarir terhadap setiap potongan nyata

Jalankan /video-caption. Transkripsikan setiap klip yang diterima karena takarirnya harus dimulai dari waktu nol pada awal klip. Untuk klip 01, perintahnya:

Terminal
set -e
test ! -e captions/clip-01.wav
test ! -e captions/clip-01.srt
ffmpeg -i clips/clip-01.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n captions/clip-01.wav
test -s captions/clip-01.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f captions/clip-01.wav -l "$LANGUAGE" -osrt -of captions/clip-01
test -s captions/clip-01.srt

Ulangi menggunakan nomor dua digit yang benar untuk 02 hingga 05 dan jalur terpisah. Pertahankan setiap captions/clip-NN.srtmentah. Editor membandingkan setiap takarir dengan klip, memperbaiki kata, nama, dan angka, memeriksa waktu dan keterbacaan, lalu menyimpan captions/clip-NN.checked.srt. Takarir yang melewati durasi klip menghalangi rendering. Catat hash setiap SRT bersama hash klipnya. Jika potongan berubah, buat ulang atau periksa kembali takarir terhadap berkas baru.

5. Ubah bingkai, render, dan terima kelimanya

Jalankan /video-vertical. Untuk setiap klip yang diterima, periksa gambar hasil dekode, orientasi, rasio aspek sampel, dan gerakan. Editor memilih bilangan bulat genap tersendiri untuk CROP_W, CROP_H, CROP_X, CROP_Y. Persegi panjang harus muat dalam bingkai hasil dekode. Pemotongan tetap tidak mengikuti subjek bergerak; jika konten penting hilang, pilih rencana penskalaan dan penambahan tepi yang ditinjau atau ubah potongannya. Rotasi atau koordinat pemotongan yang tidak jelas menghentikan render. Panduan filter FFmpeg mendokumentasikan crop, scale, pad, dan filter subtitles berbasis libass.

Dari direktori kerja yang ditetapkan, atur CLIP ke nomor dua digit yang sebenarnya dan empat variabel pemotongan ke bilangan bulat yang disetujui untuk klip itu. Perintah ini templat, bukan contoh yang sudah diuji. Pertahankan jalur relatif takarir sederhana yang ditampilkan; karakter khusus dalam nama berkas membutuhkan escape filtergraph tersendiri. Ulangi secara terpisah untuk 02 hingga 05.

Terminal
set -e
setopt noclobber
CLIP=01
CROP_W=<CHECKED_EVEN_INTEGER>
CROP_H=<CHECKED_EVEN_INTEGER>
CROP_X=<CHECKED_EVEN_INTEGER>
CROP_Y=<CHECKED_EVEN_INTEGER>
test ! -e "shorts/short-${CLIP}.mp4"
test ! -e "probes/short-${CLIP}.json"
ffmpeg -i "clips/clip-${CLIP}.mp4" -map 0:v:0 -map 0:a:0 -vf "crop=${CROP_W}:${CROP_H}:${CROP_X}:${CROP_Y},scale=1080:1920:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,subtitles=captions/clip-${CLIP}.checked.srt" -c:v libx264 -pix_fmt yuv420p -c:a aac -n "shorts/short-${CLIP}.mp4"
test -s "shorts/short-${CLIP}.mp4"
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json "shorts/short-${CLIP}.mp4" > "probes/short-${CLIP}.json"
test -s "probes/short-${CLIP}.json"

Untuk masing-masing dari lima berkas probe JSON, wajibkan aliran video 1080 × 1920 dengan rasio aspek sampel 1:1, aliran audio, dan durasi positif yang sesuai dengan potongan yang disetujui setelah pengodean/pembulatan bingkai. Nilai hilang atau tidak diketahui belum terselesaikan. Keluaran JSON ffprobe memeriksa sifat berkas, bukan mutu penyuntingan. Buka kembali dan tonton seluruh MP4, bandingkan dengan rentang sumber, potongan yang diterima, dan SRT yang diperiksa. Periksa batas kalimat, takarir termasuk penempatan aman, bingkai saat bergerak, sinkronisasi audio, fakta, dan hak. Catat terima, revisi, atau tolak dengan waktu UTC dalam manifest. Lima berkas diterima yang masing-masing terhubung ke hash sumber, rentang disetujui, hash klip, hash SRT terperiksa, dan probe JSON menyelesaikan tugas. Empat berkas diterima belum cukup.

Batas dan pemulihan

Akses Claude Code dapat dikenai biaya paket atau API dan batas penggunaan. Model lokal yang diunduh, transkripsi, transkode, dan beberapa revisi menghabiskan penyimpanan dan komputasi. Catat biaya nyata jika akun menampilkannya; biaya tidak diketahui bukan nol. Kecepatan, akurasi, mutu takarir, penghematan, atau popularitas belum diukur untuk resep ini.

Pertahankan sumber asli dan hasil yang diterima. Jika model hilang, opsi tidak didukung, transkrip buruk, render gagal, atau penulisan tidak pasti, periksa hash masukan persis dan berkas yang sudah ada sebelum mengubah apa pun. Perbaiki penyebab khusus, berikan jalur baru untuk revisi, lalu ulangi probe dan pemutaran penuh. Jangan unggah atau bagikan video pendek akhir sebelum editor manusia menyetujui isi dan haknya.