# Carrossel Jpasv

> Gera copy de carrossel Instagram pro perfil @jp.asv (João Pedro Nascimento - Gestão com Claude Code / Claude Code) modelado nos posts de maior engajamento histórico. Use quando o usuário pedir 'gera carrossel jp', 'carrossel jpasv', 'copy de carrossel JP', 'post pro jp.asv', 'novo carrossel da campanha JP' ou variações. Exige tema + persona (contador|advogado|empresario) + opcionalmente padrão (A…

- **Type:** Skill
- **Install:** `agentstack add skill-tiago1002bravy-skills-marketing-carrossel-jpasv`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [tiago1002bravy](https://agentstack.voostack.com/s/tiago1002bravy)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [tiago1002bravy](https://github.com/tiago1002bravy)
- **Source:** https://github.com/tiago1002bravy/skills-marketing/tree/main/skills/carrossel-jpasv

## Install

```sh
agentstack add skill-tiago1002bravy-skills-marketing-carrossel-jpasv
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Skill: Carrossel @jp.asv

Gera 6 slides + caption pra carrossel Instagram seguindo a voz e os padrões virais validados do perfil **@jp.asv** (João Pedro Nascimento — *GESTÃO COM CLAUDE CODE 🇧🇷*, 78k seguidores, foco Claude Code pra empresários).

## Inputs obrigatórios

- **tema** — angulo do carrossel (ex: "recuperação tributária com Claude")
- **persona** — `contador` | `advogado` | `empresario` | `gestor` | `arquiteto`
- **padrão** *(opcional)* — `A` | `B` | `C` | `D` | `E` | `F` — se não informar, escolha o mais aderente ao tema

## Antes de gerar — leia SEMPRE estes arquivos

```
/dataset/padroes_validados.json
/dataset/top_carrosseis.json (top 10)
/dataset/vocab.json (do nicho da persona)
/dataset/meta.json
```

> **Nota:** o dataset é proprietário e NÃO está incluso neste repositório público.
> Você precisa montar o seu próprio (top virais do seu perfil + vocab do seu nicho)
> antes de usar a skill. Veja `dataset/README.md` pra schema esperado.

## Output esperado

```markdown
## Carrossel — {tema}
**Padrão:** {letra} - {nome}
**Persona:** {persona}
**Modelo viral:** {code} ({score} pontos)

### S1 (capa)
{texto}

### S2
{texto}

### S3
{texto}

### S4
{texto}

### S5
{texto}

### S6 (CTA)
Comenta "{palavra}" que mando {material concreto}.
Sem te cobrar nada.
👇

### Caption do feed
{texto curto que repete hook + repete CTA}
```

## Regras de escrita (não quebrar)

### Hooks (S1)
- **SEMPRE** começa com número específico, ferramenta nominal, ou citação real
- **NUNCA** começa com meta-conceito ("IA está mudando o mercado", "eficiência é tudo")
- **NUNCA** usa "olha isso", "você sabia", "acabei de descobrir"
- **REGRA: 1 FRASE ÚNICA na capa.** Máximo 12-16 palavras, ~120 caracteres. Sem segunda frase, sem "então" ou explicação. Tem que caber em 4 linhas grandes (font-size 40px) sem cortar.
- Tem que parar o scroll em **2 segundos**

**Anti-padrão na capa (proibido):**
> "SPED de 5 anos lido em 14min. PER/DCOMP montado em 22. Cliente avisado que tem R$ 187k pra recuperar." (3 frases — tela fica poluída)

**Bom (1 frase única):**
> "Recuperação tributária de 5 anos em 11 minutos, com peça assinada."
> "1 agente que cobra cliente em atraso no WhatsApp, 24/7, sem ser chato."
> "Marca o advogado que ainda redige inicial em 6h. Tem colega entregando em 12 min."

### Especificidade obrigatória em TODA copy

Toda frase tem que responder "qual?", "quanto?", "qual sistema?", "qual processo?". Nada genérico.

| Genérico (proibido) | Específico (obrigatório) |
|---|---|
| "advogado" | "advogado trabalhista" / "tributarista" / "imobiliário" |
| "petição" | "inicial trabalhista padrão" / "agravo de instrumento" / "embargos de declaração" |
| "automatizar tarefa" | "automatizar cálculo de prescrição prevista no art. 7º XXIX da CLT" |
| "sistema do escritório" | "Astrea" / "Domínio" / "PJe TJSP" / "ESAJ" |
| "muito mais rápido" | "de 6 horas pra 12 minutos" / "80% menos tempo" |
| "cliente" | "indústria têxtil de 80 funcionários" / "padaria do João" / "escritório de 14 pessoas" |
| "obrigação acessória" | "DCTFWeb" / "SPED Contribuições" / "EFD-Reinf" |
| "tributo" | "PIS/COFINS" / "ICMS" / "ISS sobre serviço continuado" |
| "documento" | "matrícula 12.345 do CRI da capital" / "GFIP do mês" |
| "regularizar" | "transmitir DCTFWeb retroativa do período X" |

**Regra geral:** se trocar a palavra por outra do mesmo nicho não muda o sentido, não tá específico.

### Corpo (S2-S5)
- Frases curtas (1-2 linhas máximo por bloco)
- Verbo no presente, voz ativa
- Sempre menciona ferramenta nominal do nicho (Domínio, Astrea, SPED, DCTFWeb, Projudi…)
- Sempre tem número/dado/comparação quantificada
- Zero hype: nada de "incrível", "insano", "revolucionário"
- Pode usar setas `→` no início de bullets quando lista entregas
- Termos técnicos do nicho **sem explicar** (público que sabe)

### CTA (S6)
- **Palavra-chave SEMPRE é `hoje`** — não inventa palavras diferentes (PER, astrea, inicial…). Padrão de operação: leitor comenta "hoje" e recebe DM com material.
- Padrão fixo: `Comenta "hoje" que mando {material concreto}. Sem te cobrar nada. 👇`
- Material concreto = prompt, CLAUDE.md, skill, biblioteca, fluxo, checklist
- Caption do feed também usa `Comenta "hoje" 👇`

### Caption do feed
- 2-4 linhas
- Repete o hook do S1 condensado
- Repete o CTA com a palavra
- Pode adicionar 1 frase de profecia/matemática

## Os 8 padrões de hook (use o `padroes_validados.json` pra detalhes)

| ID | Nome | Quando usar |
|---|---|---|
| **A** | Lista de promessas com tempo | Demo de capacidade. "X em 8 min. Y em 20." |
| **B** | Polarização cultural | Provocar repostagem. "Tem gente X. Enquanto isso, tem empresa Y." |
| **C** | Movimento errado vs certo | Ângulo filosófico. "A maioria está fazendo X. Errado. A jogada é Y." |
| **D** | Newsjacking Anthropic | Sai release Anthropic? Posta nas 24h. |
| **E** | Profecia com data | Criar urgência. "Quem não fizer até [data] vai perder." |
| **F** | Marcação social com contexto | Provocação. "Marca o X que ainda Y. Tem colega entregando em Z." |
| **G** | Curiosidade processo específico | Educativo. "Como [persona]s estão automatizando [processo X] com Claude Code." |
| **H** | Conexão com sistema | Profissional avançado. "Conectei o Claude no [Astrea/Domínio/PJe] e [resultado mensurável]." |

**Importante**: padrão F sempre com **dado/comparação** na S1 (nunca seco como "Marca o advogado que ainda redige na mão" — adicionar tempo/contraste).
**Padrão G**: sempre amarrar a UM processo nomeado (não "automatizar escritório", e sim "automatizar cálculo de prescrição trabalhista").
**Padrão H**: sempre sistema nominal específico que a persona já paga e usa (Astrea, Domínio, PJe, SPED, Sienge, Sage…).

## Vocabulário por persona

Lê de `vocab.json`. **Sempre amarre a persona específica** (contador, advogado, arquiteto…), nunca fala "empresário genérico" se der pra segmentar.

**Contador**: SPED, DCTFWeb, EFD, DARF, DAS, IRPJ, IRPF, ITCMD, PER/DCOMP, fechamento contábil, conciliação bancária, Domínio, Onvio, Sage.

**Advogado**: Astrea, Projudi, PJe, ESAJ, petição inicial, contestação, recurso, embargos, prazo, publicação, intimação, audiência, áreas (trabalhista, cível, tributário…).

**Verbos Claude**: lê, cruza, classifica, sinaliza, redige, calcula, monta, valida, responde, cobra, lança, concilia.

## Regra crítica — História pode ser inventada, dado/lei NÃO

**Liberdade narrativa**: personagem, cena, diálogo, escritório fictício, números de resultado plausíveis (R$ recuperados, horas economizadas) — pode inventar se ficar verossímil.

**Proibido inventar**: lei, artigo, NBR, súmula, alíquota, prazo legal, número de instrução normativa, nome de sistema/ferramenta, estatística citada como fato sem fonte. Esses tem que ser validados em fonte oficial antes de aparecer em slide, caption ou hook.

**Regra prática:**
- "Sócio de escritório contábil de 14 pessoas em BH" → ✅ livre (persona-tipo)
- "Recuperou R$ 253.000 do cliente" → ✅ livre (número plausível como exemplo)
- "Recuperou via PER/DCOMP" → ✅ ok, PER/DCOMP é instituto real (validar antes)
- "Recuperou via PER/DCOMP IN 2055/2021" → ⚠️ validar número da IN antes
- "70% das empresas pagam tributo a maior" → ❌ se não tem fonte, não citar como fato
- "memorial descritivo NBR 16280" → ❌ NBR errada (16280 é reforma); usar termo genérico

### Checklist por persona

**Contador / Tributarista:**
- Tributos (IRPJ, CSLL, PIS, COFINS, ICMS, ISS, ITCMD, ITBI, IRPF) — confirmar antes de citar regime/alíquota
- Sistemas (SPED Fiscal, SPED Contribuições, DCTFWeb, EFD-Reinf, eSocial, ECF, ECD) — todos reais, confirmar uso/momento
- Prazos (decadencial 5 anos, prescricional 5 anos) — fonte: CTN art. 168, 173, 174
- Recuperação tributária — PER/DCOMP é instrumento Receita Federal (IN RFB 2055/2021)
- Antes de cravar % de honorário, citar como "padrão de mercado" e não regra

**Advogado:**
- Sistemas (Astrea, PJe, Projudi, ESAJ, SAJ, eproc) — todos reais por TJ; validar área/região
- Prazos processuais — citar artigo CPC se mencionar (ex: art. 219, art. 1.003)
- Prescrição trabalhista — CLT art. 7º XXIX (5 anos no curso, 2 anos pós-rescisão)
- Honorários — Lei 8.906/94 (Estatuto OAB) + tabela OAB regional
- Súmulas — sempre validar número/teor no site do tribunal

**Arquiteto:**
- NBR — **não citar número de NBR sem validar no site da ABNT**. NBR 16280 = reforma; NBR 6492 = representação de projetos arquitetônicos; NBR 13531 = elaboração de projetos. Cada uma tem escopo específico.
- CAU — Resoluções CAU/BR + Lei 12.378/2010
- Memorial descritivo — exigências municipais variam; não cravar regulamentação federal única

### Como aplicar
1. **Termo genérico em vez de citação errada**: "memorial descritivo no padrão da prefeitura" > "memorial NBR 16280 ❌"
2. **Números plausíveis ≠ inventados**: se citar "R$ 38k cobrados", deixar claro que é exemplo (case-tipo) ou ter caso real do JP
3. **Persona-exemplo neutra**: "sócio de escritório contábil de N pessoas" — ok como hipotético; nome/cidade real só com autorização
4. **Quando não souber, usar termo amplo**: "obrigação acessória" no lugar de citar SPED específico errado

## Anti-padrões (não fazer)

❌ Headline genérica: "Claude está mudando o mercado contábil"
✅ Headline específica: "Recuperação de PIS/COFINS de 5 anos em 11 minutos"

❌ Slide vago: "A IA pode te ajudar muito"
✅ Slide concreto: "Lê SPED, EFD, DCTFWeb. Cruza com tabela tributária. Identifica crédito."

❌ CTA fraco: "Salva esse post pra ver depois"
✅ CTA forte: `Comenta "PER" que mando o prompt + biblioteca de fundamentações.`

❌ Hype: "IA é INSANA, vai REVOLUCIONAR seu escritório!!!"
✅ Declarativo: "Não substitui o contador. Substitui as 6 horas de conferência manual."

❌ Persona genérica: "empresário em 2026"
✅ Persona específica: "contador de escritório de 14 pessoas em Belo Horizonte"

❌ Padrão F seco: "Marca o advogado que ainda redige na mão"
✅ Padrão F com dado: "Marca o advogado que ainda redige inicial trabalhista em 6h. Tem colega dele entregando a mesma peça em 12min pelo mesmo honorário."

## Fluxo de geração

1. Leia `padroes_validados.json` e identifique o padrão (se usuário não passou)
2. Leia top 5 carrosséis em `top_carrosseis.json` que tenham score > 1500 — use como referência viva
3. Leia vocab da persona
4. Escolha **modelo viral âncora**: o post real do dataset que mais se aproxima do tema
5. Gere 6 slides + caption seguindo as regras
6. Output no formato Markdown da seção "Output esperado"
7. **GATE OBRIGATÓRIO — VALIDAÇÃO FACTUAL antes de subir HTML/PNG/IG:**

   ```bash
   python3 scripts/validate_facts.py 
   # ou em batch:
   python3 scripts/validate_facts.py queue/ --strict
   ```

   - **Bloqueia publicação se houver issues** (lei/IN/portaria não validada, evento eSocial/EFD-Reinf inexistente).
   - **Warnings exigem revisão** (DARF não-canônico, motivo desligamento sem código validado, NBR/súmula sem fonte).
   - Se faltar dado, **substitua por termo genérico** ou **adicione ao whitelist** em `validate_facts.py` SÓ depois de confirmar em fonte oficial (gov.br, planalto, sped.rfb.gov.br).

## Regra de OURO da validação factual

**TUDO que tem número específico** (lei, IN, portaria, decreto, alíquota, código DARF, evento eSocial, NBR, súmula, % específico) tem que estar **na whitelist do `validate_facts.py`** OU ser conferido em órgão oficial antes de subir.

Whitelist atual cobre:
- **Leis/normas**: 12.506/2011 (aviso prévio), 13.467/2017 (CLT 484-A), Decreto 12.797/2025 (sal mínimo 2026), IN RFB 2.198/2024 (DIRBI), Portaria MPS/MF 13/2026 (INSS 2026), Portaria MTP 671/2021 (ponto), Resolução Senado 13/2012 (ICMS interestadual), LC 190/2022 (DIFAL), Convênio ICMS 142, MP 1.227/2024.
- **Eventos eSocial**: S-1000/1005/1010/1020/1200/1202/1207/1210/1280/1295/1299, S-2200/2205/2206/2210/2220/2230/2240/2298/2299/2300/2399, S-3000.
- **Eventos EFD-Reinf**: R-1000/2010/2020/2099, R-4010/4020/4040/4080, R-9000 + séries R-2000/R-4000.
- **DARFs com ressalva** (verificar contexto): 0561, 1708, 2172, 5952, 6912, 2484.
- **Alíquotas 2026**: INSS 7,5%/9%/12%/14% até R$ 8.475,55, IRRF redutor R$ 5.000, IRRF dependente R$ 189,59, simplificado R$ 607,20, salário-família R$ 67,54 (teto R$ 1.980,38), salário mínimo R$ 1.621, FGTS 8%/multa 40%/484-A 20%, INSS patronal 20% + RAT × FAP + Terceiros, ICMS interestadual 4%/7%/12%, PIS 0,65%/1,65%, COFINS 3%/7,6%, IRPJ 15% + adicional 10% sobre R$ 20.000/mês, CSLL 9%, CBS 0,9% + IBS 0,1% (2026 fase teste).
- **Datas**: FGTS Digital 01/03/2024, DIRBI jun-jul/2024, GFIP extinta 2023, EFD-Reinf R-4000 desde 21/09/2023.

**Atualizar whitelist**: editar `scripts/validate_facts.py` adicionando o termo + comentário com fonte oficial.

## Quando o usuário pedir variações

Se pedir "3 variações", entregue **3 carrosséis em padrões DIFERENTES** (não 3 do mesmo padrão). Diversifica.

## Atualização do dataset

Re-ranqueie o dataset periodicamente. Se notar que dataset tá > 14 dias velho (ver `meta.json` → `ultimo_update`), avise o usuário antes de gerar.

---

## Templates visuais (3 layouts, accent por persona)

A skill produz **JSON da copy + escolhe template + escolhe accent**. O HTML final fica em `design/`.

### 3 templates

| Template | Identidade | Padrões aderentes |
|---|---|---|
| **Editorial** | Capa preta + serif gigante + slides creme texto-pesado + CTA accent | A, F, B, C, E |
| **Terminal** | Capa preta com prompt mono `$ jp.asv solve...` + slides aspecto IDE/log + checklist `> ✓` em mono | D (release), G (processo), H (conexão sistema) |
| **Split** | Capa dividida 50/50 (você vs concorrente) + slides comparativos | B, C |

**Regra de seleção (default)**:
- A, F, B, C, E → Editorial
- D, G, H → Terminal
- B/C com forte comparação → Split (override)

Templates moram em `design/templates/` (ainda em construção). Hoje os carrosséis prontos servem de referência:
- `design/carrossel-c5-advogado.html` (Editorial / Padrão F / accent laranja)
- `design/carrossel-h1-contador.html` (Editorial / Padrão H / accent laranja)
- `design/exemplo-terminal-advogado.html` (Terminal / Padrão H / accent bordô)

### Paleta accent por persona

Importa `design/templates/_palette.css` que aplica via ``:

| Persona | Accent | Hex |
|---|---|---|
| `contador` | Verde escuro | `#3B5D3A` |
| `advogado` | Bordô | `#8B2635` |
| `arquiteto` | Ocre | `#C8932F` |
| `empresario` | Laranja Claude | `#DA7756` (default) |

Base fixa: cream `#F5F2EE`, ink `#141413`, line `#DAD3C7`.

---

## Pipeline de publicação no Instagram

**Stack:** Python + Playwright (render) + boto3 (qualquer bucket S3-compatible) + requests (Graph IG API).

### Fluxo end-to-end
```
1. Gera copy (skill output em markdown)
   ↓
2. Cria/atualiza HTML em design/.html
   - Escolhe template baseado no padrão
   - Aplica accent via data-persona=""
   - Preenche N .slide com a copy
   ↓
3. Roda publish-ig.py:
   - Playwright renderiza cada .slide → N PNGs 1080x1080
   - Sobe PNGs num bucket S3-compatible público (R2, S3, MinIO)
   - N POSTs Graph IG (children) + 1 CAROUSEL + 1 media_publish
   - Deleta PNGs do bucket (a menos que --keep)
```

### Comando
```bash
python3 scripts/publish-ig.py design/.html \
  --from-html \
  --caption "[caption do feed]"
```

Flags:
- `--dry-run` → renderiza e sobe PNGs mas não publica (URLs públicas pra inspeção)
- `--keep` → não deleta PNGs do bucket depois (debug)

### Localização dos arquivos
| Onde | O quê |
|---|---|
| `design/*.html` | Template do carrossel (1 arquivo por carrossel) |
| `design/templates/_palette.css` | Paleta de accent por persona |
| `dataset/*.json` | Top virais, padrões, vocab, meta (proprietário, monte o seu) |
| `scripts/publish-ig.py` | Pipeline render+upload+publish |
| `scripts/validate_facts.py` | Gate de validação factual |
| `renders//*.png` | Output local pra inspeção |

### Configuração (env vars)

Veja `.env.example` na raiz do repo. Variáveis obrigatórias:

```
IG_USER_ID=...
IG_TOKEN=...
S3_ENDPOINT=...
S3_BUCKET=...
S3_ACCESS_KEY=...
S3_SECRET_KEY=...
S3_PUBLIC_URL=...   # opcional, f

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [tiago1002bravy](https://github.com/tiago1002bravy)
- **Source:** [tiago1002bravy/skills-marketing](https://github.com/tiago1002bravy/skills-marketing)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-tiago1002bravy-skills-marketing-carrossel-jpasv
- Seller: https://agentstack.voostack.com/s/tiago1002bravy
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
