Sistema CLI e Web para transcrição e sumarização de áudios, vídeos, textos e PDFs usando OpenAI (Whisper + GPT). Suporta upload de arquivos, URLs do YouTube e de centenas de outros sites (via yt-dlp), e páginas web. Exporta em DOCX, TXT, Markdown, JSON e PDF.
- OpenAI API Key (Whisper para transcrição, GPT para sumário)
- Redis (opcional, para cache de transcrições/sumários)
- ffmpeg e yt-dlp (instalados automaticamente no Docker; em instalação local, instale manualmente)
Copie o exemplo e preencha:
cp .env.example .env| Variável | Obrigatório | Descrição |
|---|---|---|
OPENAI_API_KEY |
Sim | Chave da API OpenAI (obter aqui) |
SESSION_SECRET_KEY |
Sim (Web) | Chave para sessões. Gere com: openssl rand -hex 32 |
ADMIN_USER / ADMIN_PASSWORD |
Não | Usuário admin da WebGUI (criado na primeira execução se definidos) |
Opcional: YOUTUBE_PO_TOKEN para melhor suporte a alguns vídeos do YouTube (guia).
Segredos: nunca commite ficheiros .env com valores reais, chaves API ou passwords. Mantenha apenas .env.example no Git; use variáveis de ambiente no host ou secrets do CI/CD (GitHub Actions, etc.).
# 1. Clone o repositório
git clone <repo-url>
cd lazier
# 2. Configure o .env (OPENAI_API_KEY, SESSION_SECRET_KEY e opcionalmente ADMIN_USER/ADMIN_PASSWORD)
cp .env.example .env
# Edite .env com suas chaves
# 3. Inicie os serviços (a partir da pasta do projeto)
docker compose -f docker/docker-compose.yml up -d --buildOu, a partir da pasta docker/:
cd docker
docker compose up -d --buildAcesse: http://localhost:19283
Arquivos gerados são salvos em outputs/ na raiz do projeto.
pip install -r requirements.txt
cp .env.example .env
# Preencha OPENAI_API_KEY e SESSION_SECRET_KEY no .env
# Redis (opcional, para cache)
docker run -d -p 52847:6379 redis:7-alpine
lazier webAcesse http://localhost:19283 (ou use --port para outra porta).
# Transcrever e sumarizar
lazier audio.mp3
lazier video.mp4
lazier document.pdf
lazier "https://www.youtube.com/watch?v=VIDEO_ID"
# Opções
lazier audio.mp3 --format json # Formato: docx, txt, md, json, pdf
lazier transcribe video.mp4 # Apenas transcrição
lazier web # Inicia servidor web
lazier cache clear # Limpa cacheAcesse http://localhost:19283 após iniciar com lazier web ou Docker. Na primeira vez, faça login com o usuário e senha definidos em ADMIN_USER e ADMIN_PASSWORD no .env (se configurados).
Além do YouTube, você pode colar URLs de vídeo ou áudio de centenas de sites. O Lazier usa o yt-dlp para extrair o áudio; se a URL não for um vídeo, o sistema tenta extrair o texto da página e sumarizar.
Exemplos de sites que você pode processar:
| YouTube | TED | |
| Vimeo | Twitter / X | TikTok |
| Twitch | ||
| Dailymotion | BBC, CNN, NBC | NPR, PBS |
| Arte, France TV, RTVE | Khan Academy | Coursera, Udemy |
| LinkedIn Learning | Loom | Streamable |
| BitChute, Odysee | Rumble | PeerTube |
| archive.org | Patreon | Substack |
| Wistia | Niconico | Bilibili |
| Kick, Floatplane | Nebula | CuriosityStream |
| C-SPAN | Al Jazeera | DW, Reuters |
| ESPN, Fox Sports | Formula 1 | Olympics |
| NYTimes | Washington Post | The Guardian |
E muitos outros. Lista completa mantida pelo yt-dlp: Supported sites.
Importante: Conteúdo detectado como música (ex.: categoria Music no YouTube, domínios só de música) não é processado pelo Lazier.
# A partir da raiz do projeto
docker compose -f docker/docker-compose.yml up -d --build # Iniciar (com rebuild)
docker compose -f docker/docker-compose.yml logs -f # Ver logs
docker compose -f docker/docker-compose.yml down # Parar
docker compose -f docker/docker-compose.yml down -v # Parar e limpar volumesOu entre na pasta docker/ e use docker compose up -d (sem o -f).
Cache automático de transcrições e sumários (TTL: 7 dias).
lazier cache clear # Limpar cache
lazier cache stats # EstatísticasNota: ffmpeg e yt-dlp são instalados automaticamente no container Docker.
- "OPENAI_API_KEY não encontrada": Crie/edite o
.envcomOPENAI_API_KEY=sua_chave - "SESSION_SECRET_KEY não configurada": Necessária para a WebGUI. Gere com
openssl rand -hex 32e adicione ao.env - "Redis não disponível": O sistema funciona sem cache. Para usar cache:
docker run -d -p 52847:6379 redis:7-alpine(no host useREDIS_PORT=52847no.envse conectar ao Redis local) - Arquivo muito grande: A API Whisper tem limite de 25 MB. Divida arquivos grandes ou use a divisão automática do Lazier
- Conteúdo detectado como música: URLs de música (ex.: categoria Music no YouTube) não são processadas; use apenas vídeos/podcasts
Antes de tornar o repositório público no GitHub:
- Secret scanning — Em Settings → Code security and analysis, ative Secret scanning (e, se disponível, push protection) para alertas sobre segredos no código.
- Rever o histórico — Com o remoto atualizado (
git fetch --all), confirme que nunca houve.envou chaves no histórico, por exemplo:git log --all --full-history -p -- .envgit log --all -S "sk-" --oneline -- "*.py" "*.md"
- Se algum segredo já foi commitado — Revogue ou regenere imediatamente essa chave na respetiva plataforma (OpenAI, etc.). Limpar o ficheiro no último commit não remove o segredo do histórico; use ferramentas como
git-filter-repoou BFG Repo-Cleaner e faça force push com consciência do impacto em colaboradores.
Pablo Murad - pablomurad@pm.me