Iz jednog snimka možete izdvojiti više kratkih klipova, ali transkript ne može da odredi da li isečak pošteno predstavlja sadržaj, niti izvoz u 1080 × 1920 dokazuje da je video prijatan za gledanje. Ovaj vodič koristi pet ručno pokretanih projektnih veština u Claude Code: transkripciju, rangiranje, sečenje, titlovanje i renderovanje. Ljudski urednik odobrava svaki interval izvornog snimka i gleda svaki završeni fajl. Postupak je namenjen videu koji posedujete ili imate izričito pravo da uređujete i delite.

Ovo je postupak zasnovan na dokumentaciji za macOS Terminal sa zsh. BIG CHANGE nije pokrenuo ove komande, pregledao privatne snimke niti napravio pet fajlova. Pre primene proverite pomoć instaliranih alata i svoj medijski materijal. Naslovna ilustracija konceptualno prikazuje pet vertikalnih videa koje bi autor pregledao. To nisu stvarni klipovi, izlaz softvera niti BIG CHANGE test dokumentovanog postupka.

Velika promena

  • Šta se promenilo: Projektne veštine u Claude Code mogu da podele lokalnu montažu videa na pet ručno pokretanih faza. Predloženi zapisi o predaji povezuju izvorne vremenske oznake, odobrene rezove, ispravljene titlove i završne fajlove; dokumentacija alata ne potvrđuje da je baš ovaj lanac uspešno izvršen.
  • Zašto je važno: Autor koji ima dozvolu za korišćenje izvornog snimka može ljudskom uredniku da prepusti konkretnu odluku u svakoj fazi, uključujući pitanje da li uopšte postoji pet različitih odgovarajućih isečaka. Takva struktura omogućava odbacivanje slabog ili obmanjujućeg reza pre izvoza sa titlovima.
  • Na šta paziti: Odluka o deljenju rezultata i dalje zavisi od prava, politike podataka izabranog Claude naloga i potpunog gledanja svakog sačuvanog MP4 fajla. Uspešna tehnička provera fajla ne rešava ta pitanja.

Pre početka

Potreban vam je lokalni source.mp4 sa upotrebljivim zvukom, dovoljno prostora, pristupom Claude Code i ispravnim lokalnim whisper.cpp whisper-cli i modelom koji podržava jezik, kao i FFmpeg i ffprobe sa potrebnim enkoderima i filterima. Potreban je i urednik koji može da proveri snimak i svih pet izvezenih videa. Zabeležite Claude Code nalog i politiku podataka, instalirane verzije, whisper.cpp commit ili izdanje, SHA-256 modela i licencu, kao i ograničenja korišćenja. Claude Code može koristiti udaljeni model čak i kada se transkripcija i renderovanje obavljaju lokalno. Omogućite mu samo pristup transkriptu ili medijima koji dozvoljavaju vaša prava i politika naloga. Njegova uputstva za veštine ne ograničavaju pristup. Posebne kontrole dozvola za alate upravljaju pozivima alata; u zavisnosti od podešavanja, rutinske radnje samo za čitanje mogu se izvršiti bez upita. Svesno proverite šta veština može da čita, kao i šta predlaže da upiše ili izvrši.

Stavite nepromenljivu kopiju izvora i rights.json u novu pouzdanu lokalnu fasciklu za ovaj rad. Evidencija prava treba da sadrži SHA-256 izvora, urednika, dozvoljene isečke i dalju upotrebu, dozvole za govornike, muziku i vizuelni sadržaj, kao i pravila čuvanja i zadržavanja. Ne nastavljajte ako su prava nejasna. Otvorite Terminal u toj fascikli, proverite pwd, pa napravite radne fascikle:

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

Postavite WHISPER_CLI i WHISPER_MODEL na stvarne apsolutne putanje u navodnicima. Postavite LANGUAGE na proverenu oznaku govornog jezika, na primer en samo kada je zvuk na engleskom. Proverite da model podržava taj jezik; model .en namenjen samo engleskom ne pokriva drugi jezik. Mešoviti ili nepodržani jezici zahtevaju proveren plan pre nastavka. whisper.cpp CLI priručnik dokumentuje -l, -m, -f, -osrt, -oj i -of; proverite ih prema pomoći svog izdanja. Ne uključujte opciju prevođenja.

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

Zamenite primer putanja i jezik pre bilo kakvog pokretanja. Proverite trajanje izvora, tokove, orijentaciju, zvuk i slobodan prostor. Potvrdite da instalirani filter subtitles podržava libass i da scale prihvata force_original_aspect_ratio, force_divisible_by i reset_sar. Ako potrebna mogućnost nedostaje, sledite uputstva održavalaca za izgradnju i ponovite provere. Nemojte prećutno izostaviti titlove.

