Labsco
nmbrthirteen logo

Podcli

โ˜… 19

from nmbrthirteen

Generate upload-ready clips from podcast.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

podcli

Open-source AI podcast clipper.
Generate short clips in 9:16, 16:9, or 1:1 with face tracking and burned-in captions. CLI, MCP server, and web app.

podcli.com ยท Quick start ยท MCP ยท Features

Podcli demo

โ–ถ Watch with sound on X

podcli process episode.mp4

One command transcribes, picks the best moments, crops to the face, and burns captions in. Nothing leaves your machine.


What It Does

podcli takes a long-form podcast and turns it into a complete content operation:

Record episode
    โ†“
Transcribe (Whisper, speaker detection)
    โ†“
Find viral moments (Claude AI + audio energy + knowledge base)
    โ†“
Render clips (9:16, 16:9, or 1:1, captions, smart crop, normalized audio)
    โ†“
Generate content package (titles, descriptions, thumbnails, SEO)    โ† PodStack
    โ†“
Publish with optimization checklist                                  โ† PodStack
    โ†“
Review performance                                                   โ† PodStack

The first half is video processing โ€” podcli's core engine. The second half is content workflow โ€” powered by PodStack, a set of Claude Code slash commands that ship with podcli. Both halves are deeply integrated: the clip suggestion engine reads from your PodStack knowledge base, uses your title formulas and voice rules, checks the episode database for duplicates, and outputs MCP-aligned fields that flow through to export.


