lazier

personal summarizer
Log | Files | Refs | README

commit 9abad15cca8f91bb24f981ec53aef828cd6dab8d
parent f03ce8665e55aa997acd082b4d50d08e7238362e
Author: Pablo Murad <pblmrd@gmail.com>
Date:   Sat, 24 Jan 2026 21:58:01 -0300

fix readme.md

Diffstat:
MREADME.md | 328+++++++++++--------------------------------------------------------------------
1 file changed, 44 insertions(+), 284 deletions(-)

diff --git a/README.md b/README.md @@ -4,346 +4,106 @@ Sistema CLI e WebGUI para transcrição e sumarização de áudios/vídeos/texto **Versão 0.01** - Desenvolvido por Pablo Murad (pablomurad@pm.me) -## Descrição +## Instalação Rápida -Lazier é uma plataforma completa que permite: -- Transcrever arquivos de áudio locais (mp3, wav, m4a, etc.) -- Transcrever arquivos de vídeo locais (mp4, avi, mkv, etc.) -- Baixar e transcrever vídeos do YouTube (incluindo playlists) -- Sumarizar textos, PDFs e páginas web -- Upload de arquivos via interface web -- Cache inteligente com Redis -- Múltiplos formatos de saída (DOCX, TXT, Markdown, JSON) +### Docker (Recomendado) -Todas as transcrições e sumários são gerados em **português do Brasil** usando a API da OpenAI. - -## Requisitos - -- Python 3.8 ou superior -- Docker e Docker Compose (para uso em container) -- Chave da API OpenAI (obtenha em https://platform.openai.com/api-keys) - -**Nota:** ffmpeg e yt-dlp são instalados automaticamente no container Docker. - -## Instalação - -### Opção 1: Docker (Recomendado) - -1. Clone o repositório: ```bash +# 1. Clone o repositório git clone <repo-url> cd listener -``` -2. Configure a chave da API: -```bash -# Crie arquivo .env na raiz +# 2. Configure a chave da API echo "OPENAI_API_KEY=sua_chave_aqui" > .env -``` -3. Inicie os serviços: -```bash +# 3. Inicie os serviços cd docker docker compose up -d ``` -4. Acesse a interface web em: http://localhost:19283 - -**Nota:** Os arquivos gerados são salvos diretamente na pasta `outputs/` na raiz do projeto. Você pode acessá-los diretamente sem precisar copiar do container. +Acesse: **http://localhost:19283** -### Opção 2: Instalação Local +Arquivos gerados são salvos em `outputs/` na raiz do projeto. -1. Clone o repositório -2. Instale as dependências: +### Instalação Local ```bash pip install -r requirements.txt -``` - -Ou instale o pacote em modo desenvolvimento: - -```bash -pip install -e . -``` - -3. Configure sua chave da API OpenAI: - -Crie um arquivo `.env` na raiz do projeto: - -```bash -OPENAI_API_KEY=sua_chave_aqui -REDIS_HOST=localhost -REDIS_PORT=6379 -``` - -4. Inicie Redis (necessário para cache): -```bash -# Docker -docker run -d -p 6379:6379 redis:7-alpine - -# Ou instale Redis localmente +echo "OPENAI_API_KEY=sua_chave_aqui" > .env +docker run -d -p 6379:6379 redis:7-alpine # Redis para cache +lazier web ``` ## Uso ### CLI -#### Comando Principal - -O comando principal transcreve e sumariza automaticamente: - ```bash -lazier <arquivo|url> [opções] -``` - -**Exemplos:** - -```bash -# Transcrever e sumarizar arquivo de áudio local +# Transcrever e sumarizar lazier audio.mp3 - -# Transcrever e sumarizar vídeo local lazier video.mp4 - -# Processar PDF lazier document.pdf - -# Transcrever e sumarizar vídeo do YouTube lazier "https://www.youtube.com/watch?v=VIDEO_ID" -# Especificar formato de saída -lazier audio.mp3 --format json - -# Apenas transcrição (sem sumário) -lazier transcribe video.mp4 - -# Processar playlist do YouTube -lazier "https://www.youtube.com/playlist?list=PLAYLIST_ID" +# Opções +lazier audio.mp3 --format json # Formato: docx, txt, md, json +lazier transcribe video.mp4 # Apenas transcrição +lazier web # Inicia servidor web +lazier cache clear # Limpa cache ``` -#### Subcomandos - -- `lazier transcribe <arquivo|url>` - Apenas transcrição -- `lazier web` - Inicia servidor web na porta 19283 -- `lazier cache clear` - Limpa cache Redis -- `lazier cache stats` - Mostra estatísticas do cache - -#### Opções - -- `--output, -o`: Nome do arquivo de saída (padrão: baseado no input) -- `--format, -f`: Formato de saída - docx, txt, md, json (padrão: docx) -- `--language, -l`: Idioma para transcrição (padrão: pt) -- `--model`: Modelo Whisper (padrão: whisper-1) -- `--gpt-model`: Modelo GPT para sumarização (padrão: gpt-4o-mini) -- `--keep-files`: Não deletar arquivos temporários após processamento -- `--only-audio`: Processar apenas áudio (para vídeos) - ### WebGUI -Inicie o servidor web: +Acesse http://localhost:19283 após iniciar com `lazier web` ou Docker. -```bash -lazier web -``` - -Ou com opções: - -```bash -lazier web --port 19283 --host 0.0.0.0 -``` - -Acesse http://localhost:19283 no navegador. - -**Funcionalidades da WebGUI:** -- Upload de múltiplos arquivos (drag & drop) +**Funcionalidades:** +- Upload de arquivos (drag & drop) - Processamento de URLs (YouTube, páginas web) -- Visualização de progresso em tempo real -- Download de resultados em múltiplos formatos +- Progresso em tempo real +- Download em múltiplos formatos - Histórico de processamentos ## Formatos Suportados -**Áudio:** mp3, wav, m4a, aac, flac, ogg, opus, wma - -**Vídeo:** mp4, avi, mkv, mov, wmv, flv, webm, m4v - -**Documentos:** pdf, txt, md, html - -**YouTube:** Qualquer URL do YouTube (vídeos e playlists) - -**Web:** URLs de páginas web (extração automática de conteúdo) - -## Fluxo de Processamento - -### Para Arquivos Locais (Áudio/Vídeo): - -1. Validação do arquivo -2. Verificação de cache Redis -3. Se vídeo → extração de áudio com ffmpeg -4. Transcrição com OpenAI Whisper API (pt-BR) -5. Sumarização com OpenAI GPT (pt-BR) -6. Geração do arquivo no formato solicitado -7. Limpeza de arquivos temporários - -### Para PDFs/Textos: - -1. Validação do arquivo -2. Verificação de cache Redis -3. Extração de conteúdo (PDF ou texto direto) -4. Sumarização com OpenAI GPT (pt-BR) -5. Geração do arquivo no formato solicitado - -### Para URLs do YouTube: - -1. Validação da URL -2. Verificação de cache Redis -3. Download do melhor áudio disponível com yt-dlp -4. Transcrição com OpenAI Whisper API (pt-BR) -5. Sumarização com OpenAI GPT (pt-BR) -6. Geração do arquivo no formato solicitado -7. **Sempre deleta** o arquivo baixado (limpeza automática) - -### Para Playlists do YouTube: - -1. Detecção de playlist -2. Extração da lista de vídeos -3. Processamento sequencial de cada vídeo -4. Consolidação de resultados - -### Para Páginas Web: - -1. Validação da URL -2. Verificação de cache Redis -3. Extração de conteúdo da página -4. Sumarização com OpenAI GPT (pt-BR) -5. Geração do arquivo no formato solicitado - -## Cache Redis - -O Lazier usa Redis para cache inteligente: -- **Transcrições**: Cacheadas por hash do arquivo -- **Sumários**: Cacheados por hash do texto -- **Metadados YouTube**: Cacheados por video_id -- **Conteúdo Web/PDF**: Cacheado por hash da URL/arquivo - -**TTL padrão:** 7 dias - -**Comandos de cache:** -```bash -lazier cache clear # Limpa todo o cache -lazier cache stats # Mostra estatísticas -``` +- **Áudio:** mp3, wav, m4a, aac, flac, ogg, opus, wma +- **Vídeo:** mp4, avi, mkv, mov, wmv, flv, webm, m4v +- **Documentos:** pdf, txt, md, html +- **YouTube:** Vídeos e playlists +- **Web:** Páginas web (extração automática) ## Docker -### Estrutura - -O projeto inclui Docker Compose com: -- **lazier**: Aplicação principal (porta 19283) -- **redis**: Cache Redis (porta 6379) - -### Comandos Docker - ```bash -# Iniciar todos os serviços cd docker -docker compose up -d - -# Ver logs -docker compose logs -f lazier -docker compose logs -f redis - -# Parar serviços -docker compose down - -# Rebuild -docker compose build --no-cache - -# Limpar volumes (remove todos os dados, exceto outputs que está no host) -docker compose down -v - -# Acessar arquivos gerados (agora estão diretamente na pasta outputs/ do projeto) -ls outputs/ -# ou no Windows: -dir outputs\ +docker compose up -d # Iniciar +docker compose logs -f # Ver logs +docker compose down # Parar +docker compose down -v # Parar e limpar volumes ``` -**Nota:** Os arquivos gerados são salvos diretamente na pasta `outputs/` na raiz do projeto. Apenas cache, uploads e dados temporários ficam em volumes Docker nomeados. - -### Variáveis de Ambiente +## Cache Redis -Crie um arquivo `.env` na raiz: +Cache automático de transcrições e sumários (TTL: 7 dias). ```bash -OPENAI_API_KEY=sua_chave_aqui +lazier cache clear # Limpar cache +lazier cache stats # Estatísticas ``` -## Estrutura do Projeto - -``` -listener/ -├── lazier/ # Módulo principal -│ ├── api/ # API FastAPI -│ ├── web/ # Frontend web -│ ├── core/ # Lógica de negócio -│ └── ... # Módulos existentes -├── docker/ # Arquivos Docker -│ ├── Dockerfile -│ └── docker-compose.yml -├── data/ # Dados persistentes -├── cache/ # Cache local (backup) -├── uploads/ # Uploads temporários -├── outputs/ # Arquivos gerados -└── ... -``` +## Requisitos -## Limitações +- Python 3.8+ +- Docker e Docker Compose (recomendado) +- Chave da API OpenAI: https://platform.openai.com/api-keys +- Redis (opcional, para cache) -- Arquivos de áudio maiores que 25MB precisam ser divididos (limite da API Whisper) -- Requer conexão com internet para usar APIs da OpenAI -- Vídeos do YouTube são sempre deletados após processamento (use `--keep-files` para manter temporários locais) -- Upload máximo: 500MB por arquivo (configurável) +**Nota:** ffmpeg e yt-dlp são instalados automaticamente no container Docker. ## Troubleshooting -### Erro: "OPENAI_API_KEY não encontrada" - -Configure a variável de ambiente ou crie um arquivo `.env` com sua chave da API. - -### Erro: "Redis não disponível" - -O cache é opcional. Se Redis não estiver disponível, o sistema funcionará sem cache. Para usar cache, inicie Redis: - -```bash -docker run -d -p 6379:6379 redis:7-alpine -``` - -### Erro: "Arquivo muito grande" - -A API Whisper tem limite de 25MB por arquivo. Considere dividir arquivos grandes ou usar um formato de áudio mais compacto. - -### Erro no Docker: "ffmpeg não encontrado" - -O Dockerfile instala ffmpeg automaticamente. Se houver problemas, verifique o build do container. - -## Desenvolvimento - -Para desenvolver ou contribuir: - -```bash -# Instalar em modo desenvolvimento -pip install -e . - -# Executar servidor web localmente -lazier web - -# Executar testes (quando implementados) -pytest tests/ -``` - -## Licença - -Este projeto é desenvolvido por Pablo Murad. Versão 0.01. +- **"OPENAI_API_KEY não encontrada"**: Crie arquivo `.env` com `OPENAI_API_KEY=sua_chave` +- **"Redis não disponível"**: Sistema funciona sem cache. Para cache: `docker run -d -p 6379:6379 redis:7-alpine` +- **Arquivo muito grande**: API Whisper tem limite de 25MB. Divida arquivos grandes. ## Contato