Napravite pet projektnih veština sa jasnim granicama

U pouzdanom projektu sačuvajte pet odvojenih .claude/skills/<name>/SKILL.md fajlova. Svakom su potrebni sopstveni name, description, disable-model-invocation: true, kao i potpun ulaz, radnja, izlaz i pravilo zaustavljanja. Pokrećite ih ručno ovim redosledom: /video-transcribe, /video-rank, /video-cut, /video-caption, /video-vertical. Nemojte dodavati allowed-tools: prema Claude Code dokumentaciji, to polje daje dozvolu za korišćenje navedenih alata bez upita tokom pokretanja; ono ne ograničava veštinu. Zadržite normalna podešavanja dozvola i svesno proverite pristup. Poziv alata samo za čitanje možda neće tražiti potvrdu, dok upis i izvršavanje prate stvarne kontrole naloga.

Koristite sledeće potpune sadržaje uz zajedničku evidenciju opisanu ispod. Tekst u veštini je uputstvo za Claude Code, a ne tehnički sprovedena granica.

.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.

Čuvajte jedan manifest.json za ovaj rad. Pri svakoj predaji zabeležite evidenciju prava i SHA-256 nepromenljivog izvora, verzije alata, SHA-256/licencu/jezik modela, ulaze i izlaze sa SHA-256, odobrene brojčane intervale izvora, tačne komande i odluke sa UTC vremenom. Ako se naziv fajla ili hash razlikuje, zaustavite se i razrešite razliku pre sledeće veštine.

Svaki shell blok ispod tretirajte kao jednu fazu u novoj zsh skripti ili kontrolisanom shell okruženju, uz set -e da neuspešna komanda zaustavi fazu. Pre pokretanja proverite da izlazna putanja nije zauzeta i u manifest upišite svaki izlazni kod različit od nule, nedostajući fajl ili neizvestan upis kao blokadu. Sledeća veština mora da pročita taj status i hash izlaza; ne sme prihvatiti neuspešan rez samo zato što postoji stari klip.

1. Transkribujte izvor

Prema whisper.cpp README dokumentu održavalaca , trenutni CLI primer zahteva 16-bitni WAV. Nakon provere izvornog zvuka, iz proverene projektne fascikle pokrenite sledeće. -n sprečava FFmpeg da prepiše postojeći WAV.

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

Potvrdite da i transcript/source.srt i .json postoje, sadrže govor sa vremenskim oznakama i ne prelaze provereno trajanje izvora. Preslušajte reprezentativne delove i proverite nejasna imena, brojeve i citate prema originalu. Sačuvajte ispravljen transkript izvora ili izričite oznake neizvesnosti. Ako je izdvojeni zvuk ili transkript prazan, proverite izvorni tok, izvršni fajl, jezik i usklađenost modela pre novog izlaza sa jedinstvenim imenom.

2. Izaberite pet trenutaka u originalu

Pokrenite /video-rank sa proverenim transkriptom i ciljnom publikom. Tražite više od pet predloga kako bi urednik mogao da odbaci slabe isečke. Za svaki predlog zahtevajte početak i kraj u brojčanim sekundama od početka izvora, izgovoreni deo, kontekst pre i posle i razlog zašto isečak može da stoji samostalno. Otvorite svaki interval u originalu. Urednik odlučuje da li rez zadržava govornika, formulaciju, vizuelni kontekst, činjenice i dozvole. Sačuvajte tačno pet različitih odobrenih intervala u approved-moments.json; uključite redosled, hash izvora i 0 <= start < end <= source duration. Deo transkripta služi samo za pronalaženje mesta. Za uži zadatak traženja vremenskih oznaka pogledajte Pronađite izgovoreni trenutak pre montaže videa.

Ako snimak nema pet opravdanih trenutaka, zaustavite se. Zadatak sa pet fajlova ostaje nedovršen.

3. Isecite odobrene intervale

Pokrenite /video-cut. Za svaki interval izračunajte DURATION = END - START iz njegovih odobrenih brojčanih granica. Zamenite oznake u uglastim zagradama ispod stvarnim brojevima; oznake nisu izvršive vrednosti. Ponovite za clip-02.mp4 do clip-05.mp4. FFmpeg dokumentuje traženje mesta u ulazu, trajanje, izričit izbor tokova i izlaz koji ne prepisuje postojeće fajlove. Za predviđene granice reza koristite transkodiranje umesto kopiranja toka.

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

