First use-case

Demo Factory

Playwright records OpenChat → ElevenLabs speaks the thesis → Blotato posts 3 videos per day on X and Instagram.

Pipeline

  1. Plan — 3 scripts (thesis / library / live data chat)
  2. Record — Playwright Chromium walkthrough of /chat, /library, /docs
  3. Voice — ElevenLabs TTS per slot → voiceover.mp3
  4. Publish — Blotato schedules each video to x + instagram at 10:00 / 14:00 / 18:00 (6 posts/day)

Env

BLOTATO_API_KEY=
ELEVENLABS_API_KEY=
ELEVENLABS_VOICE_ID=          # optional
OPENCHAT_DEMO_BASE_URL=http://127.0.0.1:3000
ALLOW_DEMO_PIPELINE_ANON=1    # local API without login

Install Playwright for real video:

pnpm add -D playwright
pnpm exec playwright install chromium

Run

# Dry-run (no keys): writes plans + schedule JSON
curl -X POST http://127.0.0.1:3000/api/openchat/demo-pipeline \
  -H 'Content-Type: application/json' \
  -d '{"skipRecord":true}'

# Artifacts → data/lake/tmp/demos/YYYY-MM-DD/

Open code

  • lib/openchat/connectors/playwright.ts
  • lib/openchat/connectors/elevenlabs.ts
  • lib/openchat/connectors/blotato.ts
  • lib/openchat/pipelines/demo-daily.ts
  • lib/openchat/templates/openchat-demo-daily.ts

← Technical thesis

Demo Factory — Playwright + ElevenLabs + Blotato | OpenChat-1