hub
F5 Hub
Painel de Sistemas
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