How It Works (From a User's Perspective)

1. Drop in your episode

podcli            # then choose "Open Web UI"
# โ†’ http://localhost:3847

Drag your video into the Web UI, or use the CLI:

podcli process episode.mp4

2. Get clips automatically

podcli uses Claude to analyze your transcript against your show's knowledge base, finding the most viral moments. It scores each one on 4 dimensions, suggests clips with multi-cut segments (cutting out filler), and lets you toggle them on/off before rendering.

Clips come out as upload-ready Shorts: 1080x1920, 9:16 vertical, with burned-in captions, normalized audio, and your logo.

3. Generate the full content package

Open the project in Claude Code and run:

/produce-shorts

This runs the PodStack pipeline โ€” a gstack-style workflow that gives you:

  • 8-15 scored moments with timestamps, categories, and reasoning
  • 8 title options per clip following your show's title spec (verified against 6 quality gates)
  • Ready-to-paste descriptions with hooks, guest attribution, hashtags, SEO keywords
  • Thumbnail briefs for both podcast (16:9) and shorts (9:16) formats
  • Brand review that catches banned words, voice violations, and weak hooks
  • Publish checklist covering pre-upload, at-publish, first-24-hours, and day 3-4 optimization

4. Publish and track

Run /publish-checklist when uploading. A week later, run /retro-episode with your YouTube Studio stats to see what worked and what to improve.


The Two Halves

Video Engine (podcli core)Content Workflow (PodStack)
WhatTranscription, clip detection, renderingTitles, descriptions, thumbnails, publishing
HowPython + FFmpeg + Whisper + OpenCV + Claude/CodexClaude Code slash commands
InterfaceWeb UI, CLI, MCP tools/slash-commands in Claude Code
Output.mp4 files ready to uploadContent packages ready to paste into YouTube

Both halves share the same knowledge base (.podcli/knowledge/) โ€” your show's brand, voice, title formulas, episode database, and style guide. Set it up once, everything stays on-brand.


Features

Video Processing

  • AI clip suggestion โ€” Claude/Codex-powered moment detection with knowledge base context, multi-cut segments, 4-dimension scoring
  • Multi-format output โ€” vertical 9:16, horizontal 16:9, or square 1:1 (--format, the studio selector, or the create_clip MCP tool); captions scale to each canvas. Defaults to vertical.
  • Import from a URL โ€” paste a YouTube or direct video link in the studio to download and process it
  • Face tracking โ€” YuNet face detection, exponential-smoothing camera, split-screen support, speaker-aware tracking with snap cooldown
  • Burned-in captions โ€” 4 styles: branded, hormozi, karaoke, subtle
  • Hardware-accelerated encoding โ€” VideoToolbox (Mac), NVENC (NVIDIA), VAAPI, CPU fallback
  • Smart cropping โ€” center crop or face tracking (handles split-screen, Riverside-style mixed layouts)
  • Multi-segment clips โ€” automatically cuts out filler, long pauses, and tangents
  • Whisper transcription โ€” auto-transcribe with speaker detection (tiny โ†’ large)
  • Transcript import โ€” paste Speaker (MM:SS), JSON, drag-drop .txt / .srt / .vtt

Content Workflow (PodStack)

  • /process-transcript โ€” extract and score best moments from any transcript
  • /generate-titles โ€” 8 titles per clip with 6-point verification checklist
  • /generate-descriptions โ€” descriptions + hashtags + SEO keywords
  • /plan-thumbnails โ€” thumbnail text + designer briefs for both formats
  • /review-content โ€” paranoid brand check (banned words, voice, title rules)
  • /produce-shorts โ€” full pipeline: transcript โ†’ publish-ready package
  • /publish-checklist โ€” pre/post-publish optimization
  • /retro-episode โ€” performance analysis after publishing

Infrastructure

  • Knowledge base โ€” .md files that teach the AI your brand, voice, and style
  • Asset management โ€” register logos and videos for quick reuse
  • Clip history โ€” tracks everything to avoid duplicates
  • Preset system โ€” save named configurations per show
  • Content studio โ€” generate titles, descriptions, tags, and hashtags in the web UI; regenerate any section with your own guidance, or ask for anything custom
  • MCP server โ€” 17 tools for Claude Desktop / Claude Code integration
  • Web UI โ€” single-page flow at localhost:3847
  • CLI โ€” one-command processing: podcli process episode.mp4

Knowledge Base

The knowledge base is what makes podcli understand your show. Drop .md files into .podcli/knowledge/ and both the video engine and content workflow use them. The clip suggestion engine reads 8 of these files (prioritized by relevance), checks the episode database for duplicate avoidance, and applies your voice rules and title formulas when generating suggestions.

PodStack ships with 13 starter templates that you fill in with your show's details:

FileWhat It Teaches The AI
00-master-instructions.mdAuto-detection rules, decision tree, quality gates
01-brand-identity.mdShow name, positioning, tagline, hosts, format
02-voice-and-tone.mdVoice fingerprint, banned words, the Coffee Test
03-episodes-database.mdEpisode tracking, existing shorts (for dedup)
04-shorts-creation-guide.mdMoment types, selection criteria, extraction process
05-title-formulas.mdTitle shapes, rules, templates by content type
06-descriptions-template.mdDescription formulas, hashtag library, SEO keywords
07-thumbnail-guide.mdLayouts, brand colors, typography, visual specs
08-topics-themes.mdCore topics, cross-cutting themes, audience map
09-content-workflow.mdEnd-to-end workflow phases, handoff specs
10-internal-processing.mdAuto-execution rules, internal quality gates
11-inspiration-channels.mdReference channels, viral hooks, hybrid formulas
12-quick-reference.mdCopy-paste hooks, hashtags, CTAs, checklists

Manage via the web UI at /knowledge.html (drag & drop, inline editor) or through the knowledge_base MCP tool.


MCP Server (Claude Integration)

podcli is a Model Context Protocol server โ€” Claude can use it as a tool to create clips through conversation.

Claude Code โ€” register the bundled MCP server in one command:

podcli mcp install

Claude Desktop โ€” add to claude_desktop_config.json:

{
  "mcpServers": {
    "podcli": {
      "command": "podcli",
      "args": ["mcp"]
    }
  }
}

MCP Tools

ToolDescription
transcribe_podcastTranscribe audio/video with Whisper + speaker detection
suggest_clipsSubmit clip suggestions (includes duplicate check)
create_clipRender a single short-form clip as a vertical short
batch_create_clipsRender multiple clips in one batch
knowledge_baseRead/manage podcast context files (hosts, style, audience, etc.)
manage_assetsRegister/list reusable assets (logos, videos)
clip_historyView previously created clips, check for duplicates
get_ui_stateRead current session state and get workflow next-step guidance
modify_clipAdjust a suggested clip's timing, title, or caption style (or delete it)
toggle_clipSelect or deselect a suggested clip for export
update_settingsUpdate rendering settings (caption style, crop strategy, logo, outro)
list_outputsList all rendered clip files in the output directory
manage_presetsSave, load, list, or delete rendering presets
analyze_energyAnalyze audio energy levels to find high-energy moments
set_videoSet the working video file without transcribing
import_transcriptImport an external transcript with word-level timestamps (skips Whisper)
parse_transcriptParse raw speaker-labeled plain text into word-level timestamps

Caption Styles

StyleLook
brandedLarge bold text, dark box highlight on active word, gradient overlay, optional logo
hormoziBold uppercase pop-on text, yellow active word (Alex Hormozi style)
karaokeFull sentence visible, words highlight progressively
subtleClean minimal white text at bottom

Project Structure

podcli/
โ”œโ”€โ”€ cli/                      # Go launcher (native binary, provisioning, self-update)
โ”œโ”€โ”€ install.sh / install.ps1 # node-less installers
โ”œโ”€โ”€ setup.sh                  # dev environment setup (venv + npm)
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ CLAUDE.md                 # PodStack master config
โ”‚
โ”œโ”€โ”€ .claude/commands/         # PodStack slash commands
โ”‚   โ”œโ”€โ”€ process-transcript.md
โ”‚   โ”œโ”€โ”€ generate-titles.md
โ”‚   โ”œโ”€โ”€ generate-descriptions.md
โ”‚   โ”œโ”€โ”€ plan-thumbnails.md
โ”‚   โ”œโ”€โ”€ review-content.md
โ”‚   โ”œโ”€โ”€ produce-shorts.md
โ”‚   โ”œโ”€โ”€ publish-checklist.md
โ”‚   โ””โ”€โ”€ retro-episode.md
โ”‚
โ”œโ”€โ”€ src/                      # TypeScript
โ”‚   โ”œโ”€โ”€ index.ts              # MCP server entry (stdio)
โ”‚   โ”œโ”€โ”€ server.ts             # MCP tool definitions
โ”‚   โ”œโ”€โ”€ config/paths.ts
โ”‚   โ”œโ”€โ”€ models/index.ts
โ”‚   โ”œโ”€โ”€ handlers/             # MCP tool handlers
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”œโ”€โ”€ python-executor.ts
โ”‚   โ”‚   โ”œโ”€โ”€ file-manager.ts
โ”‚   โ”‚   โ”œโ”€โ”€ asset-manager.ts
โ”‚   โ”‚   โ”œโ”€โ”€ clips-history.ts
โ”‚   โ”‚   โ”œโ”€โ”€ knowledge-base.ts
โ”‚   โ”‚   โ””โ”€โ”€ transcript-cache.ts
โ”‚   โ””โ”€โ”€ ui/
โ”‚       โ”œโ”€โ”€ web-server.ts     # Express server + API
โ”‚       โ””โ”€โ”€ public/           # Frontend (React SPA)
โ”‚
โ”œโ”€โ”€ backend/                  # Python
โ”‚   โ”œโ”€โ”€ main.py               # stdin/stdout JSON dispatcher
โ”‚   โ”œโ”€โ”€ cli.py                # CLI entry point
โ”‚   โ”œโ”€โ”€ presets.py
โ”‚   โ”œโ”€โ”€ requirements.txt
โ”‚   โ”œโ”€โ”€ models/               # ML model files
โ”‚   โ”‚   โ””โ”€โ”€ face_detection_yunet_2023mar.onnx
โ”‚   โ”œโ”€โ”€ services/             # Whisper, FFmpeg, captions, face tracking, etc.
โ”‚   โ”‚   โ”œโ”€โ”€ face_detector.py  # shared YuNet face detector
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ config/
โ”‚       โ””โ”€โ”€ caption_styles.py
โ”‚
โ”œโ”€โ”€ .podcli/                  # config home (gitignored) โ€” knowledge, presets, assets
โ”‚   โ”œโ”€โ”€ knowledge/
โ”‚   โ”œโ”€โ”€ assets/
โ”‚   โ”œโ”€โ”€ presets/
โ”‚   โ””โ”€โ”€ history/
โ””โ”€โ”€ data/                     # runtime data (gitignored) โ€” cache, output, working
    โ”œโ”€โ”€ cache/                # CLI transcription cache + remotion bundle
    โ”‚   โ””โ”€โ”€ transcripts/      # MCP/UI transcript cache
    โ”œโ”€โ”€ output/               # rendered clips
    โ””โ”€โ”€ working/              # temp uploads and task dirs

Transcript Format

Speaker Name (00:00)
What they said goes here as plain text.

Another Speaker (00:45)
Their response text here.

The time offset field (default: -1s) shifts all timestamps to sync with audio.