TubeTalk é um aplicativo web baseado em Python que permite aos usuários analisar vídeos do YouTube, extraindo transcrições e metadados, gerando resumos, tópicos-chave e artigos completos com o auxílio de modelos de linguagem avançados (LLMs). A interface, construída com Streamlit, oferece uma experiência interativa com visualização de metadados, análises e um chat contextual para perguntas relacionadas ao vídeo.
Desenvolvido por Wellington M. Santos.
- Extração de Dados do YouTube: Obtém transcrições e metadados (título, autor, canal, data de publicação, visualizações, duração, etc.) de vídeos do YouTube usando
youtube_transcript_apieyt_dlp. - Processamento com LLMs: Gera resumos, extrai tópicos-chave e cria artigos baseados em transcrições, utilizando provedores como OpenAI, Groq, Ollama e HuggingFace.
- Interface Interativa: Interface web com Streamlit que exibe metadados, análises (resumo, tópicos, artigo) e permite interação via chat com contexto do vídeo.
- Configuração Flexível: Suporta múltiplos provedores de LLM com configuração de modelo, temperatura e número máximo de tokens.
- Exportação de Resultados: Permite baixar resumos, tópicos e artigos em formatos
.txte.md.
O projeto é composto por três módulos principais:
youtube_service.py: Extrai transcrições e metadados de vídeos do YouTube.llm_service.py: Processa transcrições usando LLMs para gerar resumos, tópicos e artigos.ui.py: Interface de usuário web com Streamlit, integrando os serviços acima.
-
Python 3.8 ou superior
-
Gerenciador de pacotes uv (para gerenciamento de dependências via
pyproject.toml).Nota: O uv é um gerenciador de dependências ultrarrápido para Python, compatível com arquivos
pyproject.toml. Ele foi escolhido por sua velocidade e simplicidade em relação a alternativas comopipoupoetry, facilitando a instalação e sincronização de dependências em projetos modernos. -
Dependências especificadas em
pyproject.toml, incluindo:streamlityoutube_transcript_apiyt_dlppython-dotenvlangchainlangchain-communitylangchain-openailangchain-groq
-
Clone o repositório:
git clone https://github.com/esscova/tubetalk.git cd tubetalk -
Instale o uv (se ainda não estiver instalado):
pip install uv
-
Crie um ambiente virtual com uv:
uv venv source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows
-
Sincronize as dependências com uv:
uv sync
Isso instalará todas as dependências listadas no arquivo
pyproject.toml. -
Configure as chaves de API: Crie um arquivo
.envna raiz do projeto com as chaves de API necessárias:OPENAI_API_KEY=your-openai-key GROQ_API_KEY=your-groq-key HUGGINGFACEHUB_API_TOKEN=your-huggingface-keyObservação: Ollama não requer chave de API, mas deve estar em execução localmente.
-
Configure os templates de prompt (se necessário): Certifique-se de que o módulo
configs.promptscontém os templatesSUMMARY_PROMPT_TEMPLATE,TOPICS_PROMPT_TEMPLATEeARTICLE_PROMPT_TEMPLATE. Exemplo:# configs/prompts.py SUMMARY_PROMPT_TEMPLATE = "Resuma o seguinte texto em 3-5 frases: {transcript}" TOPICS_PROMPT_TEMPLATE = "Extraia os tópicos principais do texto: {transcript}" ARTICLE_PROMPT_TEMPLATE = "Escreva um artigo com base no texto: {transcript}"
-
Execute o aplicativo:
streamlit run ./src/main.py
-
Acesse a interface:
- Abra o navegador no endereço fornecido (geralmente
http://localhost:8501). - Insira uma URL de vídeo do YouTube (ex.:
https://www.youtube.com/watch?v=Sm5jALppTLE). - Configure o provedor de LLM, modelo, chave de API (se necessário), temperatura e máximo de tokens na barra lateral.
- Clique em Analisar Vídeo para extrair metadados e gerar análises.
- Abra o navegador no endereço fornecido (geralmente
-
Funcionalidades da interface:
- Metadados: Visualize título, canal, autor, data, visualizações e duração.
- Abas de análise:
- Summary: Exibe o resumo do vídeo com opção de download (
.txt). - Topics: Lista os tópicos principais com opção de download (
.txt). - Article: Mostra o artigo gerado com opção de download (
.md). - Chat: Permite perguntas contextuais sobre o vídeo (título, descrição, tags, resumo, transcrição).
- Summary: Exibe o resumo do vídeo com opção de download (
- Analisar Outro Vídeo: Redefine a interface para processar um novo vídeo.
from ui import UI
# Inicializa e executa a interface
ui = UI()
ui.run()Na interface:
- Insira a URL:
https://www.youtube.com/watch?v=Sm5jALppTLE. - Escolha o provedor (ex.:
groq), modelo (ex.:llama-3.3-70b-versatile) e insira a chave de API. - Clique em Analisar Vídeo.
- Navegue pelas abas para visualizar resumo, tópicos e artigo.
- Use a aba Chat para fazer perguntas como: "Qual é o tema principal do vídeo?".
- OpenAI: Requer chave de API (
OPENAI_API_KEY). Modelo padrão:gpt-3.5-turbo. - Groq: Requer chave de API (
GROQ_API_KEY). Modelo padrão:llama-3.3-70b-versatile. - HuggingFace: Requer chave de API (
HUGGINGFACEHUB_API_TOKEN). Modelo padrão:mistralai/Mistral-7B-Instruct-v0.1. - Ollama: Não requer chave de API, mas precisa estar em execução localmente. Modelo padrão:
llama2.
Teste a configuração do LLM na barra lateral antes de analisar vídeos.
- YouTube:
- Depende da disponibilidade da API de transcrições do YouTube.
- Vídeos privados ou com restrições de idade/região podem não ser processados.
- LLMs:
- Requer chaves de API válidas para OpenAI, Groq e HuggingFace.
- O desempenho depende do modelo e provedor selecionados.
- Interface:
- Suporta apenas um vídeo por sessão.
- O chat usa apenas os primeiros 800 caracteres da transcrição para contexto.
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do repositório.
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade). - Commit suas alterações (
git commit -m 'Adiciona nova funcionalidade'). - Envie para o repositório remoto (
git push origin feature/nova-funcionalidade). - Abra um Pull Request.
Este projeto está licenciado sob a MIT License.
Desenvolvido por Wellington M. Santos. Para dúvidas ou sugestões, abra uma issue no repositório ou entre em contato via LinkedIn.
