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