movie_edit
Roteiro Studio
Inteligência de Conteúdo
● Online
Interface web pra produção de roteiros pelo Marcio
info O que faz
Lê tasks do ClickUp (status=roteiro), mostra com badges URGENTE/PRODUZIR/DESCARTAR baseado na matriz Tier × Viral Score. 4 passos: abordagens → chamadas → lição → roteiro. Claude Sonnet streaming SSE.
hub Conexões
description Documentação (CLAUDE.md)
# CLAUDE.md — Roteiro Studio
## O que é esse projeto
Interface web de produção de roteiros em tempo real para **Marcio Eugenio** (@marcioeugeniooficial).
Fluxo: ClickUp (tasks com transcrição + pesquisa) → interface web → Claude API (streaming) → salva roteiro no ClickUp.
---
## Stack
- **Backend**: Python 3.12 + Flask (porta 5050)
- **IA**: Anthropic Claude API (`claude-sonnet-4-20250514`), streaming via SSE
- **Integração**: ClickUp API v2
- **Deploy**: Docker + docker-compose + Traefik
- **Container name**: `roteiro-studio`
---
## Estrutura de arquivos
```
app.py — servidor Flask, rotas e prompts
clickup_client.py — cliente ClickUp (leitura de tasks, salvamento)
templates/
index.html — lista de tasks prontas
task.html — interface de produção (4 passos com streaming)
requirements.txt
Dockerfile
docker-compose.yml
PROMPT_AGENTE_ABORDAGENS.md — prompt para o agente externo de abordagens
```
---
## Variáveis de ambiente
```
ANTHROPIC_API_KEY — chave da Claude API
CLICKUP_API_KEY — token pessoal do ClickUp (pk_...)
CLICKUP_LIST_ID — ID da lista "Criação - Marcio Eugênio" = 901112976097
```
Ficam no `.env` na raiz do projeto (não commitado).
---
## ClickUp — estrutura relevante
- **Workspace**: 9011208190 (F5 Têxtil)
- **Lista principal**: `Criação - Marcio Eugênio` (ID: 901112976097)
- **Subtask de roteiro**: `REDAÇÃO ROTEIRO 1/2` — onde o roteiro final é salvo
- **Status esperado para tasks prontas**: `pesquisa pronta`
### Formato da descrição da task no ClickUp
Para que o app leia corretamente, a descrição deve ter:
```
## Transcrição
[texto]
## Pesquisa
[texto]
## Abordagens
[gerado pelo agente — opcional]
```
---
## Fluxo da interface (4 passos)
1. **Abordagens** — Claude gera 3 abordagens com pilares de lucratividade
2. **Chamadas** — Claude gera 5 opções de gancho/hook
3. **Lição Brutal** — Claude gera versão Filosófica + Estratégica
4. **Roteiro** — Claude gera roteiro completo em formato teleprompter
Cada passo usa streaming SSE via `/stream/abordagens`, `/stream/chamadas`, `/stream/licao`, `/stream/roteiro`.
Salvar → `/salvar` → grava na subtask REDAÇÃO ROTEIRO e muda status para `aguardando revisão`.
---
## Padrão de conteúdo do Marcio
### Os 7 ângulos de lucratividade
1. Simplificação — Cortar produtos/serviços que não dão lucro
2. Verticalização — Cortar intermediários para aumentar margem
3. Precificação Premium — Criar experiência que justifique cobrar mais
4. Diversificação Premium — Criar versões premium do mesmo produto
5. Redução de Desperdício — Transformar perda em lucro
6. Modelo de Receita — Trocar venda única por recorrência
7. Corte de Custos Inteligente — Reduzir despesa sem perder qualidade
### Estrutura do roteiro
`GANCHO → HISTÓRIA → HEAD-FAKE → EXECUÇÃO → RESULTADO → PILARES → LIÇÃO BRUTAL → CTA`
### CTA padrão (nunca alterar)
`"Meu nome é Marcio Eugenio e analiso as melhores estratégias do mundo para aumentar lucro, todos os dias. Me segue pra não perder a próxima."`
### Duração do roteiro
- Ideal: 2min30–2min45 (~375–410 palavras)
- Máximo absoluto: 3min15 (~490 palavras)
---
## Comandos úteis
```bash
# Ver logs em tempo real
docker logs -f roteiro-studio
# Rebuild após mudanças
docker-compose up -d --build
# Reiniciar sem rebuild
docker-compose restart roteiro-studio
# Entrar no container
docker exec -it roteiro-studio bash
# Ver status
docker ps | grep roteiro
```
---
## Regras de segurança (seguir sempre)
- Fazer backup do arquivo antes de modificar: `cp arquivo.py arquivo.py.bak`
- Nunca deletar sem confirmar com o Marcio
- Testar localmente antes de rebuild: `python app.py` (porta 5050)
- Variáveis sensíveis sempre via `.env`, nunca hardcoded
---
## Ajustes frequentes
### Alterar o modelo de IA
Em `app.py`, buscar `claude-sonnet-4-20250514` e substituir pelo modelo desejado.
### Alterar os prompts
Os prompts ficam nas funções `make_prompt_*` em `app.py`:
- `make_prompt_abordagens()` — Step 1
- `make_prompt_chamadas()` — Step 2
- `make_prompt_licao()` — Step 3
- `make_prompt_roteiro()` — Step 4
### Alterar o status que o app busca
Em `clickup_client.py`, função `get_tasks_with_pesquisa()`, alterar o parâmetro `statuses[]`.
### Alterar onde o roteiro é salvo
Em `clickup_client.py`, função `save_roteiro()`.
## graphify
This project has a graphify knowledge graph at graphify-out/.
Rules:
- Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
- After modifying code files in this session, run `python3 -c "from graphify.watch import _rebuild_code; from pathlib import Path; _rebuild_code(Path('.'))"` to keep the graph current