O que Agente Jornalista de Dados (Data2Story) faz?
Transforme $ARGUMENTS em um blog. Orquestra os papéis abaixo em sequência.
Configuração
Resolva os caminhos antes de fazer qualquer coisa:
- Nunca codifique caminhos fixos da máquina local e nunca peça ao usuário para exportar variáveis de caminho.
- Resolva
SKILL_DIR= o diretório que contém esteSKILL.md(.../skills/data2story) - Resolva
ARCHIVE_DIR= o diretório ancestral que contémskills/(dois níveis acima deSKILL_DIR, ou seja,SKILL_DIR/../..) - Resolva
DATA2STORY_ROOT= pai deARCHIVE_DIR - Os comandos abaixo usam placeholders simbólicos como
ARCHIVE_DIR; substitua-os pelos caminhos resolvidos e entre aspas antes de executar Bash. DATA_NAME= o nome da pasta do conjunto de dados (ex.:pick_a_card)DATA_DIR= se$ARGUMENTSfor um caminho existente, use esse caminho; caso contrário, useDATA2STORY_ROOT/data/{DATA_NAME}TIMESTAMP= hora atual formatada comoMMDD_HHMM(ex.:0401_1618):date +%m%d_%H%M(executar em bash)PROJECT_DIR=DATA2STORY_ROOT/project/{DATA_NAME}/blog_{MODEL}_{TIMESTAMP}- Crie
PROJECT_DIR/,PROJECT_DIR/assets/,PROJECT_DIR/code/
Arquivamento
Imediatamente após criar PROJECT_DIR, tire um snapshot dos skills atuais:
mkdir -p PROJECT_DIR/archival
cp -r ARCHIVE_DIR/skills PROJECT_DIR/archival/skills
Isso preserva as versões exatas dos skills usadas nesta execução.
Ferramentas disponíveis
Todas as ferramentas de mídia roteiam através do OpenRouter. Defina OPENROUTER_API_KEY antes de qualquer chamada de geração.
A geração de mídia é trabalho do Designer, então as ferramentas de mídia (text2image, text2video, image2video, text2music, embeddings) ficam em SKILL_DIR/designer/scripts/openrouter-*/. A lista completa — modelos padrão e invocações exatas de python3 ... — está em designer/references/tools.json; a documentação completa por ferramenta está no próprio SKILL.md de cada uma, em SKILL_DIR/designer/scripts/openrouter-*/.
Visão Geral do Pipeline
O pipeline é uma única sequência linear que produz um blog HTML rastreável a partir de dados brutos:
DADOS → Detetive → Analista → Editor → Designer → Programador → Auditor → Inspetor → index.html final + viewer.html
Execute cada estágio em ordem. Cada estágio lê o(s) artefato(s) anterior(es) antes de começar. Não prossiga para o próximo estágio até que o artefato atual esteja completo.
Estágio 1 — Detetive
Entrada: DATA_DIR
Saída: PROJECT_DIR/detective.json
O quê: Pesquisa contexto externo — conhecimento de fundo, histórico do domínio, descobertas relacionadas, por que esses dados importam. Cada descoberta recebe um ID det_xx.
Estágio 2 — Analista
Entrada: DATA_DIR, PROJECT_DIR/detective.json
Saída: PROJECT_DIR/code/*.py, PROJECT_DIR/analyst.json
O quê: Análise quantitativa exaustiva dos dados, informada pelo contexto do detetive. Todo o código salvo em code/ como scripts executáveis. Cada descoberta recebe um ID ana_xx com calculation (arquivo + linhas + saída) e data_table (dados prontos para gráfico).
Estágio 3 — Editor
Entrada: PROJECT_DIR/detective.json, PROJECT_DIR/analyst.json
Saída: PROJECT_DIR/editor.md, PROJECT_DIR/editor.json
O quê: Decisões editoriais — quais descobertas importam, qual é o arco narrativo, o que o blog argumenta. Cada seção recebe um ID edt_xx com referências explícitas a descobertas ana_xx e contexto det_xx. Sem design visual.
Estágio 4 — Designer
Entrada: PROJECT_DIR/editor.md, PROJECT_DIR/editor.json, PROJECT_DIR/analyst.json
Saída: PROJECT_DIR/designer.json, PROJECT_DIR/assets/*
O quê: Decisões visuais criativas baseadas em dados — como apresentar cada ponto usando gráficos, imagens, vídeos, áudio, mapas, interativos, destaques de estatísticas, instâncias ou tratamento somente texto quando apropriado. A mistura de mídia deve emergir das propriedades do conjunto de dados, não de uma lista fixa. A página deve ser rica em multimídia por padrão: tome emprestada a linguagem visual do skill compartilhado frontend-design e use todos os cinco canais (gráfico, imagem, vídeo, áudio, interativo/mapa) a menos que o fallback documentado de um canal seria fabricado ou puramente decorativo. Cada visual recebe um ID des_xx com data_source apontando para data_tables de ana_xx quando orientado a dados. Gera os ativos selecionados. Sem HTML.
Estágio 5 — Programador
Entrada: PROJECT_DIR/editor.md, PROJECT_DIR/editor.json, PROJECT_DIR/analyst.json, PROJECT_DIR/designer.json
Saída: PROJECT_DIR/index.html
O quê: Implementa o blog final em HTML. Aplica o tema/acento registrado em designer.json page_rhythm e toma emprestadas receitas de componentes + tokens do skill frontend-design. Resolve dados de gráficos a partir de data_tables em analyst.json (SEM acesso a dados brutos). Marca cada elemento com atributos data-edt, data-ana, data-det, data-des para rastreabilidade.
Estágio 6 — Auditor
Entrada: PROJECT_DIR/index.html
Saída: PROJECT_DIR/index.html (modificado), PROJECT_DIR/auditor.json
O quê: Detecta e corrige problemas de layout (sobreposição, espaçamento, alinhamento) sem alterar conteúdo ou intenção de design. Executa automaticamente após o Programador para garantir que os elementos visuais estejam devidamente encapsulados e espaçados.
Chamada: Skill auditor PROJECT_DIR
Estágio 7 — Inspetor
Entrada: PROJECT_DIR/index.html, todos os arquivos JSON
Saída: PROJECT_DIR/inspector.json, PROJECT_DIR/viewer.html
O quê: Executa verificação de rastreabilidade no nível da sentença e gera um visualizador interativo. Dois passos:
python3 SKILL_DIR/inspector/scripts/verify.py PROJECT_DIR --log-errors
python3 SKILL_DIR/inspector/scripts/generate_viewer.py PROJECT_DIR
Passo 1 produz inspector.json (mapeamento sentença→evidência). Passo 2 produz viewer.html (autocontido, funciona em file:// — nenhum servidor necessário). Veja inspector/SKILL.md para detalhes.
Rastreabilidade: fluxo de IDs através do pipeline
det_01 ──┐
det_02 ──┤
├──▶ ana_01 (based_on: [det_02]) ──┐
│ ana_02 (based_on: []) ├──▶ edt_01 (findings: [ana_01, ana_02], context: [det_01]) ──▶ des_01 (section: edt_01, data_source: ana_01)
│ ana_03 (based_on: [det_01]) │ edt_02 (findings: [ana_03], context: [det_02]) ──▶ des_02 (section: edt_02, data_source: ana_03)
└────────────────────────────────────┘
Cada valor no HTML final pode ser rastreado: HTML data-des="des_01" → designer.json des_01.data_source="ana_01" → analyst.json ana_01.calculation.code → verificável.
Regras de transferência
- Cada artefato deve estar completo antes do próximo estágio começar.
- Se um artefato estiver faltando seções obrigatórias, corrija-o antes de prosseguir.
- Portão de riqueza multimídia (após Designer, antes do Programador):
designer.jsondeve exercitar todos os cinco canais (gráfico, imagem, vídeo, áudio, interativo_ou_mapa). Para qualquer canal marcado comoused:false, confirme que seu fallback documentado foi genuinamente tentado e uma razão baseada em dados foi registrada emmeta.media_decisions. Se um canal foi pulado por conveniência e não porque os dados não o suportam, envie-o de volta ao Designer antes que o Programador execute. - Todos os ativos gerados vão apenas para
PROJECT_DIR/assets/. - Entregas finais:
PROJECT_DIR/index.html,PROJECT_DIR/detective.json,PROJECT_DIR/analyst.json,PROJECT_DIR/code/*.py,PROJECT_DIR/editor.md,PROJECT_DIR/editor.json,PROJECT_DIR/designer.json,PROJECT_DIR/inspector.json,PROJECT_DIR/viewer.html.