Feature Description
New production workflow that downloads viral short-form videos, identifies key frames, retouches/re-edits them, and uploads fresh content — with a Telegram review gate before any upload goes to main.
Motivation
The current MoneyPrinterV2 workflows all generate content from scratch (script → TTS → images → video). But the fastest path to fresh, engaging content is often:
- Find a viral video that's already proven (via SourceDiscovery pipeline)
- Extract the best moments/frames
- Retouch — add new text overlays, different music, re-caption, re-format
- Review — send draft to Telegram for human approval
- Upload — only after approval
This is especially powerful for:
- TikTok sliders — extract key frames from a viral video and rebuild as an image slider with fresh text
- YouTube Shorts — download a clip, add new voiceover/TTS, re-caption
- Content repurposing — same viral concept across different formats/platforms
Proposed Solution
New class: src/classes/VideoSourcing.py
VideoSourcing(fp_profile_path)
├── download_video(source_url) → local MP4 path
├── extract_key_frames(video_path, count=6) → List[FrameInfo]
├── analyze_frames(frames) → AI analysis of best moments
├── retouch_video(video_path, instructions) → retouched MP4 path
├── generate_slider_from_frames(frames, concept) → slider pack
└── run(source_item) → DraftContent
DraftContent schema
{
"source_item_id": "src-tiktok-abc123",
"original_url": "https://...",
"original_platform": "tiktok",
"draft_type": "video_retouch|slider_from_frames|clip_with_new_voiceover",
"draft_path": "/path/to/output.mp4 or /path/to/slider_pack/",
"key_frames": [{ "timestamp": 3.2, "image_path": "...", "score": 0.9 }],
"script": "AI-generated script based on key frame analysis",
"title": "...",
"caption": "...",
"telegram_review_sent": true,
"approved": false
}
New script: scripts/run_video_sourcing.py
CLI entry point:
--source-id — pick a SourceItem from .mp/sources/ JSON
--source-url — directly provide a video URL to download
--draft-type — video_retouch, slider_from_frames, clip_with_new_voiceover
--concept-id — optional concept template to overlay on the retouched content
--send-telegram — send draft to Telegram for review (ALWAYS ON by default)
--upload-on-approve — auto-upload after Telegram approval
--list-sources — list available SourceItems from recent discovery runs
Pipeline flow
SourceDiscovery → .mp/sources/sources_YYYY-MM-DD.json
↓
VideoSourcing picks a source item
↓
1. yt-dlp downloads video to .mp/temp/
2. ffmpeg extracts key frames at sampled timestamps
3. Vision model (via OmniRoute) analyzes each frame → scores + descriptions
4. LLM generates retouch instructions based on frame analysis + content_lane
5. ffmpeg/moviepy applies retouch (text overlay, music swap, re-caption, etc.)
6. Draft MP4 or slider pack saved to .mp/output/
7. Telegram bot sends draft + preview for human review
8. Only after human "approve" → upload to YouTube/TikTok
Telegram review gate (CRITICAL)
Before PR to main or any upload, the draft MUST be sent to Telegram for review. This matches the existing pattern in run_poc_video.py and run_tiktok_slider.py (both have --send-telegram flags).
The review message should include:
- Thumbnail preview (first key frame)
- Original source URL and platform
- Draft type (retouch / slider / voiceover)
- AI-generated title + caption
- Draft video or slider pack as attachment
- Approve/Reject buttons (Telegram inline keyboard)
Storage: .mp/sources/ and .mp/drafts/
.mp/sources/ — SourceItem JSONs from discovery runs
.mp/drafts/ — DraftContent JSONs + output files awaiting review
.mp/uploaded/ — approved and uploaded content logs
Key dependencies
yt-dlp — download videos from TikTok, YouTube, Instagram, etc.
ffmpeg — frame extraction, video retouching, overlay composition
moviepy — higher-level video editing (text overlays, music swap)
- Vision model via OmniRoute — analyze extracted frames
- Telegram Bot API — review gate with inline keyboard for approve/reject
- SourceDiscovery pipeline (companion issue) — feeds source items
Alternatives Considered
- Manual download + manual edit → rejected (whole point is automation)
- Full AI video generation from scratch → already exists in YouTube class; this is the complementary "sourced" approach
- Download-only (no retouch) → rejected; plain re-upload risks copyright issues; retouch makes it original
Risks & Mitigations
- Copyright — retouching changes enough to make content original; Telegram review gate catches anything questionable
- Platform scraping instability — yt-dlp is community-maintained and frequently updated; fallback to manual URL input
- Quality control — vision model frame analysis + Telegram human review = double gate
Feature Description
New production workflow that downloads viral short-form videos, identifies key frames, retouches/re-edits them, and uploads fresh content — with a Telegram review gate before any upload goes to main.
Motivation
The current MoneyPrinterV2 workflows all generate content from scratch (script → TTS → images → video). But the fastest path to fresh, engaging content is often:
This is especially powerful for:
Proposed Solution
New class:
src/classes/VideoSourcing.pyDraftContent schema
{ "source_item_id": "src-tiktok-abc123", "original_url": "https://...", "original_platform": "tiktok", "draft_type": "video_retouch|slider_from_frames|clip_with_new_voiceover", "draft_path": "/path/to/output.mp4 or /path/to/slider_pack/", "key_frames": [{ "timestamp": 3.2, "image_path": "...", "score": 0.9 }], "script": "AI-generated script based on key frame analysis", "title": "...", "caption": "...", "telegram_review_sent": true, "approved": false }New script:
scripts/run_video_sourcing.pyCLI entry point:
--source-id— pick a SourceItem from.mp/sources/JSON--source-url— directly provide a video URL to download--draft-type—video_retouch,slider_from_frames,clip_with_new_voiceover--concept-id— optional concept template to overlay on the retouched content--send-telegram— send draft to Telegram for review (ALWAYS ON by default)--upload-on-approve— auto-upload after Telegram approval--list-sources— list available SourceItems from recent discovery runsPipeline flow
Telegram review gate (CRITICAL)
Before PR to main or any upload, the draft MUST be sent to Telegram for review. This matches the existing pattern in
run_poc_video.pyandrun_tiktok_slider.py(both have--send-telegramflags).The review message should include:
Storage:
.mp/sources/and.mp/drafts/.mp/sources/— SourceItem JSONs from discovery runs.mp/drafts/— DraftContent JSONs + output files awaiting review.mp/uploaded/— approved and uploaded content logsKey dependencies
yt-dlp— download videos from TikTok, YouTube, Instagram, etc.ffmpeg— frame extraction, video retouching, overlay compositionmoviepy— higher-level video editing (text overlays, music swap)Alternatives Considered
Risks & Mitigations