movie_edit
Roteiro Studio
Inteligência de Conteúdo
● Offline
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 (F3.5+): foxor-workspace-bff (cards IDEIAS + scripts/{id}/full vindos da Esteira/Foxor Brain) → interface web → Claude API (streaming) → PATCH /v1/workspace/scripts/{id} no bff.
ClickUp foi removido do roteiro-studio em F3.5 (2026-04-30). O pipeline link IG → card hoje vive inteiro na Foxy WA + foxor-bot/link_handler + foxor-workspace-bff./v1/cards/from-link.
---
## Stack
- **Backend**: Python 3.12 + Flask (porta 5050)
- **IA**: Anthropic Claude API (`claude-sonnet-4-20250514`), streaming via SSE
- **Integração**: foxor-workspace-bff (porta 8302) via cookie JWT `foxor_session`
- **Deploy**: Docker + docker-compose + Traefik (`roteiro.foxor.app`)
- **Container name**: `roteiro-studio`
---
## Estrutura de arquivos
```
app.py — servidor Flask, rotas e prompts
bff_client.py — cliente HTTP síncrono pro foxor-workspace-bff
auth.py — middleware SSO Foxor (cookie foxor_session)
pegadas_repo.py — repo SQL pra public.pegadas (foxor-auth-db)
auditors.py — 2 auditores Haiku passivos (estrutura + factual)
templates/
lab_index.html — home: cards da coluna IDEIAS via /v1/workspace/cards/ideias
task.html — interface de produção (4 passos com streaming + sync SSE)
requirements.txt
Dockerfile
docker-compose.yml
PROMPT_AGENTE_ABORDAGENS.md
```
---
## Variáveis de ambiente
```
ANTHROPIC_API_KEY — chave da Claude API
FOXOR_BFF_URL — http://foxor-workspace-bff:8302 (compose)
FOXOR_AUTH_* — config do middleware SSO
PEGADA_DB_* — conexão ao foxor-auth-db (public.pegadas)
```
Vars sensíveis vêm de `/root/shared.env` (regra `feedback_shared_env_unico`).
---
## Contratos consumidos do foxor-workspace-bff
- `GET /v1/workspace/cards/ideias?limit=50` (Contrato F.3.b) — home grid
- `GET /v1/workspace/scripts/{script_id}/full` (Contrato F.3) — task detail
- `PATCH /v1/workspace/scripts/{script_id}` (Contrato F.3.c) — salvar
- `GET /v1/workspace/scripts/{script_id}/stream` (Contrato E) — SSE bidirecional WA↔Web
Auth: cookie `foxor_session` é repassado direto pro bff em `Cookie:` header (`bff_client._headers`).
---
## 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` (POST `{script_id, roteiro|roteiros_individuais, format}`) → PATCH `/v1/workspace/scripts/{id}` no bff com `body_md` + `format` + `status='review'`. PATCH dispara `pg_notify('foxor_events', ...)` com `source='web'` (Contrato E) consumido pelo foxor-bot pra notificar via WA.
---
## 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 source dos cards na home
Edita `index()` em `app.py` ou ajusta o filtro `user_status_label` no `fetch_cards_ideias` do bff (`foxo