| .claude | ||
| VideoStudy.API | ||
| VideoStudy.Desktop | ||
| VideoStudy.Native | ||
| VideoStudy.Shared | ||
| VideoStudy.UI | ||
| .gitignore | ||
| COMO_RODAR.md | ||
| confuser.xml | ||
| CORRECOES_REALIZADAS.md | ||
| DEPLOYMENT.md | ||
| ESTRUCTURA.txt | ||
| FASE1_RESPOSTAS.md | ||
| GEMINI.md | ||
| README.md | ||
| REFERENCES.md | ||
| SETUP.md | ||
| SUMMARY.txt | ||
| TROUBLESHOOT.md | ||
| VideoStudy.pdf | ||
| VideoStudy.sln | ||
| yt-dlp.exe | ||
VideoStudy.app - FASE 1 ✅
Plataforma de análise de vídeos do YouTube usando Inteligência Artificial com Semantic Kernel.
📋 Estrutura do Projeto
VideoStudy.app/
├── VideoStudy.API/ # ASP.NET Core Web API (Semantic Kernel)
├── VideoStudy.Desktop/ # Blazor Hybrid Desktop Application
│ ├── VideoStudy.Desktop/ # Server project
│ └── VideoStudy.Desktop.Client/ # Client project
├── VideoStudy.Shared/ # Shared models and interfaces
├── Tests/ # Test projects
├── REFERENCES.md # Análise de referências
└── README.md # Este arquivo
🚀 Quick Start
Pré-requisitos
- .NET 8.0 SDK ou superior
- Visual Studio 2022 / VS Code (opcional)
1. Clonar/Abrir Projeto
cd /mnt/c/vscode/VideoStudy.app
2. Restaurar Dependências
dotnet restore
3. Executar a API
Opção A: Com Ollama (Local, Grátis)
Certifique-se que Ollama está rodando em http://localhost:11434
cd VideoStudy.API
dotnet run
A API estará disponível em: http://localhost:5000
Opção B: Com Groq (Cloud, Grátis)
- Crie conta em https://console.groq.com
- Gere API Key
- Configure em
VideoStudy.API/appsettings.json:
"LlmSettings": {
"Provider": "Groq",
"ModelId": "llama-3.1-8b-instant",
"Endpoint": "https://api.groq.com/openai/v1",
"ApiKey": "your-groq-api-key"
}
cd VideoStudy.API
dotnet run
4. Executar Desktop App (em outro terminal)
cd VideoStudy.Desktop/VideoStudy.Desktop
dotnet run
A aplicação estará disponível em: http://localhost:5001
📡 Endpoints da API
Health Check
GET /health
Resposta:
{
"status": "ok",
"timestamp": "2026-02-06T10:00:00Z"
}
Analisar Vídeo
POST /api/analyze
Content-Type: application/json
{
"videoUrl": "https://www.youtube.com/watch?v=...",
"language": "en",
"mode": "fast"
}
Resposta:
{
"videoTitle": "Video Title",
"transcript": "Topics covered...",
"analysis": "Detailed analysis...",
"keyMoments": [
{
"timestamp": "00:00:30",
"description": "Key moment description",
"startSeconds": 30
}
],
"status": "success",
"errorMessage": null
}
🏗️ Arquitetura
VideoStudy.Shared
Modelos compartilhados entre API e Desktop:
AnalysisRequest- Entrada do usuárioAnalysisResponse- Resposta da análiseKeyMoment- Momento importante no vídeoProgressUpdate- Atualização de progresso
VideoStudy.API
- Framework: ASP.NET Core 8.0
- AI Integration: Semantic Kernel 1.70.0
- LLM Providers:
- Groq (padrão)
- Ollama (local)
- OpenAI (opcional)
- CORS: Habilitado para todas as origens (desenvolvimento)
VideoStudy.Desktop
- Framework: Blazor Hybrid
- UI: Bootstrap 5 + Razor Components
- Comunicação: HttpClient para chamadas à API
- Recursos:
- URL input para vídeos do YouTube
- Seleção de idioma
- Modo Fast/Advanced
- Barra de progresso
- Debug logs
- Tratamento de erros
🔧 Configuração Avançada
Mudar LLM Provider
Edite VideoStudy.API/Program.cs (linhas 21-37):
Para Ollama:
builder.Services.AddOllamaChatCompletion(
"llama2",
new Uri("http://localhost:11434")
);
Para OpenAI GPT-4:
builder.Services.AddOpenAIChatCompletion(
"gpt-4o-mini",
"sk-proj-your-key"
);
Para Google Gemini:
builder.Services.AddGoogleAIGeminiChatCompletion(
"gemini-1.5-flash-latest",
"your-google-api-key"
);
Build para Produção
dotnet build -c Release
dotnet publish -c Release -o ./publish
📊 FASE 2 - Status
✅ Concluído:
- Download de vídeos do YouTube (YoutubeExplode)
- Extração de legendas (Modo Rápido)
- Transcrição com Whisper.NET (Modo Avançado)
- Extração de screenshots (FFmpeg)
- Fluxo completo: URL → Transcrição → Análise IA → Screenshots
- Progress reporting em tempo real
❌ Não incluído (FASE 3):
- Geração de PDF
- UI refinada (Design System)
- Persistência (MongoDB)
- Autenticação
🔧 Requisitos Externos (Fase 2)
FFmpeg
Para que o "Modo Avançado" (Whisper e Screenshots) funcione, o FFmpeg deve estar instalado e acessível no PATH do sistema.
Linux (Ubuntu/Debian):
sudo apt update && sudo apt install ffmpeg
Windows:
Baixe em ffmpeg.org e adicione a pasta bin às Variáveis de Ambiente.
Whisper Model
O modelo de IA (base) será baixado automaticamente na primeira execução para a pasta VideoStudy.Desktop/bin/Debug/net8.0/models/.
🔄 FASE 3 - Próximos Passos
Será implementado:
- YouTubeService (YoutubeExplode)
- TranscriptionService (Whisper.NET)
- ScreenshotService (FFmpeg)
- Modos: Fast (legendas) e Advanced (Whisper)
- Progress reporting em tempo real
- Tratamento robusto de erros
📝 Notas
- A API tem CORS habilitado para todos os domínios (alterar para produção!)
- Sem autenticação no momento (adicionar em FASE 3)
- LLM provider deve estar ativo antes de iniciar (Ollama ou Groq)
- Desktop aguarda API em
http://localhost:5000(configurável)
🐛 Troubleshooting
Erro: "Unable to connect to API"
- Verifique se a API está rodando:
dotnet runemVideoStudy.API - Confirme que porta 5000 está livre
- Verifique
appsettings.jsonno Desktop:BaseUrldeve serhttp://localhost:5000
Erro: "LLM Provider not available"
- Se usar Groq: Verifique API key em
VideoStudy.API/appsettings.json - Se usar Ollama: Certifique-se que Ollama está rodando (
ollama serve)
Erro: "ModelId not found"
- Verifique o nome do modelo em
appsettings.json - Ollama: modelos podem ser listados com
ollama list - Groq:
llama-3.1-8b-instanté o padrão
📞 Versões de Dependências
| Package | Versão | Propósito |
|---|---|---|
| Microsoft.SemanticKernel | 1.70.0 | IA Integration |
| Microsoft.SemanticKernel.Connectors.OpenAI | 1.70.0 | OpenAI-compatible |
| Microsoft.SemanticKernel.Connectors.Ollama | 1.70.0-alpha | Local LLM |
| Bootstrap | 5.3.2 | CSS Framework (Desktop) |
📄 Licença
Projeto em desenvolvimento - Todos os direitos reservados
Última atualização: 2026-02-06 Fase: 1 (Estrutura Base) Status: ✅ Pronto para FASE 2