Przejdź do treści

~/projekty / screencaster

Screencaster

Piszesz skrypt w YAML, uruchamiasz jedno polecenie i dostajesz film MP4 z lektorem, pokazujący działanie strony. Render działa w Dockerze z Playwrightem, offline'owym głosem Piper i ffmpeg; serwer MCP pozwala tworzyć dema z poziomu Claude Code.

rola
projekt i implementacja: CLI w Go, serwer MCP, potok renderowania
czas
paź 2026
typ
własny
stack
Go · Playwright · Piper TTS · ffmpeg · SQLite · MCP · Docker
demo.mp4

01 / problem

Filmy demo nigdy nie powstają

Nagranie, lektor i montaż robione ręcznie kosztują zbyt wiele, więc notatki do wydań ukazują się bez wideo. Każda zmiana w interfejsie oznaczałaby nagrywanie od nowa.

02 / rozwiązanie

Demo to skrypt, a nie nagranie

Demo opisuje się zwykłym językiem, Claude Code zapisuje je jako skrypt YAML, a CLI albo serwer MCP go renderuje. Playwright wykonuje kroki w przeglądarce, lokalny głos Piper czyta narrację w chwili rozpoczęcia akcji, a ffmpeg składa MP4. Render nie wywołuje LLM, więc ten sam skrypt zawsze odtwarza to samo demo, a zmiana w interfejsie oznacza poprawkę jednego kroku i ponowny render.

  • Skrypt YAML wpisywany w terminalu: jeden krok na akcję, z opcjonalną narracją

    Skrypt YAML wpisywany w terminalu: jeden krok na akcję, z opcjonalną narracją

  • Jedno polecenie renderuje całość: narracja, nagranie i montaż krok po kroku

    Jedno polecenie renderuje całość: narracja, nagranie i montaż krok po kroku

03 / architektura

Jak to działa

Jeden moduł Go z warstwową strukturą internal/: czyste reguły domenowe, przypadki użycia za portami i jeden adapter na każde zewnętrzne narzędzie (Playwright, Piper, ffmpeg, SQLite, MCP). CLI screencaster i serwer MCP współdzielą ten sam potok renderowania, a całość działa w jednym obrazie Dockera.

04 / wyniki

Efekt

05 / wnioski

Czego się nauczyłem

  • Brak wywołań LLM przy renderowaniu sprawia, że demo jest artefaktem do odtworzenia: ten sam skrypt, te same kroki, ten sam czas.
  • Jeden proces i jeden plik SQLite wystarczają narzędziu, z którego korzysta jeden programista, więc projekt pomija kwestie skalowania.