Tehnički proverite tokove i trajanje svakog stvarnog klipa, pregledajte prvi i poslednji kadar, pa ga pogledajte celog. Zabeležite hash i odobreni interval izvora. Pogrešan rez zahteva nove odobrene granice i novo ime izlaza. Ako komanda ne uspe ili je rezultat neizvestan, pregledajte postojeći fajl i tehnički ga proverite pre ponovnog pokretanja; nikada ne usmeravajte ponovni pokušaj na isto ime.

4. Ispravite titlove prema svakom stvarnom rezu

Pokrenite /video-caption. Transkribujte svaki prihvaćeni klip jer njegovi titlovi treba da počinju od nule na početku klipa. Za klip 01 komande su:

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

Ponovite sa stvarnim odgovarajućim dvocifrenim brojem od 02 do 05 i odvojenim putanjama. Sačuvajte svaki sirovi captions/clip-NN.srt. Urednik poredi svaki titl sa klipom, ispravlja reči, imena i brojeve, proverava vreme i čitljivost i čuva captions/clip-NN.checked.srt. Titl koji prelazi trajanje klipa blokira renderovanje. Zabeležite hash svakog SRT fajla uz hash klipa. Ako se rez promeni, ponovo napravite ili proverite titlove prema novom fajlu.

5. Promenite kadar, renderujte i prihvatite svih pet

Pokrenite /video-vertical. Za svaki prihvaćeni klip proverite dekodiranu sliku, orijentaciju, odnos stranica uzorka i kretanje. Urednik bira zasebne parne celobrojne vrednosti za CROP_W, CROP_H, CROP_X, CROP_Y. Pravougaonik mora stati u dekodirani kadar. Fiksno izrezivanje ne prati pokretan subjekat; ako gubi važan sadržaj, izaberite proveren plan skaliranja i dopunjavanja okvira ili izmenite rez. Nejasna rotacija ili koordinate izrezivanja zaustavljaju renderovanje. FFmpeg priručnik za filtere dokumentuje crop, scale, pad i subtitles filter koji koristi libass.

Iz utvrđene radne fascikle postavite CLIP na stvarni dvocifreni broj, a četiri promenljive izrezivanja na odobrene cele brojeve tog klipa. Komanda je šablon, a ne testiran primer. Zadržite prikazanu jednostavnu relativnu putanju titlova; posebni znakovi u imenima fajlova zahtevaju zasebno escape kodiranje za filtergraph. Ponovite odvojeno za 02 do 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"

Za svaki od pet JSON izveštaja tehničke provere zahtevajte video tok 1080 × 1920 sa odnosom stranica uzorka 1:1, audio tok i pozitivno trajanje usklađeno sa odobrenim rezom nakon kodiranja i zaokruživanja kadrova. Nedostajuća ili nepoznata vrednost ostaje nerazrešena. JSON izlaz alata ffprobe proverava osobine fajla, a ne kvalitet montaže. Ponovo otvorite i pogledajte svaki MP4 u celini, poredeći ga sa izvornim intervalom, prihvaćenim rezom i proverenim SRT fajlom. Proverite granice rečenica, titlove i njihov bezbedan položaj, kadar tokom kretanja, sinhronizaciju zvuka, činjenice i prava. U manifest upišite prihvatanje, izmenu ili odbijanje sa UTC vremenom. Zadatak je završen sa pet prihvaćenih fajlova, od kojih je svaki povezan sa hashom izvora, odobrenim intervalom, hashom klipa, hashom proverenog SRT fajla i JSON izveštajem. Četiri prihvaćena fajla nisu dovoljna.

Ograničenja i oporavak

Pristup Claude Code može zahtevati pretplatu ili API naknadu i imati ograničenja korišćenja. Preuzet lokalni model, transkripcija, transkodiranje i više izmena troše prostor i računarske resurse. Zabeležite stvarne troškove ako ih nalog prikazuje; nepoznat trošak nije nula. Za ovaj postupak nisu izmereni brzina, tačnost, kvalitet titlova, uštede niti popularnost.

Sačuvajte original i prihvaćene rezultate. Ako model nedostaje, opcija nije podržana, transkript je loš, renderovanje ne uspe ili je upis neizvestan, proverite tačne hash vrednosti ulaza i postojeći fajl pre bilo kakve promene. Otklonite konkretan uzrok, dajte izmeni novu putanju i ponovite tehničku proveru i potpuno gledanje. Ne otpremajte niti delite završeni klip dok ljudski urednik ne prihvati sadržaj i prava.