VideoStudy/README.md
2026-02-09 18:30:52 -03:00

270 lines
6.4 KiB
Markdown

# 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
```bash
cd /mnt/c/vscode/VideoStudy.app
```
### 2. Restaurar Dependências
```bash
dotnet restore
```
### 3. Executar a API
#### Opção A: Com Ollama (Local, Grátis)
Certifique-se que Ollama está rodando em `http://localhost:11434`
```bash
cd VideoStudy.API
dotnet run
```
A API estará disponível em: `http://localhost:5000`
#### Opção B: Com Groq (Cloud, Grátis)
1. Crie conta em https://console.groq.com
2. Gere API Key
3. Configure em `VideoStudy.API/appsettings.json`:
```json
"LlmSettings": {
"Provider": "Groq",
"ModelId": "llama-3.1-8b-instant",
"Endpoint": "https://api.groq.com/openai/v1",
"ApiKey": "your-groq-api-key"
}
```
```bash
cd VideoStudy.API
dotnet run
```
### 4. Executar Desktop App (em outro terminal)
```bash
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:
```json
{
"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:
```json
{
"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ário
- `AnalysisResponse` - Resposta da análise
- `KeyMoment` - Momento importante no vídeo
- `ProgressUpdate` - 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:
```csharp
builder.Services.AddOllamaChatCompletion(
"llama2",
new Uri("http://localhost:11434")
);
```
#### Para OpenAI GPT-4:
```csharp
builder.Services.AddOpenAIChatCompletion(
"gpt-4o-mini",
"sk-proj-your-key"
);
```
#### Para Google Gemini:
```csharp
builder.Services.AddGoogleAIGeminiChatCompletion(
"gemini-1.5-flash-latest",
"your-google-api-key"
);
```
### Build para Produção
```bash
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):**
```bash
sudo apt update && sudo apt install ffmpeg
```
**Windows:**
Baixe em [ffmpeg.org](https://ffmpeg.org/download.html) 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 run` em `VideoStudy.API`
- Confirme que porta 5000 está livre
- Verifique `appsettings.json` no Desktop: `BaseUrl` deve ser `http://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