How marcuth/podcast-clipper works
AutoClip Studio turns YouTube podcast videos into vertical Shorts, horizontal long-form cuts, or timestamp-and-metadata plans. Users configure a run through the desktop UI or CLI; the Python pipeline gathers video information, transcribes, selects segments with Gemini or heuristics, then exports plans or renders clips. The desktop also exposes project-library and optional YouTube-upload capabilities. README statements and sampled call sites support the main flow; several specialized render and UI details are documented but their implementations were not sampled.
Main entry points: pipeline.py Pipeline engine · clip_selection.py Clip selection · api.py Desktop API · cut_clip.py Shorts rendering
Components 27
User interfaces
- Desktop shell
src/gui/app.py - Studio UI
client/src/App.tsx - CLI
src/cli/app.py - Desktop API
src/gui/api.py
Processing pipeline
- Pipeline engine
src/core/pipeline.py - Progress events
src/core/events.py - Progress state
src/core/pipeline_progress.py - Transcription modes
src/strategies/transcription.py - YouTube captions
src/utils/get_youtube_transcription.py
Transcript selection
- Transcript segments
src/domain/segment.py - Clip selection
src/strategies/clip_selection.py - AI clip planning
src/utils/ai_create_clips.py - Gemini service
src/services/gemini_service.py - Scoring heuristics
src/heuristics - YouTube heatmap
src/utils/get_youtube_heatmap.py
Clip rendering
- Shorts rendering
src/utils/cut_clip.py - Face tracking
src/utils/face_tracking.py - Face detection
src/utils/detect_face_center.py - Long-cut rendering
src/utils/cut_long_clip.py - Caption rendering
src/utils/render_remotion_captions.py - Subtitle generation
src/utils/generate_subtitles.py
Projects and publishing
- Project layout
src/core/project_layout.py - Video metadata
src/services/video_titles.py - Project library
client/src/components/library-tab.tsx - YouTube publishing
src/services/youtube_service.py - Media server
src/gui/server.py
Other components
- Creator
Connections 28
- Creator → Desktop shell: opens
README.md - Creator → CLI: runs
README.md - Desktop shell → Studio UI: hosts
src/gui/app.py - Studio UI → Desktop API: invokes
README.md - CLI → Pipeline engine: runs
src/cli/app.py - Desktop API → Pipeline engine: runs
src/gui/api.py - Pipeline engine → Transcription modes: transcribes with
src/core/pipeline.py - Transcription modes → YouTube captions: loads captions
src/strategies/transcription.py - Transcription modes → Transcript segments: produces
- Pipeline engine → Clip selection: selects clips
src/core/pipeline.py - Clip selection → AI clip planning: requests AI plan
src/strategies/clip_selection.py - AI clip planning → Gemini service: requests analysis
src/utils/ai_create_clips.py - Clip selection → Scoring heuristics: scores segments
src/strategies/clip_selection.py - Clip selection → YouTube heatmap: uses heatmap
- Clip selection → Transcript segments: groups segments
src/strategies/clip_selection.py - Pipeline engine → Shorts rendering: renders Shorts
src/core/pipeline.py - Pipeline engine → Long-cut rendering: renders long cuts
README.md - Shorts rendering → Face tracking: tracks faces
src/utils/cut_clip.py - Face tracking → Face detection: detects faces
src/utils/face_tracking.py - Shorts rendering → Caption rendering: renders captions
src/utils/cut_clip.py - Shorts rendering → Subtitle generation: generates subtitles
src/utils/cut_clip.py - Pipeline engine → Project layout: organizes output
src/core/pipeline.py - Pipeline engine → Video metadata: generates metadata
README.md - Desktop API → Project library: serves project actions
- Desktop API → YouTube publishing: offers upload
src/gui/api.py - Desktop shell → Media server: starts server
src/gui/app.py - Pipeline engine → Progress events: emits progress
src/core/pipeline.py - Progress events → Progress state: reports state
src/core/events.py