Awesome-omni-skill tiktok-workflow-e2e
End-to-end orchestration of TikTok content creation. Single entry point for batch processing multiple products from scraping to production-ready scripts.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/cli-automation/tiktok-workflow-e2e" ~/.claude/skills/diegosouzapw-awesome-omni-skill-tiktok-workflow-e2e && rm -rf "$T"
skills/cli-automation/tiktok-workflow-e2e/SKILL.mdTikTok E2E Workflow
Single command to process products from start to finish.
Quick Start
# Process single product /workflow 1729607303430380470 # Process batch from CSV /workflow --batch products.csv # Resume from specific phase /workflow --batch products.csv --start-phase analysis
Workflow Phases
┌────────────────────────────────────────────────────────────────┐ │ PHASE 1: SCRAPING (Python) │ │ Skill: tiktok_product_scraper.md │ │ Agent: Python script │ │ Parallel: Yes (across products) │ │ Output: tabcut_data.json, product_images/, ref_video/*.mp4 │ └────────────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────┐ │ PHASE 2A: VIDEO ANALYSIS (Python Async) │ │ Skill: tiktok_ad_analysis.md │ │ Agent: Python (3-phase pipeline: extract → transcribe → API) │ │ Parallel: 5 products at once (5 Gemini CLI threads max) │ │ Internal: Each product analyzes 5 videos in parallel │ │ Output: video_N_analysis.md (5 files per product) │ │ OPTIMIZED v4.4.0: 8 products in 4 min (was 16 min) - 4x faster│ └────────────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────┐ │ PHASE 2B+2C: ANALYSIS + SYNTHESIS (Gemini MCP Async) │ │ Skill: tiktok_product_analysis.md │ │ Agent: Gemini CLI MCP (async) │ │ Parallel: SEQUENTIAL across products (5 MCP task limit) │ │ Within each product: Videos(5) → Image(1) ∥ Synth(1) │ │ Output: image_analysis.md + video_synthesis.md │ │ OPTIMIZED: 2B+2C run in parallel after 2A ⭐ ~3min savings │ └────────────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────┐ │ QUALITY GATE │ │ Check: video_synthesis.md exists (80+ lines minimum) │ │ Block: Cannot proceed to Phase 3 if missing │ └────────────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────┐ │ PHASE 3: SCRIPT GENERATION (Claude) │ │ Skill: tiktok_script_generator.md │ │ Agent: Claude (direct writing from synthesis) │ │ Parallel: Yes - batch Write calls (3 scripts + summary/product)│ │ Output: 3 scripts + Campaign_Summary.md │ │ OPTIMIZED v2.3.0: 2-3 min/product (was 5-8 min) - 2x faster │ └────────────────────────────────────────────────────────────────┘
Phase 1: Scraping
Output Folder (Dated Batches)
This vault organizes runs under
product_list/YYYYMMDD/<product_id>/ (see existing folders like product_list/20260103/).
Set a date folder for the current run:
DATE=YYYYMMDD OUT="../product_list/$DATE" mkdir -p "$OUT"
Execute:
cd /Users/lxt/Movies/TikTok/WZ/lukas_9688/scripts source venv/bin/activate # Single product python run_scraper.py --product-id {product_id} --download-videos --output-dir "$OUT" # Batch (from products.csv) python run_scraper.py --batch-file products.csv --download-videos --output-dir "$OUT"
Output per product:
product_list/YYYYMMDD/{product_id}/ ├── tabcut_data.json # Product metadata ├── tabcut_data.md # Markdown version ├── product_images/ # 5-9 product images │ └── *.webp └── ref_video/ # Top 5 videos └── *.mp4
Gate: Check all products have
tabcut_data.json
Phase 2: Analysis
⚠️ IMPORTANT: Video analysis now runs with cross-product parallelism (up to 5 products simultaneously via Gemini CLI background tasks).
Concurrency Model (v4.4.0 Optimized)
Video Analysis (Python async - PARALLELIZED):
- Uses
to launch up to 5 products in parallelgemini_cli_execute_async - Each product uses Python's internal pipeline:
withasyncio
for 5 concurrent Gemini API callsSemaphore(5)
for parallel FFmpeg frame extractionThreadPoolExecutor(5)- Cached Whisper model (loads once per product)
- Execution: Launch 5 async tasks → wait → launch next batch
- Result: 8 products analyzed in ~4 minutes (was 16 min sequential)
Image + Synthesis (Gemini MCP async):
- ⚠️ CRITICAL: 5 MCP task limit (per tiktok_product_analysis.md)
- Process products SEQUENTIALLY (one at a time)
- Within each product: Stage 1 (5 videos parallel) → Stage 2 (image) → Stage 3 (synthesis)
- Never try to parallelize multiple products for image+synthesis
Model Policy (MANDATORY)
Run analysis prompts with:
- Primary:
-m gemini-3-pro-preview - Fallback (only if capacity/quota hit):
-m gemini-3-flash-preview
2A: Video Analysis (Python - PARALLEL v4.4.0)
Execute with parallelism (up to 5 products at once):
cd scripts source venv/bin/activate # Launch 5 products in parallel using Gemini CLI async # Product IDs: 1729671956792187076, 1729480049905277853, 1729637085247609526, etc. # Example: Batch 1 (5 products in parallel) for pid in 1729671956792187076 1729480049905277853 1729637085247609526 1729697087571270361 1729630936525936882; do python analyze_video_batch.py $pid --date YYYYMMDD & done wait # Batch 2 (remaining 3 products) for pid in 1729607303430380470 1729607478878640746 1729489298386491816; do python analyze_video_batch.py $pid --date YYYYMMDD & done wait
What happens per product (3-phase pipeline):
📦 PHASE 1: Parallel frame extraction (ThreadPoolExecutor, 5 workers) → All 5 videos extract frames simultaneously (~10-15s) 🎤 PHASE 2: Sequential transcription (cached Whisper model) → Model loads once, transcribes all 5 videos (~30-50s) 🤖 PHASE 3: Parallel Gemini analysis (asyncio.Semaphore(5)) → 5 async subprocess calls to gemini-cli (~60-120s) Total per product: ~80-120s (was ~4-5 min)
Performance (v4.4.0 - PARALLELIZED):
- Single product (5 videos): 80-120 seconds
- 8 products sequentially: 16 minutes
- 8 products in 2 batches (5+3): ~4 minutes ⭐ 4x faster
- Key: Gemini CLI limit = 5 concurrent threads max
Output:
ref_video/video_N_analysis.md (bilingual, per video)
2B+2C: Image Analysis + Video Synthesis (Gemini MCP Async - PARALLEL ⭐)
✅ OPTIMIZED MODEL (v1.5.0):
Uses Gemini CLI MCP async (NOT Claude). Process products SEQUENTIALLY, but 2B and 2C run in parallel after 2A completes.
Pipeline per product (2 stages: sequential 2A, then parallel 2B+2C):
┌─────────────────────────────────────────────────────────────┐ │ Stage 1: Video Analysis (5 tasks in parallel - fills limit) │ │ └─ video_1..5_analysis.md → Wait for all 5 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌───────────────┴───────────────┐ ↓ ↓ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ Stage 2: Image Analysis (1) │ │ Stage 3: Synthesis (1) │ │ └─ image_analysis.md │ │ └─ video_synthesis.md │ └──────────────────────────────┘ └──────────────────────────────┘ ↓ ↓ └───────────────┬───────────────┘ ↓ wait for both Then proceed to next product...
Key Optimization: Image analysis and synthesis have no dependency on each other:
- Image reads:
product_images/*.webp - Synthesis reads:
(from Stage 1)ref_video/video_*_analysis.md - Can safely run in parallel using only 2 of 5 available MCP slots
Execution:
# Process products sequentially with optimized pipeline for product_id in $products; do # Stage 1: Launch 5 video analyses (parallel, fills 5 MCP slots) python analyze_video_batch.py $product_id --date YYYYMMDD & wait # Wait for video analysis to complete # Stage 2+3: Launch image + synthesis in parallel (uses 2 slots) python analyze_product_images.py $product_id --date YYYYMMDD & python create_video_synthesis.py $product_id --date YYYYMMDD & wait # Wait for both to complete done
Performance (8 products):
- Per product: Videos (2min) + max(Image 3min, Synthesis 3min) = ~5 min
- 8 products sequential: ~40 min
- Old model: Videos (2min) + Image (3min) + Synthesis (3min) = ~8 min → ~64 min total
- Savings: ~24 minutes for 8 products ⭐ ~3 min per product
Output per product:
product_images/image_analysis.md
(CRITICAL)ref_video/video_synthesis.md
Quality Gate - ENHANCED
Before Phase 3, verify analysis quality and compliance:
Option 1: Enhanced Quality Gate (Recommended)
Use the updated verify_gate.sh script with integrated quality validators:
# Comprehensive gate: file existence + bilingual coverage + compliance + ElevenLabs cues bash scripts/verify_gate.sh --date YYYYMMDD --csv scripts/products.csv --phase all
The enhanced gate now validates:
-
Phase 1: File Existence (existing checks)
presencetabcut_data.json/md
(200+ lines, no meta preamble)image_analysis.md
(150+ lines, no meta preamble)video_synthesis.md- Video analysis files count
- Script files count (4+)
-
Phase 2: Quality Standards (NEW)
- Bilingual Coverage: DE/ZH pairs (30+), bilingual headers (10+), Chinese ratio (8-25%)
- Compliance Flags: Risky claims properly flagged in analysis, absent from scripts
- ElevenLabs Cues: Density (≥0.3), variety (≥8 unique), valid cues only
Option 2: Manual Verification (Basic)
If you need a quick check without quality validators:
#!/bin/bash # verify_ready_for_scripts.sh date="YYYYMMDD" products="1729607303430380470 1729607478878640746 ..." # Your product IDs for pid in $products; do echo "=== $pid ===" # MANDATORY: Synthesis must exist if [ ! -f "product_list/$date/$pid/ref_video/video_synthesis.md" ]; then echo "❌ BLOCKED: video_synthesis.md missing" exit 1 fi lines=$(wc -l < "product_list/$date/$pid/ref_video/video_synthesis.md" | tr -d ' ') if [ "$lines" -lt 150 ]; then echo "❌ BLOCKED: synthesis only $lines lines (need 150+)" exit 1 fi # NEW: Quality validators (optional but recommended) echo "Checking quality standards..." python3 scripts/validate_bilingual_coverage.py "product_list/$date/$pid/ref_video/video_synthesis.md" || echo "⚠️ Bilingual coverage below standards" python3 scripts/validate_compliance_flags.py "product_list/$date/$pid/ref_video/video_synthesis.md" || echo "⚠️ Compliance issues found" echo "✅ Ready for scripts" done echo "" echo "=== ALL PRODUCTS READY FOR PHASE 3 ==="
Individual Validator Usage
Run validators individually for debugging:
# Bilingual coverage python3 scripts/validate_bilingual_coverage.py product_list/YYYYMMDD/{product_id}/ref_video/video_synthesis.md # Compliance flags python3 scripts/validate_compliance_flags.py product_list/YYYYMMDD/{product_id}/ref_video/video_synthesis.md # ElevenLabs cues (for scripts) python3 scripts/validate_elevenlabs_cues.py product_list/YYYYMMDD/{product_id}/scripts/Script_Name.md
Phase 3: Script Generation (BATCHED v2.3.0)
⚠️ CRITICAL FORMAT REQUIREMENT - ElevenLabs v3 Inline Cues:
- MANDATORY: Emotion cues MUST be inline:
[emotion] Text here. - FORBIDDEN: Broken lines format with cue on separate line from text
- WRONG:
followed by[frustrated]
on next line ❌Du kennst das? - CORRECT:
on same line ✅[frustrated] Du kennst das? - See
lines 285-311 for full format specificationtiktok_script_generator.md
Execute (Claude Code with batch Write calls):
For each product, Claude reads analysis files and writes ALL 4 FILES IN ONE MESSAGE:
- Hook/Challenge angleScript_1_[Angle].md
- Feature Demo angleScript_2_[Angle].md
- Social Proof angleScript_3_[Angle].md
- Executive summaryCampaign_Summary.md
CRITICAL OPTIMIZATION: Use 4 parallel Write tool calls in a single message:
[Read synthesis, image analysis, tabcut data] [Generate all 3 scripts + Campaign Summary] [Call Write tool 4 times in parallel in single message]
Performance:
- Old (sequential): 5-8 min per product (read → write → read → write → ...)
- New (batched): 2-3 min per product (read all → write all) ⭐ 2x faster
- 8 products: 16-24 min (was 40-50 min)
Output location:
product_list/YYYYMMDD/{product_id}/scripts/
Key rules:
- Claude writes ALL scripts (not Gemini)
- Read ALL analysis files in parallel (5+ Read calls at once)
- Write ALL 4 files in parallel (4 Write calls in one message)
- Campaign Summary references files (no duplication)
Retry / Stop Rules
- If the gate fails (missing files or below line thresholds), retry the failed stage once with the strict output contract prompts.
- If it fails again, mark that product as BLOCKED and continue to the next product (do not generate scripts with incomplete analysis).
Autonomous Batch Execution
To run the full workflow autonomously:
User prompt to Claude: "Run the e2e workflow for these products autonomously: - products.csv contains 8 product IDs - Don't pause for approval between phases - If something fails, retry once then skip and continue - Report failures at the end"
Claude will:
- Run Phase 1 (scraping) - wait for completion
- Run Phase 2A (video analysis) - parallel via Python (bash bg, 5 products max)
- Run Phase 2B+2C (image + synthesis) - SEQUENTIAL via Gemini MCP (per tiktok_product_analysis.md)
- Verify quality gate
- Run Phase 3 (scripts) - sequential with batched writes
- Report completion status
Time Estimates
Updated for v4.4.0 parallel video analysis + v2.3.0 batched scripts
| Phase | Single Product | 8 Products | Scaling Notes |
|---|---|---|---|
| 1. Scraping | 2-3 min | 5 min | Parallel across products |
| 2A. Video Analysis | 1.5-2 min | 4 min | v4.4.0: 5 products parallel (bash bg) ⭐ |
| 2B+2C. Image+Synthesis | ~3 min | ~24 min | PARALLEL 2B∥2C (v1.5.0 optimized) ⭐ |
| - Image (Gemini MCP) | 3 min | - | Parallel with Synthesis ∥ |
| - Synthesis (Gemini MCP) | 3 min | - | Parallel with Image ∥ |
| 3. Scripts | 2-3 min | 16-24 min | Batched Write calls ⭐ |
| Total | ~8-10 min | ~49-57 min | Optimized model |
Performance Notes
Phase 2A Video Analysis (8 products) - PARALLELIZED:
- Old (v4.3.0 sequential): 8 × 2 min = 16 min
- New (v4.4.0 parallel): Batch1(5): 2min + Batch2(3): 2min = 4 min
- Savings: ~12 minutes ⭐ 4x faster
Phase 2B+2C Image+Synthesis (8 products) - PARALLEL WITHIN PRODUCT ⭐:
- Optimized v1.5.0: Image and Synthesis run in parallel after videos complete
- Why it works: No dependency between image analysis and synthesis
- Time: 8 × max(3min, 3min) = ~24 min (was ~32 min sequential)
- Savings: ~8 minutes for 8 products (~1 min per product)
Phase 3 Scripts (8 products) - BATCHED:
- Old (sequential writes): 8 × 5 min = 40 min
- New (batched writes): 8 × 2.5 min = 20 min
- Savings: ~20 minutes ⭐ 2x faster
Total Workflow (Optimized v1.5.0):
- Phase 1: 5 min
- Phase 2A: 4 min (parallel video analysis)
- Phase 2B+2C: 24 min (parallel image + synthesis per product) ⭐
- Phase 3: 20 min (batched script writes)
- Total: ~53 min for 8 products (was ~61 min)
Pipeline Strategy (8 Products - PARALLELIZED)
Phase 2A: Video Analysis (Parallel batches of 5):
┌─────────────────────────────────────────────────────────────┐ │ BATCH 1 (5 products in parallel) - 2 minutes │ ├─────────────────────────────────────────────────────────────┤ │ Product 1: [Videos: 5 parallel Gemini calls] → 2 min │ │ Product 2: [Videos: 5 parallel Gemini calls] → 2 min │ │ Product 3: [Videos: 5 parallel Gemini calls] → 2 min │ All running │ Product 4: [Videos: 5 parallel Gemini calls] → 2 min │ simultaneously │ Product 5: [Videos: 5 parallel Gemini calls] → 2 min │ (max 5 threads) └─────────────────────────────────────────────────────────────┘ ↓ wait for completion ┌─────────────────────────────────────────────────────────────┐ │ BATCH 2 (3 products in parallel) - 2 minutes │ ├─────────────────────────────────────────────────────────────┤ │ Product 6: [Videos: 5 parallel Gemini calls] → 2 min │ │ Product 7: [Videos: 5 parallel Gemini calls] → 2 min │ Running │ Product 8: [Videos: 5 parallel Gemini calls] → 2 min │ simultaneously └─────────────────────────────────────────────────────────────┘ Total: ~4 min (was 16 min sequential) ⭐ 4x faster
Phase 2B+2C: Image + Synthesis (PARALLEL WITHIN PRODUCT ⭐ v1.5.0):
✅ OPTIMIZED: 2B and 2C run in parallel after 2A completes Product 1: [Videos: 5 parallel] → [Image ∥ Synthesis] → ~5 min Product 2: [Videos: 5 parallel] → [Image ∥ Synthesis] → ~5 min Product 3: [Videos: 5 parallel] → [Image ∥ Synthesis] → ~5 min ... Product 8: [Videos: 5 parallel] → [Image ∥ Synthesis] → ~5 min Total: ~40 min (was ~64 min sequential 2B→2C) ⭐ ~3 min savings per product
Why parallel 2B+2C works:
- Image analysis reads:
product_images/*.webp - Synthesis reads:
(from 2A)ref_video/video_*_analysis.md - No dependency between them → safe to run concurrently
- Uses only 2 of 5 available MCP slots (well within limits)
Phase 3: Scripts (Batched Write calls per product):
Product 1: [Read all files parallel] → [Write 4 files parallel] → 2.5 min Product 2: [Read all files parallel] → [Write 4 files parallel] → 2.5 min ... Product 8: [Read all files parallel] → [Write 4 files parallel] → 2.5 min Total: ~20 min (was 40 min) ⭐ 2x faster
Error Handling
| Error | Action |
|---|---|
| Scraping fails | Retry once, then skip product |
| No videos downloaded | Skip video analysis, continue with images |
| Video analysis fails | Retry with single video, mark incomplete |
| Image analysis fails | Continue without (not mandatory) |
| Synthesis fails | BLOCK - retry until success or manual intervention |
| Script generation fails | Retry, check for generic placeholders |
Resume Points
If workflow interrupted:
# Check current state ./check_workflow_status.sh products.csv # Resume from Phase 2 /workflow --batch products.csv --start-phase analysis # Resume from Phase 3 only /workflow --batch products.csv --start-phase scripts
Skill Dependency Map
tiktok_product_scraper.md (v2.0.0) │ Agent: Python script │ Output: tabcut_data.json, product_images/, ref_video/*.mp4 │ ├──────────────────────────────────────────────────┐ │ │ ▼ ▼ tiktok_ad_analysis.md (v4.4.0) tiktok_product_analysis.md (v1.0.0) │ Agent: Python + Gemini CLI │ Agent: Gemini MCP async │ Parallel: 5 products via bash bg │ Sequential: 1 product at a time │ Output: video_N_analysis.md │ Output: image_analysis.md │ │ └──────────────┬───────────────────────┘ │ ▼ tiktok_product_analysis.md (v1.0.0) │ Agent: Gemini MCP async │ Output: video_synthesis.md (CRITICAL) │ ▼ tiktok_script_generator.md (v2.3.0) │ Agent: Claude Code │ Batched: 4 Write calls per product │ Output: Script_1/2/3.md + Campaign_Summary.md
Agent Assignment Summary:
| Phase | Agent | Why |
|---|---|---|
| 1. Scraping | Python | Playwright automation |
| 2A. Video Analysis | Python + Gemini CLI | Bash background parallelism |
| 2B. Image Analysis | Gemini MCP async | Sequential, 5 task limit |
| 2C. Synthesis | Gemini MCP async | Sequential, 5 task limit |
| 3. Scripts | Claude Code | Better creative quality |
Example: Full Batch Run
User: Run e2e workflow for products.csv autonomously Claude: 1. Starting Phase 1: Scraping 8 products... ✅ 8/8 products scraped (5 min) 2. Starting Phase 2: Analysis (PARALLELIZED v4.4.0)... === Phase 2A: Video Analysis (Batch 1 - 5 products in parallel) === 🚀 Launching 5 parallel video analysis tasks... - Product 1: [Videos: 5 parallel Gemini calls] - Product 2: [Videos: 5 parallel Gemini calls] - Product 3: [Videos: 5 parallel Gemini calls] - Product 4: [Videos: 5 parallel Gemini calls] - Product 5: [Videos: 5 parallel Gemini calls] ⏳ Waiting for batch completion... ✅ Batch 1 complete (2 min) === Phase 2A: Video Analysis (Batch 2 - 3 products in parallel) === 🚀 Launching 3 parallel video analysis tasks... - Product 6: [Videos: 5 parallel Gemini calls] - Product 7: [Videos: 5 parallel Gemini calls] - Product 8: [Videos: 5 parallel Gemini calls] ⏳ Waiting for batch completion... ✅ Batch 2 complete (2 min) ✅ All 8 products - videos analyzed (4 min total, was 16 min) ⭐ 4x faster === Phase 2B+2C: Image Analysis + Synthesis (PARALLEL 2B∥2C - v1.5.0) === 📦 Product 1: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 2: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 3: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 4: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 5: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 6: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 7: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) 📦 Product 8: [Videos 5∥] → [Image ∥ Synthesis] ✅ (5 min) ✅ All 8 products analyzed (40 min total - 2B+2C parallel per product) ⭐ 3. Quality Gate... ✅ 8/8 products have valid synthesis files 4. Starting Phase 3: Script Generation (BATCHED v2.3.0)... - Product 1/8: [Read all] → [Write 4 files in parallel] ✅ (2.5 min) - Product 2/8: [Read all] → [Write 4 files in parallel] ✅ (2 min) - Product 3/8: [Read all] → [Write 4 files in parallel] ✅ (2.5 min) - Product 4/8: [Read all] → [Write 4 files in parallel] ✅ (3 min) - Product 5/8: [Read all] → [Write 4 files in parallel] ✅ (2 min) - Product 6/8: [Read all] → [Write 4 files in parallel] ✅ (2.5 min) - Product 7/8: [Read all] → [Write 4 files in parallel] ✅ (3 min) - Product 8/8: [Read all] → [Write 4 files in parallel] ✅ (2.5 min) ✅ All scripts generated (20 min, was 40 min) ⭐ 2x faster === WORKFLOW COMPLETE === Total time: ~61 minutes (corrected model per tiktok_product_analysis.md) Products processed: 8/8 Scripts generated: 24 (3 per product) Campaign summaries: 8 Performance Breakdown: - Phase 1 (Scraping): 5 min - Phase 2A (Videos): 4 min ⭐ (was 16 min - 4x faster via bash parallel batches) - Phase 2B+2C (Image+Synthesis): 24 min ⭐ (was 32 min - parallel 2B∥2C optimization) - Phase 3 (Scripts): 20 min ⭐ (was 40 min - 2x faster via batched writes) Ready for video production!
Version: 1.5.0 Last Updated: 2026-01-21 Changelog:
- v1.5.0 (2026-01-21): OPTIMIZED PHASE 2B+2C PARALLEL EXECUTION ⭐
- NEW: Image analysis and synthesis run in parallel after video analysis
- Why: No dependency between 2B (images) and 2C (synthesis from videos)
- Execution:
python analyze_product_images.py $pid & python create_video_synthesis.py $pid & wait - Performance: ~3 min savings per product (5 min vs 8 min)
- 8 products: ~53 min (was ~61 min) - saves ~8 minutes total
- Updated all workflow diagrams, time tables, and execution examples
- MCP slot usage: Only 2 of 5 slots for 2B+2C (safe and efficient)
- v1.4.0 (2026-01-20): ALIGNED WITH UNDERLYING SKILLS
- CORRECTED: Phase 2B+2C uses Gemini MCP async (NOT Claude)
- Aligned with tiktok_product_analysis.md v1.0.0 concurrency constraints
- Phase 2A (videos): Parallel via bash bg
- Updated pipeline diagrams to show correct execution model
- v1.3.0 (2026-01-18): Parallel video analysis + batched scripts
- Parallel video analysis across products (5 Gemini CLI threads max)
- Batched script generation (4 Write calls per product in one message)
- Phase 2A: 4 min (was 16 min) via parallel batches of 5 products
- Phase 3: 20 min (was 40 min) via batched Write tool calls
- v1.2.0 (2026-01-07): Parallel image+synthesis execution (NOTE: was incorrect)
- v1.1.0 (2026-01-07): Updated for v4.3.0 video analysis optimizations
- 3-5x faster video analysis (Python async + ThreadPoolExecutor)
- Clarified that video analysis uses Python async, not MCP slots
- v1.0.0 (2026-01-01): Initial e2e workflow documentation