feat(crm-ops): estrategia-marca 1.3.0 — SPEC v2.0, versão completa (36 capítulos), redação em paralelo, montagem e PDF A4; funde marketing:brand-strategy (marketing 2.1.0)
This commit is contained in:
@@ -1,174 +1,177 @@
|
||||
---
|
||||
name: estrategia-marca
|
||||
description: Cria estratégias de marca completas seguindo a metodologia Descomplicar® (ACIDA + Framework 16Ps). Inclui fase de pesquisa de mercado com /deep-research antes do briefing. Guia a análise de público, posicionamento, Pitch Canvas, copywriting e documento final entregável. Usar quando o utilizador diz "estratégia de marca", "branding", "criar marca", "posicionamento", "16Ps", "/estrategia-marca", "análise de público", "narrativa de marca", "proposta de valor", "pitch canvas", "pain + gain", "copywriting estratégico", "identidade de marca", "pesquisa de mercado para marca", ou quando um cliente adquire o serviço EST-MRK-010.
|
||||
description: Cria estratégias de marca Descomplicar® (EST-MRK-010) conforme a SPEC v2.0 (16Ps 2026, 40Ps em projetos complexos, ≥5 nichos, 20 pontos por segmento, identidade visual da marca, bloco BRIEFING-LLM) em três níveis, Essencial, Standard e Completo, do briefing ao PDF A4 validado. A versão completa (36 capítulos) junta todos os elementos de todas as estratégias já entregues. Usar quando o utilizador diz "estratégia de marca", "brand strategy", "branding", "criar marca", "posicionamento", "16Ps", "40Ps", "/estrategia-marca", "análise de público", "personas", "segmentação", "narrativa de marca", "proposta de valor", "pitch canvas", "pain + gain", "copywriting estratégico", "tom de voz", "identidade de marca", "manifesto", "versão completa da estratégia", ou quando um cliente adquire o serviço EST-MRK-010.
|
||||
---
|
||||
|
||||
# Skill: Estratégia de Marca
|
||||
|
||||
Guia completo para criar estratégias de marca Descomplicar® — da pesquisa de mercado ao documento final entregável.
|
||||
Da pesquisa ao documento final validado e em PDF. Substitui a antiga skill
|
||||
`marketing:brand-strategy` (fundida aqui a 17-10-2026).
|
||||
|
||||
---
|
||||
## Fonte de verdade (ler antes de escrever)
|
||||
|
||||
## Fluxo de trabalho (8 fases)
|
||||
Standard canónico em `Cloud/Descomplicar/ACIDA/Estrategia-de-Marca/`
|
||||
(caminho local: `/media/ealmeida/Dados/Cloud/Descomplicar/ACIDA/Estrategia-de-Marca/`):
|
||||
|
||||
### Fase 0 — Pesquisa de mercado
|
||||
| Ficheiro | Para quê |
|
||||
|---|---|
|
||||
| `SPEC-Estrategia-de-Marca.md` (v2.0) | Decisões canónicas, níveis, critérios de completude |
|
||||
| `PROC-Estrategia-de-Marca.md` (v2.0) | Fases, gates, responsáveis |
|
||||
| `CONTRATO-OUTPUT-LLM.md` | Esquema do bloco `## BRIEFING-LLM` |
|
||||
| `golden-example-briefing-llm.md` | Bloco BRIEFING-LLM preenchido (Descomplicar®) |
|
||||
| `validador-estrategia-marca.mjs` | Gate final: `node validador-estrategia-marca.mjs <ficheiro> [--completo]` |
|
||||
|
||||
Antes do briefing com o cliente, fazer pesquisa independente. Verificar primeiro se já existem ficheiros de pesquisa (ex: pasta `Pesquisas/` no projecto).
|
||||
Esta skill implementa o PROC. Se algo aqui contradisser a SPEC, prevalece a SPEC.
|
||||
|
||||
**Se a pesquisa já existe:** ler os ficheiros relevantes e extrair síntese.
|
||||
Decisões que não se regridem (SPEC §1): 16Ps com a numeração de 2026 como base;
|
||||
40Ps só em projetos complexos; ≥5 nichos reais e 20 pontos por segmento;
|
||||
paleta é sempre a da marca em causa (nunca a da Descomplicar® num cliente);
|
||||
`## BRIEFING-LLM` como última secção; PT-PT estrito; nada inventado, o que
|
||||
faltar fica `[a validar: …]` e vai para o anexo A.
|
||||
|
||||
**Se não existe:** usar `/deep-research` (ou `mcp__tavily__tavily_research`) com os seguintes focos:
|
||||
## Níveis
|
||||
|
||||
1. **Mercado/sector** — dimensão, crescimento, tendências, regulação
|
||||
2. **Concorrentes** — posicionamento, mensagens, pricing, pontos fracos
|
||||
3. **Público** — linguagem online, canais activos, dores expressas em fóruns/reviews
|
||||
4. **Oportunidades** — gaps de mercado, tendências emergentes não exploradas
|
||||
| Nível | Quando | Estrutura | Modo de redação |
|
||||
|---|---|---|---|
|
||||
| Essencial | Produto próprio, iteração rápida | Capítulos E de `estrutura-completa.md` | Um agente, de seguida |
|
||||
| Standard (default) | Cliente EST-MRK-010 | Capítulos E + S | Bloco a bloco com validação do utilizador |
|
||||
| Completo | "versão completa", marca da casa, branding WOW, cliente com várias linhas de negócio | Todos os 36 capítulos e anexos | Subagentes em paralelo por parte (`prompt-redacao-parte.md`) |
|
||||
|
||||
Guardar síntese em `Pesquisas/sintese-mercado.md` no projecto do cliente.
|
||||
Se o pedido for ambíguo, Standard. "Completa", "com todos os elementos" ou
|
||||
"como a da Descomplicar" = Completo.
|
||||
|
||||
**Resultado esperado:** chegar ao briefing já com hipóteses validadas sobre o mercado e o público — não para impor, mas para fazer perguntas mais certeiras e poupar tempo ao cliente.
|
||||
## Fases
|
||||
|
||||
### Fase 1 — Activação e contexto
|
||||
### Fase 0. Pesquisa de mercado
|
||||
Verificar se já existe pesquisa (`Pesquisas/` no projeto). Se não, usar
|
||||
`/deep-research` (ou pesquisa web) sobre mercado, concorrentes, público e
|
||||
oportunidades. Só fontes primárias para números (INE, Eurostat, reguladores,
|
||||
associações), sempre com link. Guardar em `Pesquisas/sintese-mercado.md`.
|
||||
|
||||
Ao iniciar, perguntar:
|
||||
- Qual o nome do cliente/marca?
|
||||
- Já existe briefing ou material de partida?
|
||||
- Qual o sector/indústria?
|
||||
- Temos exemplos de concorrentes?
|
||||
### Fase 1. Ativação e contexto
|
||||
Nome da marca, sector, material existente, concorrentes conhecidos, projeto no
|
||||
Desk CRM (`get_project`). Para a própria Descomplicar® ou marcas da casa, ler
|
||||
também: `Cloud/Descomplicar/Planeamento/Estrategia-2026/`, o sistema de design
|
||||
(`Hub/04-Stack/02.04-Sistemas/DesignSystem-Descomplicar/sistema/docs/marca.md`)
|
||||
e as fichas OKF (`empresa/`, `produtos-servicos/`).
|
||||
|
||||
Se existir projecto no Desk CRM, verificar com `get_project` antes de prosseguir.
|
||||
### Fase 2. Briefing (rondas curtas, saltar o que já se sabe)
|
||||
1. Essenciais: nome, sector, o que vende, quem compra, website.
|
||||
2. Contexto: problema que resolve, 2-3 concorrentes, diferenciador, material de marca, mercado geográfico.
|
||||
3. Ambição: onde quer estar a 2-3 anos, nichos prioritários, enquadramento legal.
|
||||
Perguntas completas em `references/perguntas-briefing.md`.
|
||||
|
||||
### Fase 2 — Briefing estruturado
|
||||
### Fase 3. Fundamentos (P1-P4)
|
||||
Problema em 3 níveis, propósito, missão, visão, valores, objetivos, posicionamento
|
||||
testável, proposta de valor. `references/framework-16ps.md` (Bloco A).
|
||||
Gate P4: sem declaração de posicionamento testável, não avançar.
|
||||
|
||||
Conduzir entrevista com as perguntas de `references/perguntas-briefing.md`.
|
||||
### Fase 4. Público (P5-P7)
|
||||
≥5 nichos sectoriais com 8 pontos (`references/nichos.md`; "PMEs" não é nicho),
|
||||
depois os segmentos com os 20 pontos por ordem (`references/template-documento.md` §5,
|
||||
exemplo em `references/exemplo-persona-20d.md`), personas nomeadas.
|
||||
Gate Público: ≥5 nichos e ≥2 segmentos com os 20 pontos completos.
|
||||
|
||||
Organizar por blocos:
|
||||
1. Negócio (problema, serviços, mercado)
|
||||
2. Público-alvo (segmentos identificados)
|
||||
3. Posicionamento actual vs desejado
|
||||
4. Tom de voz e personalidade
|
||||
5. Concorrência e diferenciação
|
||||
### Fase 5. Pitch canvas
|
||||
Para quem, problema, solução, resultado, porquê nós, mais a declaração de mudança no mundo.
|
||||
|
||||
### Fase 3 — Fundamentos estratégicos
|
||||
### Fase 6. Copywriting
|
||||
Questionamento estratégico (10 perguntas), Pain + Gain original e refinado,
|
||||
narrativa por segmento (dor → solução → resultado), mensagem central, headlines.
|
||||
`references/narrativas-copywriting.md`.
|
||||
|
||||
Desenvolver com o cliente:
|
||||
- **Proposta de valor única** — o que nos torna únicos, diferenciais, benefícios por camada
|
||||
- **Missão, Visão, Valores e Objectivos** — com exemplos de como se manifestam na prática
|
||||
- **Apresentação sumária** — empresa + serviços com tabela clara
|
||||
- **Posicionamento** — declaração de posicionamento testável
|
||||
### Fase 7. Restante documento
|
||||
Seguir a ordem de `references/estrutura-completa.md` para o nível escolhido:
|
||||
identidade e expressão, oferta e preço, comunicação e canais, crescimento,
|
||||
medição e roteiro. Gate Identidade Visual: paleta desta marca em hex.
|
||||
|
||||
Ver `references/framework-16ps.md` → Bloco A para questões orientadoras.
|
||||
No nível Completo as fases 3 a 7 correm em paralelo: o orquestrador fecha as
|
||||
decisões transversais e lança um subagente por parte com
|
||||
`references/prompt-redacao-parte.md`. Depois lê os relatórios, alinha nomes
|
||||
partilhados entre partes e retira o que não pode sair (detalhes de incidentes,
|
||||
promessas sem cláusula, concorrentes nomeados em copy).
|
||||
|
||||
### Fase 4 — Análise de público (20 pontos por segmento)
|
||||
### Fase 8. Montagem, validação e PDF
|
||||
1. Escrever a introdução (resumo executivo de 1 página + "Sobre este documento":
|
||||
fontes, decisões tomadas quando as fontes divergem, convenções).
|
||||
2. Escrever o `## BRIEFING-LLM` (esquema do CONTRATO; partir do golden example
|
||||
e trocar tudo pelos valores desta marca; coerente com o corpo).
|
||||
3. Montar: `python3 scripts/montar.py --partes <dir> --intro intro.md --briefing briefing-llm.md --config marca.json --out <ficheiro>.md [--glossario …] [--historico …]`.
|
||||
Gera o anexo A com todos os `[a validar]`.
|
||||
4. Validar: `node <ACIDA>/Estrategia-de-Marca/validador-estrategia-marca.mjs <ficheiro>.md` (acrescentar `--completo` no nível Completo). Corrigir até 0 erros.
|
||||
5. PDF A4: copiar `assets/marca-descomplicar.json` para o projeto, trocar cores,
|
||||
fontes, logótipo e textos pelos da marca, e correr
|
||||
`python3 scripts/render_pdf.py <ficheiro>.md <ficheiro>.pdf --config marca.json`.
|
||||
6. Verificar: abrir pelo menos a capa, o índice, uma página de texto com € e uma
|
||||
tabela (`pdftoppm -r 60 -f N -l N`); o script avisa se aparecerem fontes de
|
||||
recurso do sistema (Liberation/DejaVu).
|
||||
|
||||
**Obrigatório:** Antes dos segmentos psicográficos, identificar os nichos sectoriais relevantes para o produto. Usar `references/nichos.md` para seleccionar e analisar **pelo menos 5 nichos específicos** (ex: clínicas de saúde, imobiliárias, agências digitais — não "PMEs" como categoria vaga). Para cada nicho preencher os 8 pontos do guia de análise sectorial. Cruzar com os 20 pontos psicográficos abaixo para construir personas completas.
|
||||
### Fase 9. Entrega
|
||||
- Estratégia de cliente: pasta do projeto do cliente (Desk/GDrive/local), nunca
|
||||
na pasta do standard. Marca da casa: `Cloud/Descomplicar/Planeamento/…` e
|
||||
atualizar a ficha OKF correspondente.
|
||||
- Status `rascunho-para-validacao` enquanto houver pontos no anexo A;
|
||||
`aprovado` só com o validador a 0 erros e revisão do Emanuel.
|
||||
- Cliente no Desk: comentar na tarefa com o caminho e a lista de pontos a validar.
|
||||
|
||||
Para cada segmento identificado, desenvolver os 20 pontos na seguinte ordem:
|
||||
## Checklist de entrega
|
||||
|
||||
1. Perfil Demográfico
|
||||
2. Perfil Psicográfico
|
||||
3. Dores
|
||||
4. Anseios
|
||||
5. Desejos
|
||||
6. Frustrações
|
||||
7. Preocupações
|
||||
8. Medos
|
||||
9. Inimigos
|
||||
10. Linguagem
|
||||
11. Como procuram ajuda/informação/dicas
|
||||
12. Canais digitais activos
|
||||
13. Estilo de Decisão
|
||||
14. Mudanças (que sabem necessárias)
|
||||
15. Resistência à mudança
|
||||
16. Objecções típicas (+ como ultrapassar)
|
||||
17. Forma de gerar emoção
|
||||
18. Argumentos (a que são mais sensíveis)
|
||||
19. Concorrentes (que alternativas avaliam)
|
||||
20. Propostas Recusadas (e porquê)
|
||||
- [ ] Pesquisa de mercado com fontes (Fase 0)
|
||||
- [ ] P1-P16 referidos explicitamente
|
||||
- [ ] Posicionamento testável, proposta única de valor, missão, visão, valores
|
||||
- [ ] ≥5 nichos (8 pontos) e segmentos com os 20 pontos (≥2 Essencial, 3-4 Standard, todos Completo)
|
||||
- [ ] Pitch canvas + declaração de mudança no mundo
|
||||
- [ ] Pain + Gain original e refinado, narrativa por segmento, mensagem central
|
||||
- [ ] Identidade visual com paleta desta marca em hex
|
||||
- [ ] KPIs com base e metas a 3/6/12 meses
|
||||
- [ ] Capítulos do nível escolhido todos presentes (`estrutura-completa.md`)
|
||||
- [ ] Anexo A gerado; nenhum dado inventado
|
||||
- [ ] `## BRIEFING-LLM` em último, sem placeholders
|
||||
- [ ] Validador a 0 erros; PDF A4 verificado visualmente
|
||||
|
||||
Ver `references/metodologia-acida.md` para contexto e profundidade em cada ponto.
|
||||
## Erros a evitar
|
||||
|
||||
### Fase 5 — Pitch Canvas
|
||||
- Personas genéricas sem nome nem história; segmentos vagos ("PMEs").
|
||||
- Missão e visão de modelo; SWOT vago ("boa qualidade"); headlines do tipo "soluções inovadoras".
|
||||
- KPIs sem meta numérica; proposta de valor com funcionalidades em vez de benefícios; ignorar objeções.
|
||||
- Números, casos, testemunhos, preços ou concorrentes sem fonte.
|
||||
- Garantias de resultado ("ROI garantido") em texto para clientes sem cláusula contratual.
|
||||
- Paleta da Descomplicar® na estratégia de um cliente.
|
||||
- Assinatura antiga: a Descomplicar® assina "Agência de Marketing Digital" (sistema de design de 16-10-2026), não "Aceleração" nem "Crescimento Digital".
|
||||
- PDF em Letter: é sempre A4.
|
||||
|
||||
Estrutura de 5 elementos:
|
||||
- **Para quem:** segmento + problema específico
|
||||
- **O problema:** dor principal na linguagem do cliente
|
||||
- **A solução:** mecanismo único de resolução
|
||||
- **O resultado:** transformação concreta (antes/depois + métrica)
|
||||
- **Por que nós:** razão para acreditar
|
||||
|
||||
Criar também a **Declaração de mudança no mundo** — frase que resume o impacto maior da marca.
|
||||
|
||||
### Fase 6 — Copywriting estratégico
|
||||
|
||||
Sequência obrigatória:
|
||||
|
||||
1. **Questionamento estratégico** — Qual é o objectivo da comunicação? Que transformação prometemos?
|
||||
2. **Pain + Gain** — formulação problema/resultado na linguagem do cliente; depois refinar com especificidades do sector
|
||||
3. **Narrativa por segmento** — fórmula: Problema (dor do público) → Solução (serviços) → Resultado (benefícios concretos)
|
||||
4. **Mensagem central** — 1 frase que toda a equipa sabe de cor
|
||||
5. **Headlines** — por segmento (principal + secundária)
|
||||
|
||||
Ver `references/narrativas-copywriting.md` para templates e exemplos reais.
|
||||
|
||||
### Fase 7 — Documento final + Investimentos
|
||||
|
||||
Completar as secções finais:
|
||||
- **Demonstração dos serviços** — como demonstrar, preparação, follow-up
|
||||
- **Investimentos prioritários** — canais, orçamento, ROI esperado
|
||||
- **KPIs** — baseline + metas a 3m, 6m, 12m
|
||||
- **Inventário de activos** — o que existe, estado, prioridade
|
||||
|
||||
Ver `references/template-documento.md` para a estrutura completa do documento.
|
||||
|
||||
**Checklist de entrega:**
|
||||
- [ ] Pesquisa de mercado feita (Fase 0)
|
||||
- [ ] Proposta de valor única definida
|
||||
- [ ] Missão, Visão, Valores escritos
|
||||
- [ ] Apresentação sumária da empresa e serviços
|
||||
- [ ] Mínimo 5 nichos sectoriais analisados (8 pontos cada) — ver `references/nichos.md`
|
||||
- [ ] Mínimo 2 segmentos psicográficos com 20 pontos completos
|
||||
- [ ] Pitch Canvas preenchido
|
||||
- [ ] Declaração de mudança no mundo
|
||||
- [ ] Pain + Gain (original + refinado)
|
||||
- [ ] Narrativa por segmento (Problema → Solução → Resultado)
|
||||
- [ ] Mensagem central definida
|
||||
- [ ] Investimentos prioritários identificados
|
||||
- [ ] KPIs definidos com metas
|
||||
|
||||
---
|
||||
|
||||
## Referências (carregar conforme necessário)
|
||||
## Referências
|
||||
|
||||
| Ficheiro | Quando carregar |
|
||||
|----------|----------------|
|
||||
| `references/metodologia-acida.md` | Fases 3-4: ACIDA, 20 pontos por segmento |
|
||||
| `references/framework-16ps.md` | Fase 3: fundamentos estratégicos (Bloco A) |
|
||||
| `references/perguntas-briefing.md` | Fase 2: conduzir entrevista cliente |
|
||||
| `references/narrativas-copywriting.md` | Fase 6: copywriting, Pain+Gain, narrativas |
|
||||
| `references/template-documento.md` | Fase 7: estrutura completa do documento |
|
||||
| `references/nichos.md` | Fase 4: análise sectorial dos 10 nichos PT/EU (mínimo 5 obrigatórios) |
|
||||
|---|---|
|
||||
| `references/estrutura-completa.md` | Sempre: ordem canónica, níveis, mapa 16Ps → capítulos |
|
||||
| `references/prompt-redacao-parte.md` | Nível Completo: contexto e tarefa de cada subagente |
|
||||
| `references/perguntas-briefing.md` | Fase 2 |
|
||||
| `references/framework-16ps.md` | Fase 3 |
|
||||
| `references/metodologia-acida.md` | Fases 3-4 |
|
||||
| `references/nichos.md` | Fase 4: 10 nichos PT/UE, 8 pontos cada |
|
||||
| `references/template-documento.md` | Guia de escrita de cada secção (20 pontos em detalhe, pitch canvas, KPIs, inventário) |
|
||||
| `references/exemplo-persona-20d.md` | Fase 4: exemplo de segmento com as 20 dimensões |
|
||||
| `references/narrativas-copywriting.md` | Fase 6 |
|
||||
| `scripts/montar.py`, `scripts/render_pdf.py`, `assets/marca-descomplicar.json` | Fase 8 |
|
||||
|
||||
---
|
||||
Exemplos reais: `99-Arquivo/Manual-OwnCloud-Descomplicar/exemplos estrategias de marca/`
|
||||
(Carritools é o mais completo dos clientes) e a Estratégia Descomplicar® v3.0 em
|
||||
`Cloud/Descomplicar/Planeamento/Estrategia-2026/DESCOMPLICAR_ESTRATEGIA_MARCA_V3.md`.
|
||||
|
||||
## Contexto do serviço
|
||||
|
||||
- **Código:** EST-MRK-010
|
||||
- **Preço:** 900 EUR
|
||||
- **Prazo médio:** 30h de trabalho
|
||||
- **Entregáveis:** Documento estratégico completo, dashboard personas, narrativa de marca, apresentação executiva editável, guia de implementação, sessão de alinhamento com equipa
|
||||
- **Suporte pós-entrega:** WhatsApp 1 mês
|
||||
|
||||
Complementar com Branding WOW (BRAND-ESS/DIG/COM: 1.800–4.500 EUR) se o cliente precisar de identidade visual.
|
||||
|
||||
---
|
||||
- Código EST-MRK-010 · 900€ fixo · cerca de 30 horas (catálogo, outubro de 2026).
|
||||
- Entregáveis: documento estratégico, personas, narrativa, apresentação executiva editável, plano de implementação, sessão de alinhamento com a equipa, suporte por WhatsApp durante 1 mês.
|
||||
- Identidade visual completa: Branding WOW (1 800€ a 4 500€).
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
Lido antes de executar. Acrescentar uma linha por erro corrigido.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
{"date":"2026-10-17","issue":"Skill dizia-se alinhada com a SPEC (GATE-HOOK) mas não pedia o BRIEFING-LLM; a estratégia Descomplicar v3 reprovou no validador","fix":"Fase 8 obriga a escrever o BRIEFING-LLM e a correr o validador antes de entregar","source":"auto"}
|
||||
{"date":"2026-10-17","issue":"Subagentes copiaram identificadores e pormenores de incidentes de segurança para a SWOT","fix":"Contrato de redação proíbe; orquestrador revê antes de montar","source":"auto"}
|
||||
{"date":"2026-10-17","issue":"PDF saiu com Liberation Sans em vez das fontes da marca: woff2 subset sem € e faces de recurso na mesma família com pesos diferentes","fix":"render_pdf.py usa família de recurso separada e avisa se houver fontes do sistema no PDF","source":"auto"}
|
||||
{"date":"2026-10-17","issue":"Partes escritas em paralelo usaram durações e segmentos diferentes (diagnóstico 30 vs 45 min, 5 vs 6 segmentos)","fix":"Fixar nomes partilhados no bloco 'Decisões já tomadas' antes de lançar","source":"auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"_nota": "Config de exemplo para render_pdf.py e montar.py. Só para estratégias DA PRÓPRIA Descomplicar®. Para clientes, copiar e trocar cores, fontes, logótipo e textos pelos da marca do cliente (SPEC C4). Caminhos absolutos do posto 'desktop'/'hp' (Hub em /media/ealmeida/Dados).",
|
||||
"marca": "Descomplicar®",
|
||||
"titulo_documento": "Estratégia de marca",
|
||||
"rodape": "Descomplicar® · Estratégia de marca",
|
||||
"capa_eyebrow": "Documento estratégico · versão 3.0",
|
||||
"capa_titulo": "Estratégia<br>de marca",
|
||||
"capa_slogan": "Criamos Resultados!",
|
||||
"capa_assinatura": "Descomplicar® - Agência de Marketing Digital",
|
||||
"capa_data": "outubro de 2026",
|
||||
"logo_capa": "/media/ealmeida/Dados/Hub/04-Stack/02.04-Sistemas/DesignSystem-Descomplicar/sistema/assets/Logos/assinatura-vertical-white.svg",
|
||||
"fonte_titulos": "Montserrat",
|
||||
"fonte_texto": "Roboto",
|
||||
"fallback": "'DCArrows','DCFallback',sans-serif",
|
||||
"fontes": [
|
||||
{"family": "Montserrat", "src": "/media/ealmeida/Dados/Hub/04-Stack/02.04-Sistemas/DesignSystem-Descomplicar/sistema/fonts/Montserrat-latin-wght-normal.woff2"},
|
||||
{"family": "Roboto", "src": "/media/ealmeida/Dados/Hub/04-Stack/02.04-Sistemas/DesignSystem-Descomplicar/sistema/fonts/Roboto-latin-wght-normal.woff2"},
|
||||
{"family": "Roboto", "style": "italic", "src": "/media/ealmeida/Dados/Hub/04-Stack/02.04-Sistemas/DesignSystem-Descomplicar/sistema/fonts/Roboto-latin-wght-italic.woff2"},
|
||||
{"family": "DCFallback", "weight": "100 500", "src": "/media/ealmeida/Dados/Dev/SEO-Reports/public/fonts/pdf/Roboto-Regular.ttf"},
|
||||
{"family": "DCFallback", "weight": "600 900", "src": "/media/ealmeida/Dados/Dev/SEO-Reports/public/fonts/pdf/Roboto-Bold.ttf"},
|
||||
{"family": "DCArrows", "src": "/media/ealmeida/Dados/Dev/SEO-Reports/public/fonts/pdf/Montserrat-Regular.ttf", "unicode_range": "U+2190-21FF"}
|
||||
],
|
||||
"cores": {
|
||||
"escura": "#0e0d0b",
|
||||
"clara_texto": "#f5f1e8",
|
||||
"primaria": "#cc8d00",
|
||||
"acento_texto": "#7a5400",
|
||||
"texto": "#1a1814",
|
||||
"texto_secundario": "#5c5750",
|
||||
"suave": "#faf4e6",
|
||||
"linha": "#e6e1d8",
|
||||
"alternada": "#faf8f3",
|
||||
"aviso_fundo": "#fdecc8",
|
||||
"aviso_texto": "#5a3d00"
|
||||
},
|
||||
"frontmatter": {
|
||||
"type": "Document",
|
||||
"title": "Descomplicar® · Estratégia de marca",
|
||||
"codigo": "EST-MRK-010",
|
||||
"version": "3.0",
|
||||
"status": "rascunho-para-validacao",
|
||||
"elaborado": "Descomplicar® - Agência de Marketing Digital"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
# Estrutura completa — Estratégia de Marca Descomplicar® (SPEC v2.0)
|
||||
|
||||
Ordem canónica do documento de autoria. Junta, sem perder nenhum, todos os
|
||||
elementos usados nas estratégias entregues (Carritools MCT, Espiral Sénior ESP,
|
||||
Loja da Maria LJM, Sintricare SNT, Water Control WTC, Solar FV SFV), no modelo
|
||||
ACIDA v3, no prompt 40Ps, na skill `brand-strategy` (40 pontos, fundida aqui) e
|
||||
na Estratégia de Marca Descomplicar® v3.0 (17-10-2026), que é o exemplo de
|
||||
referência do nível Completo.
|
||||
|
||||
Exemplo de referência (nível Completo, 34 capítulos, 192 páginas A4; anterior a esta
|
||||
estrutura, junta os 20 pontos nos caps. 9-11 e não tem capítulo de jornada):
|
||||
`Cloud/Descomplicar/Planeamento/Estrategia-2026/DESCOMPLICAR_ESTRATEGIA_MARCA_V3.md` (+ `.pdf`).
|
||||
Exemplo de profundidade por capítulo (cliente): `99-Arquivo/Manual-OwnCloud-Descomplicar/exemplos estrategias de marca/MCT Estratégia de Marca Carritools.md`.
|
||||
|
||||
A ordem vai do contexto para a ação: perceber o mercado e a empresa, fixar os
|
||||
fundamentos, conhecer o público, definir a expressão da marca, desenhar a oferta,
|
||||
planear a comunicação e o crescimento, e por fim medir e implementar.
|
||||
|
||||
## Níveis de profundidade
|
||||
|
||||
| Nível | Quando | O que entra | Público |
|
||||
|---|---|---|---|
|
||||
| Essencial | Produto próprio, iteração rápida, teste de posicionamento | Cabeçalho, caps. 2-4 resumidos, 5-8, 9 (≥5 nichos), 10 (≥2 segmentos com 20 pontos), 16, 17, 20, 27, 32, anexo A, BRIEFING-LLM | 2-3 segmentos |
|
||||
| Standard (default) | Cliente EST-MRK-010 | Essencial + 1, 11, 13-15, 18, 19, 21, 23, 35, 36 (resumo), anexos B e D | 3-4 segmentos, 20 pontos cada |
|
||||
| Completo | Pedido "versão completa", marca da casa, branding WOW, cliente com várias linhas de negócio | Todos os capítulos e anexos abaixo | Todos os segmentos com 20 pontos + secundários e prescritores |
|
||||
|
||||
Coluna "Nível" abaixo: E = Essencial, S = Standard, C = Completo. Um capítulo
|
||||
marcado S entra em S e C; marcado E entra nos três.
|
||||
|
||||
## Cabeçalho (todos os níveis)
|
||||
|
||||
| Elemento | Conteúdo | Fonte de exemplo |
|
||||
|---|---|---|
|
||||
| Frontmatter | title, cliente, codigo EST-MRK-010, versao, data, elaborado ("Descomplicar® - Agência de Marketing Digital"), status `rascunho-para-validacao` / `aprovado` | template-documento |
|
||||
| Capa | Marca, "Estratégia de marca", assinatura ou slogan do cliente | todos |
|
||||
| Declaração de impacto | Uma frase de 10-15 palavras (a mudança no mundo) | template v3, LJM ("Alegria todo o dia"), WTC ("Cada gota conta") |
|
||||
| Índice | Partes e capítulos | todos |
|
||||
| Resumo executivo | Tabela de 1 página: assinatura, slogan, missão, visão, posicionamento, proposta única de valor, método, persona principal, oferta de entrada, prioridade imediata, cada um com o capítulo | v3.0 |
|
||||
| Sobre este documento | Fontes usadas, decisões tomadas quando as fontes divergem, convenções (o que significa `[a validar]`) | v3.0 |
|
||||
|
||||
## Parte I. Contexto (P6 Pesquisa)
|
||||
|
||||
| Cap. | Título | Contém | P / 40Ps | Nível | Fonte de exemplo |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Apresentação | Quem é a empresa (identidade legal, fundação, equipa, localização), histórico e evolução, como opera, serviços e produtos em resumo, estado atual | P8 resumo; Apresentação institucional | S | SNT, WTC, template v3, v3.0 |
|
||||
| 2 | Enquadramento do mercado e contexto social | Contexto do sector, dimensão, tendências, mudanças sociais e tecnológicas, enquadramento legal e regulatório, cultura e comunidade do sector | P6; Possibilidades | E (resumo) / C | MCT 1.1-1.5, LJM, ESP |
|
||||
| 3 | Concorrência e oportunidades de diferenciação | Tipos de concorrente e posicionamento de cada tipo, matriz comparativa, propostas recusadas e porquê, oportunidades de diferenciação com a condição para serem credíveis | P4, P6 | E (resumo) / C | MCT 1.3-1.6 |
|
||||
| 4 | Análise SWOT | Forças, fraquezas, oportunidades, ameaças com evidência; cruzamento estratégico (SO, ST, WO, WT) e prioridades | P6 | E (resumo) / C | LJM |
|
||||
|
||||
## Parte II. Fundamentos (P1-P4)
|
||||
|
||||
| Cap. | Título | Contém | P | Nível | Fonte |
|
||||
|---|---|---|---|---|---|
|
||||
| 5 | Problema, causa e propósito | P1 em 3 níveis (superficial, real, raiz), a causa da marca, propósito (porquê, como, o quê), manifesto (opcional em E/S), lema interno | P1, P2 | E | WTC ("A nossa causa"), v3.0 |
|
||||
| 6 | Missão, visão, valores e objetivos | Missão, visão com metas datadas, valores com comportamentos concretos ("fazemos / não fazemos"), objetivos estratégicos com indicador, base e meta | P2, P16 | E | todos |
|
||||
| 7 | Posicionamento | Categoria e papel, declaração de posicionamento testável (formato clássico + 1 frase + versão oral), especialização vs. competição pelo preço, mapa de posicionamento, oportunidades | P4 | E | LJM, MCT 1.6 |
|
||||
| 8 | Proposta de valor | Proposta única de valor, dores e como a marca as resolve (tabela), diferenciais, benefícios tangíveis e benefícios por camada/segmento, expectativas emocionais e racionais, USP, escada de valor | P3 | E | MCT 3, SNT, WTC |
|
||||
|
||||
## Parte III. Públicos (P5-P7)
|
||||
|
||||
| Cap. | Título | Contém | P | Nível | Fonte |
|
||||
|---|---|---|---|---|---|
|
||||
| 9 | Nichos e segmentos | ≥5 nichos sectoriais com os 8 pontos (`nichos.md`); segmentos primário, secundário e terciário; critérios de cliente ideal (obrigatórios, desejáveis, sinais de alerta); anti-persona; públicos secundários (prescritores, parceiros, talento) | P5 | E | MCT 2, WTC, SNT |
|
||||
| 10 | Análise de 20 pontos por segmento | Para cada segmento, os 20 pontos por ordem (ver lista abaixo), com o ponto 16 (objeções) sempre acompanhado do tratamento | P5-P7 | E (≥2 seg.) / S (3-4) / C (todos) | template-documento §5, ESP, WTC |
|
||||
| 11 | Personas e dashboard de personas | Persona principal com nome, biografia, objetivos, frustrações, comportamento digital, processo de decisão, citações típicas, mapa de empatia; personas secundárias; dashboard (uma ficha por persona) | P7 | S | 40Ps [8], v3.0 |
|
||||
| 12 | Jornada e experiência do cliente | Fases da jornada (descoberta, consideração, decisão, onboarding, fidelização), pontos de contacto, emoção e fricção por fase | P9, P10 | C | brand-strategy 23b |
|
||||
|
||||
Os 20 pontos (ordem fixa, cabeçalhos com estes nomes para o validador os
|
||||
encontrar): Perfil demográfico · Perfil psicográfico · Dores · Anseios · Desejos ·
|
||||
Frustrações · Preocupações · Medos · Inimigos · Linguagem · Como procuram
|
||||
ajuda/informação · Canais digitais · Estilo de decisão · Mudanças · Resistência à
|
||||
mudança · Objeções (+ como ultrapassar) · Forma de gerar emoção · Argumentos ·
|
||||
Concorrentes · Propostas recusadas.
|
||||
|
||||
## Parte IV. Identidade e expressão
|
||||
|
||||
| Cap. | Título | Contém | Nível | Fonte |
|
||||
|---|---|---|---|---|
|
||||
| 13 | Personalidade da marca | Arquétipo, traços (é / não é), símbolo e o que representa | S | MCT 4.4 |
|
||||
| 14 | Voz, tom e estilo de comunicação | Princípios de voz, tom por contexto (site, propostas, redes, suporte, crise), regras de escrita, léxico a usar e a banir, tabela "em vez de / escrever" | S | MCT 4.5-4.6, ESP "Voz da marca" |
|
||||
| 15 | Narrativa e história da marca | Origem, porquê do nome, o cliente como herói, narrativa por segmento (Problema → Solução → Resultado) | S | ESP, SNT, WTC |
|
||||
| 16 | Identidade visual | Paleta DESTA marca em hex (primária, secundária, neutros, proporções), tipografia, logótipo e versões, margens e mínimos, proibições, imagem, iconografia, acessibilidade. Nunca a paleta da Descomplicar® num cliente | E (obrigatório, SPEC C4) | MCT 4.7 |
|
||||
| 17 | Assinaturas, slogan e mensagens-chave | Assinatura, slogan/tagline e regras de uso, mensagem central (≤10 palavras), mensagens-chave institucionais, mensagens e headlines por segmento, elevator pitch de 10/30/60 segundos | E | MCT 10, template-documento §7.4-7.5 |
|
||||
|
||||
## Parte V. Oferta e venda (P8-P10, P15)
|
||||
|
||||
| Cap. | Título | Contém | P | Nível | Fonte |
|
||||
|---|---|---|---|---|---|
|
||||
| 18 | Produtos, serviços e metodologia | Arquitetura da oferta, catálogo por área, casos de uso, metodologia de entrega, processos críticos, placement (canais de distribuição, pontos de venda, presença física e digital) | P8, P9, P10 | S | SNT "Serviços", v3.0 |
|
||||
| 19 | Preço e modelo comercial | Lógica de preço, pacotes, avenças, preços de referência COM fonte, política de descontos e pagamento, garantias (só com cláusula contratual) | P15 | S | v3.0 |
|
||||
| 20 | Pitch canvas | Porque é útil e como usar; declaração de impacto/compromisso; problema e resultado (Pain + Gain); solução; demonstração; aspetos únicos; relações; parcerias; pistas de futuro e tecnologia; atração de clientes; investimento; declaração de mudança no mundo | P3, P4 | E | SNT, template v3 |
|
||||
| 21 | Venda consultiva e demonstração | Etapas do primeiro contacto ao fecho, diagnóstico, guião de demonstração (preparação, introdução, demonstração ao vivo, casos de uso, perguntas, follow-up), materiais de apoio, FAQ | P10 | S | WTC "Demonstração", brand-strategy 36 |
|
||||
|
||||
## Parte VI. Comunicação e canais (P14)
|
||||
|
||||
| Cap. | Título | Contém | Nível | Fonte |
|
||||
|---|---|---|---|---|
|
||||
| 22 | Objetivos de comunicação | Consciencialização, educação, envolvimento, confiança e credibilidade, conversão, retenção, diferenciação, advocacia; um indicador por objetivo | C | ESP |
|
||||
| 23 | Canais | Website (função, mensagens-chave, estratégia, frequência, estrutura de menu e páginas), redes sociais por rede, email marketing, eventos e feiras, material impresso, vídeo e áudio, relações públicas, proximidade (WhatsApp, comunidade) | S | MCT 5, WTC, ESP "Estrutura do site" |
|
||||
| 24 | Marketing de conteúdo e política editorial | Pilares, tipos de conteúdo, secções do blog, lista de artigos iniciais com intenção, princípios editoriais, CTA de fim de artigo | C | ESP, MCT 6.1 |
|
||||
| 25 | SEO e GEO | Clusters de palavras-chave (sem volumes inventados), on-page, técnico, link building, presença em respostas de IA | C | MCT 6.2 |
|
||||
| 26 | Publicidade online | Por plataforma: importância, estratégia, formatos, frequência e orçamento; diferenciação dos canais | C | MCT 7 |
|
||||
| 27 | Copywriting | Questionamento estratégico (10 perguntas) respondido, Pain + Gain original e refinado, exemplos de CTA, estrutura da página de captura | E | SNT "Resumo estratégico", WTC, ESP |
|
||||
| 28 | Calendário de conteúdos | Cadência por canal (diária, semanal, mensal), temas por mês ou trimestre | C | MCT 5.6 |
|
||||
|
||||
## Parte VII. Crescimento (P11-P13, Projeção)
|
||||
|
||||
| Cap. | Título | Contém | Nível | Fonte |
|
||||
|---|---|---|---|---|
|
||||
| 29 | Parcerias | Tipos (tecnológicas, distribuição, prescritores, associações, criadores de conteúdo), objetivo e critério de cada tipo | C | MCT 8, WTC |
|
||||
| 30 | Expansão | Novos mercados geográficos, novos serviços ou produtos, cenários alternativos, critérios de decisão para avançar | C | LJM (Espanha, dropshipping), MCT 8.4 |
|
||||
| 31 | Atração de clientes e prova social | Casos de sucesso e testemunhos (só com autorização), workshops e seminários, ofertas de entrada, presença em comunidades, programa de referência | C | WTC "Atração de clientes" |
|
||||
|
||||
## Parte VIII. Medição e implementação (P12, P16)
|
||||
|
||||
| Cap. | Título | Contém | Nível | Fonte |
|
||||
|---|---|---|---|---|
|
||||
| 32 | KPIs | Por área (site e SEO, redes, email, vendas, retenção): definição, fonte de dados, base, metas a 3/6/12 meses | E | MCT 9.1, SPEC P16 |
|
||||
| 33 | Testes A/B e otimização contínua | Objetivos, variáveis, hipóteses, duração, análise | C | MCT 9.2, WTC |
|
||||
| 34 | Sistema de relatórios | Semanal, mensal, trimestral: quem lê, o que contém, ferramenta | C | MCT 9.3 |
|
||||
| 35 | Investimentos prioritários e inventário de ativos | Prioridades impacto/esforço, orçamento por canal, inventário de ativos de marketing (existe, estado, prioridade) | S | template-documento §9, §11 |
|
||||
| 36 | Roteiro de implementação | Fases a 90 dias com entregáveis e responsáveis por papel, visão a 12 meses, recursos necessários, riscos e mitigação, notas de implementação (sessão de alinhamento, validação com clientes) | S (resumo) / C | v3.0, template-documento |
|
||||
|
||||
## Anexos e secção final
|
||||
|
||||
| Elemento | Contém | Nível |
|
||||
|---|---|---|
|
||||
| A. Pontos a validar | Lista gerada de todas as marcas `[a validar: …]`, por capítulo (o script `montar.py` gera-a) | todos |
|
||||
| B. Glossário | Termos técnicos e nomes internos usados no documento | S |
|
||||
| C. Complementos do sector | Enquadramento legal detalhado, informações operacionais, serviços detalhados (só quando o sector o pede) | C |
|
||||
| D. Histórico de alterações | Versão, data, alteração | todos |
|
||||
| `## BRIEFING-LLM` | Bloco-contrato YAML (`CONTRATO-OUTPUT-LLM.md`). **Última secção do ficheiro**, depois dos anexos | todos (obrigatório) |
|
||||
|
||||
## Mapa 16Ps → capítulos
|
||||
|
||||
| P | Capítulos |
|
||||
|---|---|
|
||||
| P1 Problema | 5 |
|
||||
| P2 Propósito | 5, 6 |
|
||||
| P3 Proposta de valor | 8, 20 |
|
||||
| P4 Posicionamento | 3, 7 |
|
||||
| P5 Público-alvo | 9, 10 |
|
||||
| P6 Pesquisa | 2, 3, 4 |
|
||||
| P7 Persona | 10, 11 |
|
||||
| P8 Produto/serviço | 1, 18 |
|
||||
| P9 Placement | 12, 18, 23 |
|
||||
| P10 Processos críticos | 18, 21 |
|
||||
| P11 Pessoas | 1, 36 (recursos) |
|
||||
| P12 Planeamento | 28, 36 |
|
||||
| P13 Parcerias | 29 |
|
||||
| P14 Promoção | 22-27 |
|
||||
| P15 Preço | 19 |
|
||||
| P16 Performance | 6, 32-34 |
|
||||
|
||||
Escrever explicitamente "(P1)", "(P2)"… nos títulos ou na primeira linha de cada
|
||||
capítulo: o validador procura as referências P1-P16 no texto.
|
||||
@@ -0,0 +1,159 @@
|
||||
# Exemplo de Persona — 20 Dimensoes
|
||||
|
||||
Baseado no padrao AcidaOS (o mais profundo dos exemplos Descomplicar).
|
||||
|
||||
---
|
||||
|
||||
## Segmento A — O Empreendedor Sobrecarregado
|
||||
|
||||
**Prioridade:** Alta
|
||||
**Dimensao estimada:** 45% do mercado-alvo
|
||||
|
||||
### 1. Perfil demografico
|
||||
- Idade: 35-50 anos
|
||||
- Genero: predominantemente masculino (60/40)
|
||||
- Localizacao: areas urbanas, Portugal continental
|
||||
- Educacao: licenciatura ou equivalente profissional
|
||||
- Rendimento: 25.000-60.000 EUR/ano (empresa factura 100K-500K)
|
||||
- Dimensao empresa: 2-15 colaboradores
|
||||
- Sector: servicos, comercio, consultoria
|
||||
|
||||
### 2. Perfil psicografico
|
||||
- Trabalhador incansavel, faz tudo sozinho
|
||||
- Valoriza independencia acima de tudo
|
||||
- Resistente a delegar por medo de perda de controlo
|
||||
- Pragmatico — quer solucoes que funcionem, nao teoria
|
||||
- Orgulho no que construiu mas frustrado com a estagnacao
|
||||
- Ceptico em relacao a "solucoes magicas"
|
||||
|
||||
### 3. Dores
|
||||
- "Trabalho 12 horas por dia e o negocio nao cresce"
|
||||
- Sem tempo para pensar estrategicamente
|
||||
- Informacao dispersa (Excel, papel, cabeca)
|
||||
- Clientes perdidos por falta de follow-up
|
||||
- Nao sabe quanto lucra realmente
|
||||
|
||||
### 4. Anseios
|
||||
- Ter tempo para a familia sem o negocio parar
|
||||
- Ver o negocio crescer de forma previsivel
|
||||
- Sentir-se no controlo em vez de apagar incendios
|
||||
- Ser reconhecido como empresario de sucesso
|
||||
|
||||
### 5. Desejos
|
||||
- Um sistema que "trabalhe por ele" nas tarefas repetitivas
|
||||
- Dashboard simples que mostre como esta o negocio
|
||||
- Processo de vendas que nao dependa so dele
|
||||
- Facturacao automatica sem erros
|
||||
|
||||
### 6. Frustracoes
|
||||
- Ja tentou CRMs e desistiu (demasiado complexos)
|
||||
- Paga software que nao usa
|
||||
- Funcionarios nao adoptam ferramentas novas
|
||||
- Contabilista so aparece no fim do mes
|
||||
|
||||
### 7. Preocupacoes
|
||||
- "Se eu parar, o negocio para"
|
||||
- Concorrencia a crescer enquanto ele estagna
|
||||
- Legislacao fiscal cada vez mais complexa
|
||||
- Nao estar a usar a tecnologia como devia
|
||||
|
||||
### 8. Medos
|
||||
- Perder clientes para concorrentes mais organizados
|
||||
- Nao conseguir pagar salarios num mes mau
|
||||
- Ser ultrapassado pela digitalizacao
|
||||
- Investir em tecnologia e nao ter retorno
|
||||
|
||||
### 9. Inimigos
|
||||
- Burocracia (AT, Seguranca Social, RGPD)
|
||||
- Empresas grandes que competem com precos impossíveis
|
||||
- Consultores que vendem teoria sem resultados
|
||||
- O proprio perfeccionismo que impede de delegar
|
||||
|
||||
### 10. Linguagem
|
||||
- "Nao tenho tempo para isso"
|
||||
- "Ja tentei e nao funcionou"
|
||||
- "Quanto e que isso custa?"
|
||||
- "Mostra-me resultados, nao apresentacoes"
|
||||
- Informal, directo, sem paciencia para jargao
|
||||
|
||||
### 11. Como procuram ajuda
|
||||
- Perguntam a outros empresarios (boca-a-boca)
|
||||
- Google quando ha um problema urgente
|
||||
- LinkedIn para conteudo de negocios
|
||||
- Contabilista como conselheiro informal
|
||||
- Nao frequentam eventos/conferencias (sem tempo)
|
||||
|
||||
### 12. Canais digitais
|
||||
- WhatsApp (principal — pessoal e profissional misturado)
|
||||
- Facebook (pessoal, menos profissional)
|
||||
- LinkedIn (passivo — le mas nao publica)
|
||||
- Email (verifica 2-3x por dia, ignora newsletters)
|
||||
- Instagram (pessoal, nao profissional)
|
||||
|
||||
### 13. Estilo de decisao
|
||||
- Decide rapido quando ve valor claro
|
||||
- Precisa de prova social (outro empresario a recomendar)
|
||||
- Quer testar antes de comprometer
|
||||
- Preco e factor mas nao o unico — valor percebido importa mais
|
||||
- Prefere relacao pessoal a processo de vendas formal
|
||||
|
||||
### 14. Mudancas que procuram
|
||||
- De "faz-tudo" para gestor que delega
|
||||
- De reactivo (apagar incendios) para proactivo
|
||||
- De Excel para sistema integrado
|
||||
- De "acho que esta bem" para "sei que esta bem" (dados)
|
||||
|
||||
### 15. Resistencia a mudanca
|
||||
- "Sempre fiz assim e funcionou"
|
||||
- Medo da curva de aprendizagem
|
||||
- Experiencias negativas anteriores com tecnologia
|
||||
- Nao quer depender de fornecedores externos
|
||||
- Equipa resiste a novas ferramentas
|
||||
|
||||
### 16. Objecoes tipicas
|
||||
- "E caro demais para o meu negocio"
|
||||
- "Nao tenho tempo para implementar"
|
||||
- "Ja tentei um CRM e ninguem usou"
|
||||
- "O meu negocio e diferente, isso nao se aplica"
|
||||
- "Prefiro investir em publicidade directa"
|
||||
|
||||
### 17. Forma de gerar emocao
|
||||
- Mostrar quanto tempo perde por semana em tarefas repetitivas (quantificar)
|
||||
- Historias de empresarios semelhantes que transformaram o negocio
|
||||
- Demonstrar em 5 minutos o que o sistema faz automaticamente
|
||||
- Falar da familia — "imagina sair as 18h todos os dias"
|
||||
|
||||
### 18. Argumentos de venda
|
||||
- ROI em 3 meses (calculado com dados do negocio)
|
||||
- "Nao precisa de saber tecnologia — nos tratamos de tudo"
|
||||
- Garantia de satisfacao ou devolucao
|
||||
- Implementacao faseada (nao muda tudo de uma vez)
|
||||
- Suporte por WhatsApp (o canal dele)
|
||||
|
||||
### 19. Concorrentes percebidos
|
||||
- "O meu sobrinho faz-me um website"
|
||||
- Freelancers no OLX/Facebook
|
||||
- Ferramentas gratuitas (Google Sheets, Canva)
|
||||
- PHC/Sage (que ja tem e nao usa)
|
||||
- "Nao investir" (o concorrente mais forte)
|
||||
|
||||
### 20. Propostas recusadas
|
||||
- Pacotes anuais sem flexibilidade
|
||||
- Solucoes que requerem formacao extensa
|
||||
- Propostas sem resultados tangíveis prometidos
|
||||
- Precos acima de 200 EUR/mes sem trial
|
||||
- Vendedores que nao entendem o sector especifico
|
||||
|
||||
---
|
||||
|
||||
## Formato resumido (para nivel Essencial — 8 dimensoes)
|
||||
|
||||
Quando o nivel e Essencial, usar apenas:
|
||||
1. Perfil demografico
|
||||
2. Perfil psicografico
|
||||
3. Dores
|
||||
4. Desejos
|
||||
5. Objecoes tipicas
|
||||
6. Canais digitais
|
||||
7. Estilo de decisao
|
||||
8. Argumentos de venda
|
||||
@@ -0,0 +1,89 @@
|
||||
# Prompt de redação por parte (nível Completo)
|
||||
|
||||
No nível Completo o documento tem 60 000 a 90 000 palavras. Um só agente não o
|
||||
escreve com qualidade numa passagem. Divide-se por partes (I a VIII de
|
||||
`estrutura-completa.md`) e entrega-se cada parte a um subagente, em paralelo. O
|
||||
orquestrador fixa as decisões, junta, revê e gera o PDF.
|
||||
|
||||
Divisão que funcionou (Estratégia Descomplicar® v3.0, 17-10-2026, 7 subagentes,
|
||||
cerca de 15 minutos): I · II · III · IV · V · VI · VII+VIII.
|
||||
|
||||
## Antes de lançar (orquestrador)
|
||||
|
||||
1. Ler as fontes principais e decidir os conflitos que afetam várias partes:
|
||||
assinatura e slogan, nome da categoria, garantias, lista e ordem dos
|
||||
segmentos, oferta de entrada (nome e duração), formato monetário.
|
||||
2. Escrever essas decisões no bloco "Decisões já tomadas" abaixo. Subagentes
|
||||
não rediscutem decisões; registam divergências em "Nota de fonte".
|
||||
3. Mandar os subagentes alinharem entre si os nomes partilhados (segmentos,
|
||||
ofertas, canais) por mensagem direta, sem editar ficheiros alheios.
|
||||
|
||||
## Contexto partilhado (copiar para o campo de contexto de todos os subagentes)
|
||||
|
||||
```markdown
|
||||
# Goal
|
||||
Escrever a Estratégia de Marca de <MARCA> (<sector>, <país>), nível Completo.
|
||||
Cada subagente escreve UMA parte; o orquestrador junta.
|
||||
|
||||
# Estrutura global (contrato; numeração fixa)
|
||||
<colar a lista de capítulos de references/estrutura-completa.md, Partes I a VIII,
|
||||
com o "Contém" de cada capítulo>
|
||||
|
||||
# Fontes (ler as relevantes; NÃO inventar factos)
|
||||
- Briefing e notas da entrevista: <caminho>
|
||||
- Pesquisa de mercado (Fase 0): <caminho>/Pesquisas/sintese-mercado.md
|
||||
- Material do cliente (site, catálogo, propostas, manual de marca): <caminhos/URLs>
|
||||
- Desk CRM / OKF do cliente: <ids ou caminhos>
|
||||
- Exemplo de profundidade: 99-Arquivo/Manual-OwnCloud-Descomplicar/exemplos estrategias de marca/MCT Estratégia de Marca Carritools.md (formato, não conteúdo)
|
||||
- Dados externos: só fontes primárias (INE, Eurostat, Comissão Europeia, entidades
|
||||
reguladoras, associações do sector); cada número com link numa nota no fim do capítulo.
|
||||
|
||||
# Decisões já tomadas (aplicar, não rediscutir)
|
||||
- Assinatura / slogan / categoria: <…>
|
||||
- Segmentos (nome e ordem): <…>
|
||||
- Oferta de entrada: <…>
|
||||
- Garantias: só as que existem em contrato; promessas de resultado não entram em texto para clientes.
|
||||
- Onde as fontes divergem, prevalece a mais recente; registar numa linha "Nota de fonte" no fim do capítulo.
|
||||
|
||||
# Regras de escrita
|
||||
- PT-PT, Acordo Ortográfico de 1990, zero brasileirismos (equipa, registo, ecrã, telemóvel, utilizador, planeamento).
|
||||
- Copy dirigido ao cliente final em 3.ª pessoa de cortesia ("a sua empresa"); nunca "você" fora de citações.
|
||||
- Títulos em frase. `## N. Título` para capítulos, `### N.M` para secções, `####` se preciso. Não escrever o título da Parte.
|
||||
- Indicar o P correspondente na primeira linha do capítulo, ex.: "(P4)".
|
||||
- Sem emoji, sem travessões (— ou –) como pausa, sem negrito no início de cada item de lista, sem frases-feitas ("alavancar", "no panorama atual", "não é X, é Y", perguntas retóricas respondidas logo a seguir).
|
||||
- Moeda: 1 250€ (valor, espaço de milhar, símbolo colado). Datas por extenso: 16 de outubro de 2026.
|
||||
- Concorrentes: no documento interno descrever por tipo; nomes só se vierem das fontes e nunca em copy ou mensagens destinadas a material público.
|
||||
- Nunca inventar números, clientes, casos, preços, testemunhos ou concorrentes. Se o dado faltar, escrever o elemento na mesma e marcar `[a validar: o que falta]`.
|
||||
- Casos e testemunhos de clientes só com autorização registada; sem ela, `[a validar: autorização de <cliente>]`.
|
||||
- Detalhes de incidentes de segurança, credenciais e dados pessoais nunca entram no documento.
|
||||
- Não repetir capítulos de outras partes: escrever "ver capítulo N".
|
||||
|
||||
# Entrega
|
||||
Escrever em `local://marca/parte-<romano>.md` só os capítulos atribuídos.
|
||||
Não criar nem alterar mais nenhum ficheiro, não correr builds.
|
||||
Resposta final: nº de palavras, lista de `[a validar]`, notas de fonte, decisões tomadas que o orquestrador deve conhecer.
|
||||
```
|
||||
|
||||
## Tarefa por subagente (um por parte)
|
||||
|
||||
```markdown
|
||||
# Target
|
||||
Parte <romano>. <nome>: capítulos <N> a <M>. Ficheiro: local://marca/parte-<romano>.md.
|
||||
|
||||
# Change
|
||||
- Cap. N: <o que entra, tirado de estrutura-completa.md, adaptado ao cliente>
|
||||
- …
|
||||
|
||||
# Acceptance
|
||||
Capítulos N-M completos, cada afirmação factual rastreável a fonte interna ou a nota com link; `[a validar]` onde faltar dado.
|
||||
```
|
||||
|
||||
## Depois de receber as partes (orquestrador)
|
||||
|
||||
1. Ler os relatórios: decisões tomadas por cada subagente, divergências entre
|
||||
partes (ex.: duração do diagnóstico, segmentos) e corrigi-las.
|
||||
2. Procurar e retirar: detalhes de incidentes, caminhos de relatórios internos
|
||||
sensíveis, nomes de concorrentes em copy, promessas sem cláusula.
|
||||
3. Correr `scripts/montar.py` (junta, cria o anexo A) e escrever à mão a
|
||||
introdução (resumo executivo e "Sobre este documento") e o `## BRIEFING-LLM`.
|
||||
4. Validar e gerar o PDF (ver SKILL.md, Fase 8).
|
||||
@@ -1,7 +1,7 @@
|
||||
# Template: Documento de Estratégia de Marca
|
||||
|
||||
Estrutura completa do documento entregável ao cliente. Baseado nos projectos SFV, LJM, MCT, Espiral Senior e Sintricare.
|
||||
Adaptar secções ao sector e complexidade do cliente.
|
||||
Guia de escrita de cada secção (o que escrever e com que profundidade). Baseado nos projetos SFV, LJM, MCT, Espiral Sénior e Sintricare.
|
||||
A ORDEM e a numeração dos capítulos vêm de `estrutura-completa.md` (SPEC v2.0), que prevalece sobre o índice abaixo. Adaptar ao sector e ao nível (Essencial, Standard, Completo).
|
||||
|
||||
---
|
||||
|
||||
@@ -14,7 +14,7 @@ cliente: [Nome do cliente]
|
||||
código: EST-MRK-010
|
||||
versão: 1.0
|
||||
data: [DD-MM-YYYY]
|
||||
elaborado: Descomplicar® — Agência de Aceleração Digital
|
||||
elaborado: Descomplicar® - Agência de Marketing Digital
|
||||
status: draft | aprovado
|
||||
---
|
||||
```
|
||||
@@ -370,5 +370,5 @@ O Pitch Canvas é uma ferramenta de comunicação estratégica que resume, numa
|
||||
|
||||
---
|
||||
|
||||
*Elaborado por Descomplicar® — Agência de Aceleração Digital*
|
||||
*Elaborado por Descomplicar® - Agência de Marketing Digital*
|
||||
*emanuel@descomplicar.pt | descomplicar.pt*
|
||||
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Junta as partes de uma estratégia de marca num único markdown.
|
||||
|
||||
Uso:
|
||||
montar.py --partes DIR --intro intro.md --briefing briefing-llm.md --config marca.json --out estrategia.md
|
||||
[--glossario glossario.md] [--complementos complementos.md] [--historico historico.md]
|
||||
|
||||
- DIR contém parte-I.md ... parte-VIII.md (só os capítulos, `## N. Título`).
|
||||
- intro.md: resumo executivo + "Sobre este documento" (títulos `# ...`).
|
||||
- briefing-llm.md: a secção `## BRIEFING-LLM` completa (fica sempre em último).
|
||||
- marca.json: chaves `frontmatter` (dict) e, opcional, `partes` ([[romano, nome], ...]).
|
||||
Gera o anexo A (pontos a validar) a partir das marcas `[a validar: ...]`.
|
||||
"""
|
||||
import argparse, json, os, re, sys
|
||||
|
||||
PARTES = [["I", "Contexto"], ["II", "Fundamentos da marca"], ["III", "Públicos"],
|
||||
["IV", "Identidade e expressão"], ["V", "Oferta e venda"], ["VI", "Comunicação e canais"],
|
||||
["VII", "Crescimento"], ["VIII", "Medição e implementação"]]
|
||||
|
||||
|
||||
def yaml_value(v):
|
||||
if isinstance(v, list):
|
||||
return "[" + ", ".join(str(x) for x in v) + "]"
|
||||
s = str(v)
|
||||
return '"' + s.replace('"', '\\"') + '"' if re.search(r"[:#®·\-]", s) else s
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--partes", required=True)
|
||||
ap.add_argument("--intro", required=True)
|
||||
ap.add_argument("--briefing", required=True)
|
||||
ap.add_argument("--config", required=True)
|
||||
ap.add_argument("--out", required=True)
|
||||
ap.add_argument("--glossario")
|
||||
ap.add_argument("--complementos")
|
||||
ap.add_argument("--historico")
|
||||
a = ap.parse_args()
|
||||
|
||||
cfg = json.load(open(a.config, encoding="utf-8"))
|
||||
fm = "---\n" + "".join(f"{k}: {yaml_value(v)}\n" for k, v in cfg.get("frontmatter", {}).items()) + "---\n\n"
|
||||
doc = [fm, open(a.intro, encoding="utf-8").read().rstrip() + "\n\n"]
|
||||
|
||||
for rom, nome in cfg.get("partes", PARTES):
|
||||
p = os.path.join(a.partes, f"parte-{rom}.md")
|
||||
if not os.path.exists(p):
|
||||
sys.exit(f"Falta {p}")
|
||||
t = open(p, encoding="utf-8").read().strip()
|
||||
if re.search(r"^# ", t, re.M):
|
||||
sys.exit(f"{p} tem títulos de nível 1; só o montar.py escreve as Partes")
|
||||
doc.append(f"# Parte {rom}. {nome}\n\n{t}\n\n")
|
||||
full = "".join(doc)
|
||||
|
||||
pend, cap, seen, rows = [], None, set(), []
|
||||
for line in full.split("\n"):
|
||||
m = re.match(r"^## (\d+)\. ", line)
|
||||
if m:
|
||||
cap = int(m.group(1))
|
||||
for v in re.findall(r"\[a validar:\s*([^\]]+)\]", line):
|
||||
pend.append((cap or 0, v.strip().rstrip(".")))
|
||||
for c, v in pend:
|
||||
if (c, v.lower()) in seen:
|
||||
continue
|
||||
seen.add((c, v.lower()))
|
||||
rows.append(f"| {c or '—'} | {v[0].upper() + v[1:]} |")
|
||||
|
||||
anexos = ["# Anexos\n\n## A. Pontos a validar\n\n",
|
||||
f"{len(rows)} pontos, por capítulo. Cada ponto fechado corrige-se no capítulo e sai desta lista.\n\n",
|
||||
"| Cap. | O que falta confirmar |\n| --- | --- |\n", "\n".join(rows) or "| — | Nenhum |", "\n\n"]
|
||||
extras = [(t, f) for t, f in [("Glossário", a.glossario), ("Complementos do sector", a.complementos),
|
||||
("Histórico de alterações", a.historico)] if f]
|
||||
for letra, (titulo, f) in zip("BCD", extras):
|
||||
anexos.append(f"## {letra}. {titulo}\n\n" + open(f, encoding="utf-8").read().strip() + "\n\n")
|
||||
full += "".join(anexos)
|
||||
|
||||
br = open(a.briefing, encoding="utf-8").read().strip()
|
||||
if not br.startswith("## BRIEFING-LLM"):
|
||||
sys.exit("briefing-llm.md tem de começar por '## BRIEFING-LLM'")
|
||||
full += br + "\n"
|
||||
open(a.out, "w", encoding="utf-8").write(full)
|
||||
caps = len(re.findall(r"^## \d+\. ", full, re.M))
|
||||
print(f"{a.out}: {len(full.split())} palavras, {caps} capítulos, {len(rows)} pontos a validar")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Estratégia de marca (markdown) -> PDF A4 com a identidade DA MARCA em causa.
|
||||
|
||||
Uso: render_pdf.py estrategia.md estrategia.pdf --config marca.json [--html saida.html]
|
||||
|
||||
Requer: pandoc, google-chrome (ou chromium), pdfinfo.
|
||||
O marca.json define cores, fontes, logótipo e textos da capa (ver assets/marca-descomplicar.json).
|
||||
Regras aprendidas (17-10-2026):
|
||||
- A4 sempre (nunca Letter). Margens 20/18 mm, numeração no rodapé.
|
||||
- Fontes web subset (ex.: woff2 só latim básico) não têm €, → ou −; declarar uma
|
||||
família de recurso SEPARADA (`fallback` no config) e acrescentá-la a todas as pilhas.
|
||||
Não usar unicode-range na mesma família com intervalos de peso diferentes: o Chrome
|
||||
escolhe a face pelo peso e perde o resto dos glifos.
|
||||
- Confirmar com `pdffonts` que não aparecem Liberation/DejaVu (exceto mono) e ver uma
|
||||
página de conteúdo renderizada, não só a capa.
|
||||
- A secção BRIEFING-LLM vai no PDF como está (bloco yaml), por ser a última secção.
|
||||
"""
|
||||
import argparse, json, re, shutil, subprocess, tempfile, os
|
||||
|
||||
TPL = """<!doctype html>
|
||||
<html lang="$lang$"><head><meta charset="utf-8"><title>$title$</title></head>
|
||||
<body>
|
||||
<!--CAPA-->
|
||||
<nav id="TOC">
|
||||
$table-of-contents$
|
||||
</nav>
|
||||
$body$
|
||||
</body></html>
|
||||
"""
|
||||
|
||||
|
||||
def face(f):
|
||||
s = f"@font-face{{font-family:'{f['family']}';src:url('file://{f['src']}');"
|
||||
s += f"font-weight:{f.get('weight', '100 900')};font-style:{f.get('style', 'normal')};"
|
||||
if f.get("unicode_range"):
|
||||
s += f"unicode-range:{f['unicode_range']};"
|
||||
return s + "}"
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("src")
|
||||
ap.add_argument("out")
|
||||
ap.add_argument("--config", required=True)
|
||||
ap.add_argument("--html")
|
||||
a = ap.parse_args()
|
||||
c = json.load(open(a.config, encoding="utf-8"))
|
||||
|
||||
md = open(a.src, encoding="utf-8").read()
|
||||
md = re.sub(r"\A---\n.*?\n---\n", "", md, flags=re.S)
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
tpl = os.path.join(tmp, "tpl.html")
|
||||
open(tpl, "w", encoding="utf-8").write(TPL)
|
||||
body = subprocess.run(
|
||||
["pandoc", "-f", "gfm+attributes", "-t", "html5", "--toc", "--toc-depth=2", "--standalone",
|
||||
"--template", tpl, "--metadata", f"title={c['titulo_documento']}", "--metadata", "lang=pt-PT"],
|
||||
input=md, capture_output=True, text=True, check=True).stdout
|
||||
|
||||
marca = c["marca"] # ex.: "Descomplicar®"
|
||||
if marca.endswith("®"):
|
||||
base = re.escape(marca[:-1])
|
||||
body = re.sub(rf"(?<![/\w.]){base}®", f'{marca[:-1]}<sup class="reg">®</sup>', body)
|
||||
body = re.sub(r"\[a validar:([^\]]*)\]", r'<span class="av">[a validar:\1]</span>', body)
|
||||
|
||||
T, X, FB = c["fonte_titulos"], c["fonte_texto"], c.get("fallback", "sans-serif")
|
||||
k = c["cores"] # escura, clara_texto, primaria, acento_texto, suave, linha, alternada, aviso_fundo, aviso_texto
|
||||
faces = "\n".join(face(f) for f in c.get("fontes", []))
|
||||
css = f"""{faces}
|
||||
@page{{size:A4;margin:20mm 18mm 20mm 18mm;
|
||||
@bottom-left{{content:"{c['rodape']}";font:8.5pt '{X}',{FB};color:{k['texto_secundario']}}}
|
||||
@bottom-right{{content:counter(page);font:600 8.5pt '{T}',{FB};color:{k['acento_texto']}}}}}
|
||||
@page capa{{margin:0;@bottom-left{{content:none}}@bottom-right{{content:none}}}}
|
||||
html{{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
|
||||
body{{font-family:'{X}',{FB};font-size:10.2pt;line-height:1.55;color:{k['texto']};margin:0}}
|
||||
sup.reg{{font-size:.45em;vertical-align:super;line-height:0;margin-left:.02em}}
|
||||
.capa{{page:capa;height:297mm;width:210mm;background:{k['escura']};color:{k['clara_texto']};position:relative;break-after:page;box-sizing:border-box;padding:34mm 22mm}}
|
||||
.capa svg,.capa img{{width:56mm;height:auto;display:block}}
|
||||
.capa .eyebrow{{font:700 9pt '{T}',{FB};letter-spacing:.14em;text-transform:uppercase;color:{k['primaria']};margin-top:52mm}}
|
||||
.capa h1{{font:300 40pt/1.05 '{T}',{FB};text-transform:uppercase;margin:6mm 0 8mm;color:{k['clara_texto']};border:0;padding:0;break-before:auto}}
|
||||
.capa .slogan{{font:700 18pt '{T}',{FB};color:{k['primaria']}}}
|
||||
.capa .meta{{position:absolute;left:22mm;right:22mm;bottom:24mm;border-top:1px solid {k['primaria']};padding-top:5mm;font-size:9.5pt;color:{k['clara_texto']};opacity:.75;display:flex;justify-content:space-between}}
|
||||
nav#TOC{{break-after:page}}
|
||||
nav#TOC::before{{content:"Índice";display:block;font:700 22pt '{T}',{FB};margin:0 0 6mm}}
|
||||
nav#TOC ul{{list-style:none;padding-left:0;margin:0}}
|
||||
nav#TOC > ul > li{{margin-top:3.2mm;font:700 10pt '{T}',{FB};color:{k['acento_texto']};text-transform:uppercase;letter-spacing:.05em}}
|
||||
nav#TOC > ul > li > ul > li{{font:400 9.6pt '{X}',{FB};color:{k['texto']};text-transform:none;letter-spacing:0;padding-left:4mm;margin-top:.6mm}}
|
||||
nav#TOC a{{color:inherit;text-decoration:none}}
|
||||
h1{{font:300 26pt/1.1 '{T}',{FB};text-transform:uppercase;letter-spacing:.02em;break-before:page;margin:0 0 8mm;padding-bottom:4mm;border-bottom:3px solid {k['primaria']}}}
|
||||
h2{{font:700 17pt/1.2 '{T}',{FB};margin:9mm 0 3mm;break-after:avoid}}
|
||||
h3{{font:600 12.5pt/1.25 '{T}',{FB};margin:6mm 0 2mm;break-after:avoid}}
|
||||
h4{{font:600 10.5pt '{T}',{FB};margin:4mm 0 1.5mm;break-after:avoid;color:{k['acento_texto']}}}
|
||||
p{{margin:0 0 2.6mm;orphans:3;widows:3}}
|
||||
ul,ol{{margin:0 0 3mm;padding-left:6mm}} li{{margin:.6mm 0}}
|
||||
a{{color:{k['acento_texto']}}}
|
||||
blockquote{{margin:3mm 0;padding:3mm 5mm;background:{k['suave']};border-left:4px solid {k['primaria']};font-size:10.6pt}}
|
||||
blockquote p:last-child{{margin:0}}
|
||||
table{{border-collapse:collapse;width:100%;margin:2mm 0 4mm;font-size:8.8pt}}
|
||||
tr{{break-inside:avoid}}
|
||||
th{{background:{k['escura']};color:{k['clara_texto']};font:600 8.4pt '{T}',{FB};text-align:left;padding:2mm 2.4mm}}
|
||||
td{{border-bottom:1px solid {k['linha']};padding:1.8mm 2.4mm;vertical-align:top}}
|
||||
tr:nth-child(even) td{{background:{k['alternada']}}}
|
||||
code,pre{{font-size:8.4pt;background:{k['suave']};border-radius:2px}}
|
||||
code{{padding:0 1mm}} pre{{padding:3mm;white-space:pre-wrap}}
|
||||
hr{{border:0;border-top:1px solid {k['linha']};margin:5mm 0}}
|
||||
.av{{background:{k['aviso_fundo']};color:{k['aviso_texto']};padding:0 1mm;border-radius:2px;font-size:.92em}}
|
||||
"""
|
||||
logo = ""
|
||||
if c.get("logo_capa"):
|
||||
logo = open(c["logo_capa"], encoding="utf-8").read()
|
||||
logo = re.sub(r"<\?xml[^>]*>", "", logo)
|
||||
capa = (f'<section class="capa"><div>{logo}</div><div class="eyebrow">{c["capa_eyebrow"]}</div>'
|
||||
f'<h1>{c["capa_titulo"]}</h1><div class="slogan">{c.get("capa_slogan", "")}</div>'
|
||||
f'<div class="meta"><span>{c["capa_assinatura"]}</span><span>{c["capa_data"]}</span></div></section>')
|
||||
if marca.endswith("®"):
|
||||
capa = capa.replace(marca, f'{marca[:-1]}<sup class="reg">®</sup>')
|
||||
html = body.replace("</head>", f"<style>{css}</style></head>").replace("<!--CAPA-->", capa)
|
||||
hp = a.html or os.path.join(tmp, "doc.html")
|
||||
open(hp, "w", encoding="utf-8").write(html)
|
||||
chrome = shutil.which("google-chrome") or shutil.which("google-chrome-stable") or shutil.which("chromium")
|
||||
subprocess.run([chrome, "--headless=new", "--no-sandbox", "--disable-gpu", "--no-pdf-header-footer",
|
||||
"--generate-pdf-document-outline", "--virtual-time-budget=20000",
|
||||
f"--print-to-pdf={os.path.abspath(a.out)}", "file://" + os.path.abspath(hp)],
|
||||
check=True, capture_output=True, timeout=600)
|
||||
info = subprocess.run(["pdfinfo", a.out], capture_output=True, text=True).stdout
|
||||
fonts = subprocess.run(["pdffonts", a.out], capture_output=True, text=True).stdout
|
||||
print("\n".join(l for l in info.splitlines() if l.startswith(("Pages", "Page size"))))
|
||||
bad = sorted({re.sub(r"^[A-Z]{6}\+", "", l.split()[0]) for l in fonts.splitlines()[2:]
|
||||
if re.search(r"Liberation|DejaVuSans(?!Mono)|Nimbus", l)})
|
||||
if bad:
|
||||
print("AVISO: fontes de recurso do sistema no PDF:", ", ".join(bad))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user