Turn raw travel clips into a vlog with AI scene detection
PySceneDetect finds shot changes and exports thumbnails, scene lists and editor timelines [8]; you set the order and FFmpeg's concat demuxer joins the clips [9]. An agent can draft the edit with ai-video-editing-skill, but it sends frames from your clips to a cloud vision API [3]. Check GoPro files for GPS first: it sits in a separate data track inside the MP4 [10].
Not yet tested by VloggingProTools in this workflow
| Tool | Role in this workflow | Cost | Runs |
|---|---|---|---|
| PySceneDetect | Finds shot changes, lists them as CSV with thumbnails, splits clips and exports EDL, Final Cut XML or OTIO timelines [8]. | Free code | On your computer |
| FFmpeg / ffprobe | Leaves out the GPS data stream on copies and joins clips in your chosen order [14][9]. | Free code | On your computer |
| AI video editing skill (znyupup) | Optional agent instructions (SKILL.md) that analyse clips, plan an edit, show it in a browser dashboard for approval and render final.mp4 [3]. | Free code | On your computer, Cloud |
| whisper.cpp | Transcribes speech in the finished edit for chapter notes [17]. | Free code | On your computer |
The result
Your edit, joined in your order [9], plus a CSV scene list and thumbnails for every clip as a shot list [8].
Optional: EDL, Final Cut XML or OTIO timelines for your editor [8], GoPro copies without the GPS data stream [14], and a timed transcript for chapter notes [17].
Before you start
- Install PySceneDetect with pip; splitting needs FFmpeg or mkvmerge [1]. Windows installers and a Docker image with all dependencies also exist [1].
- ExifTool reads GoPro GPS with
-ee(extract embedded) [13]. - Every clip in one concat join needs the same streams (same codecs, same time base) [18]. Check before mixing GoPro and phone clips.
Steps
Copy the footage into a project folder
Copy every clip from the card into one project folder and edit only the copies.
GoPro Quik uses the GPS data for Performance Stickers and auto-edits [11], so keep it in the originals.
Check GoPro and phone clips for GPS location
GoPro stores sensor data in GPMF, a separate MP4 track beside video and audio [10]. Files with telemetry have at least four tracks: video, audio, timecode and GPMF [12].
GoPro lists GPS on HERO5 Black to HERO11 Black, HERO13 Black, MAX, MAX2, Fusion and MISSION 1, not HERO12 Black [11]. It records only after a satellite lock [11].
This ExifTool command finds GPS in many formats, MP4 included [2]. Run it on phone clips too. ExifTool lists GoPro GPS tags as not writable [13].
Copied from the documentation · source [2]exiftool -a "-gps*" -ee video.mp4Leave the GPS track out of the copies you publish (optional, untested)
FFmpeg includes data streams only when you map them [14].
-dndrops data, a negative-map_metadataindex skips metadata, andcopyavoids re-encoding [14].The first command uses these to keep only video and audio. Confirm with the ExifTool check that no GPS remains.
Assembled from documented options, not printed in the docs · source [14]ffmpeg -i in.MP4 -map 0:v -map 0:a -dn -map_metadata -1 -c copy clean.mp4Assembled from documented options, not printed in the docs · source [2]exiftool -a "-gps*" -ee clean.mp4Find the shots with PySceneDetect
PySceneDetect detects cuts and transitions; the latest release is v0.7.2, 11 October 2026 [8][1].
detect-adaptiveis a two-pass detector that helps avoid false cuts from camera movement.detect-contentfinds fast cuts;detect-thresholdfinds fades [8].list-sceneswrites a CSV,save-imagessaves the start, middle and end frames of each scene, andsplit-videocuts one clip per scene with FFmpeg.--copyis faster but not frame accurate [8].For your editor:
save-edlwrites a CMX 3600 EDL,save-fcpFinal Cut Pro XML (FCPX or FCP7) andsave-otioan OpenTimelineIO timeline, which many editors import. Combine commands in one run, each once [8].Copied from the documentation · source [1]pip install scenedetect --upgradeCopied from the documentation · source [8]scenedetect -i video.mp4 detect-adaptiveCopied from the documentation · source [8]scenedetect -i video.mp4 list-scenes save-imagesCopied from the documentation · source [8]scenedetect -i video.mp4 split-videoAssembled from documented options, not printed in the docs · source [8]scenedetect -i video.mp4 detect-adaptive list-scenes save-images save-edl save-fcp save-otioChoose the story order yourself
Use the frames and CSVs as a contact sheet [8]. Choose the opening, the order of places and the ending, and list the clip file names in that order.
The detectors compare colour, brightness, image hashes or histograms [8]. They find where shots change, not which ones matter.
You approve:Approve the story order: clips in, clips out, and the sequence.Join the clips with FFmpeg
The concat demuxer reads a text file of clips and plays them back to back as one file [9].
Write one
fileline per clip in story order. Lines starting with#are ignored, and relative paths need no-safe 0[9].The FFmpeg wiki's
printfline (macOS, Linux) andforloop (Windows) list every matching file in a folder [9]. Reorder the list before joining.Mismatched clips need the concat filter, which re-encodes and cannot be used with
-c copy[9].Assembled from documented options, not printed in the docs · source [9]# opening file 'clip-07.mp4' file 'clip-02.mp4' file 'clip-15.mp4'Assembled from documented options, not printed in the docs · macOS, Linux · source [9]printf "file '%s'\n" *.mp4 > mylist.txtAssembled from documented options, not printed in the docs · Windows · source [9](for %i in (*.mp4) do @echo file '%i') > mylist.txtAssembled from documented options, not printed in the docs · source [9]ffmpeg -f concat -i mylist.txt -c copy travel-vlog.mp4Optional agent route: ai-video-editing-skill
ai-video-editing-skill is a SKILL.md instruction file for agents such as Claude Code and OpenClaw, not a program [3]. Its README is in Chinese and aimed at phone-shot travel vlogs [3].
Stages: analyse each clip (Whisper transcription, frames sent to a vision API, loudness), plan three acts, show a browser dashboard for you to check, then render
final.mp4(H.264, 1080p, 30 fps) with titles and music [3].It needs FFmpeg, Python 3.9 or later,
openai-whisper,Pillowand an API key for GLM-4.6V-Flash, GPT-4o, Qwen-VL or any model using the OpenAI Chat Completions format [3].The README warns that Whisper invents text over ambient sound (the skill filters it by loudness) and that automatic music needs a separate music API [3].
MIT-licensed [6]. 13 commits, the last on 27 April 2026 [15].
Assembled from documented options, not printed in the docs · source [3]git clone https://github.com/znyupup/ai-video-editing-skill.gitYou approve:Check the plan in the dashboard and approve or change it before it renders [3].Transcribe speech for chapter notes
Convert the edit's audio to 16-bit WAV [16], then run whisper.cpp with
-osrtfor timed subtitles or-otxtfor plain text [17].Draft chapter markers from the SRT timings with the YouTube chapters tool.
Assembled from documented options, not printed in the docs · source [16]ffmpeg -i travel-vlog.mp4 -ar 16000 -ac 1 -c:a pcm_s16le travel-vlog.wavAssembled from documented options, not printed in the docs · source [17]whisper-cli -m models/ggml-base.en.bin -f travel-vlog.wav -l en -osrt -otxt -of travel-vlogApprove people and places before publishing
Watch the whole edit for faces of people who have not agreed to appear, number plates, house numbers, accommodation names and any map or GPS overlay that shows where you stay.
Blur, cut or get a release for each one.
You approve:Approve the final order and every identifiable person and place before publishing.
If you don't want to code
Common failures
- False cuts on handheld or action footage: use
detect-adaptive, or a longer--min-scene-len[8]. - Fades missed: use
detect-threshold[8]. - Split clips a few frames off: drop
--copyto re-encode [8]. - Concat fails or glitches: the clips' codecs or time base differ [18]. Use the concat filter [9].
- Concat rejects a file name: by default, paths must be relative and use only letters, digits, period, underscore and hyphen [18]. Rename the files or add
-safe 0[9]. - Audio timestamps break after
concatwith copied audio: the skill's author hit this and joined audio with the concat filter instead [15]. - Text over ambient sound in the transcript: in whisper.cpp use
-l,-sns,-nfand--vad[17].
Privacy, rights and permissions
- GoPro GPS sits in each MP4's GPMF track [10]. Check copies with ExifTool before sharing [2].
- The agent route sends frames to a cloud vision API [3]. Use it only on footage you may share with that provider.
- Claude Code edits files and runs commands [19]. Start it in a folder holding only this project's copies.
- Music, whether you or an agent adds it, needs a licence that covers your platform.
What we will measure
- Narrative continuity: a human 1 to 5 score with notes on chronology, pacing and meaning, on 12 travel shots in a fixed storyboard.
- False cuts: scene changes PySceneDetect marks that are not real shot changes.
- Manual corrections and editor minutes from first draft to accepted export.
- Time per publishable minute, human and machine time reported separately.
- Outbound connections per step, showing which steps leave the machine.
Sources
- raw.githubusercontent.com/Breakthrough/PySceneDetect/main/README.md fetched 2 Nov 2026
- ExifTool FAQ fetched 2 Nov 2026
- raw.githubusercontent.com/znyupup/ai-video-editing-skill/main/README.md fetched 2 Nov 2026
- raw.githubusercontent.com/Breakthrough/PySceneDetect/main/LICENSE fetched 2 Nov 2026
- FFmpeg License and Legal Considerations fetched 2 Nov 2026
- raw.githubusercontent.com/znyupup/ai-video-editing-skill/main/LICENSE fetched 2 Nov 2026
- Advanced setup - Claude Code Docs fetched 2 Nov 2026
- scenedetect 🎬 Command: PySceneDetect 0.7.1 documentation fetched 2 Nov 2026
- Concatenate – FFmpeg fetched 2 Nov 2026
- GoPro Open Sources Video Metadata | GoPro fetched 2 Nov 2026
- How To Turn On GPS With GoPro Cameras fetched 2 Nov 2026
- raw.githubusercontent.com/gopro/gpmf-parser/main/README.md fetched 2 Nov 2026
- GoPro Tags fetched 2 Nov 2026
- ffmpeg Documentation fetched 2 Nov 2026
- GitHub - znyupup/ai-video-editing-skill: AI Agent Skill for automated vlog editing. Feed raw footage, get a finished video. Powered by ffmpeg + Whisper + Vision API. · GitHub fetched 2 Nov 2026
- raw.githubusercontent.com/ggml-org/whisper.cpp/master/README.md fetched 2 Nov 2026
- raw.githubusercontent.com/ggml-org/whisper.cpp/master/examples/cli/README.md fetched 2 Nov 2026
- FFmpeg Formats Documentation fetched 2 Nov 2026
- Overview - Claude Code Docs fetched 2 Nov 2026