Communitygithub.com

redirhan/panel-tr-lite

Panel TR — Grupo focal sintético em turco, baseado em evidências. Antes de publicar um Reels, site, postagem ou oferta, ele o exibe para cartões de usuários turcos (faixa etária 18-24 … 55+, metrópole/Anadolu/vila, usuários intensos/leves do Instagram, incluindo céticos e pessoas com baixa tecnologia; no Pro, inclui também empresários e tomadores de decisão de marketing). As pessoas avaliam apenas o que realmente veriam (quadros + textos na tela para Reels, capturas de tela Firefox/WebKit para sites, imagens para postagens) e respondem em turco — pararia nos primeiros 3 segundos, o que está explicando, confiabilidade 1-5, DM/seguir/comprar, preço (comprador), maior objeção, única correção concreta. Os grupos rodam em subagentes separados, as contagens são feitas pelo script, e o relatório termina com uma caixa de honestidade obrigatória. Use como verificação final antes de publicar ou entregar um Reels, landing page, post ou oferta, para escolhas A/B (Pro), e quando o usuário disser "painel", "grupo focal", "quanto pegaria", "teste", "mostrar para diferentes faixas etárias", "grupo focal sintético".

O que é panel-tr-lite?

O Panel TR é uma skill de grupo focal sintético baseado em evidências para o mercado turco. Ele permite que desenvolvedores, profissionais de marketing e criadores de conteúdo testem Reels, sites, postagens ou ofertas com um painel virtual diversificado de usuários turcos antes da publicação real. A skill é especialmente útil para identificar problemas de comunicação, verificar a clareza da proposta de valor e evitar vieses pessoais do criador. Ela suporta principalmente a plataforma Claude Desktop (com subagentes) e utiliza Python para scripts de processamento e agregação. O funcionamento se baseia em: (1) preparação de estímulos a partir do conteúdo real (vídeos, sites, imagens) com capturas de tela e transcrições; (2) delineamento de um painel com cartões de persona baseados em dados demográficos e comportamentais reais (TÜİK, DataReportal, etc.); (3) execução paralela de subagentes independentes que avaliam o estímulo como se fossem o usuário representado; (4) agregação das respostas em relatórios com tabelas, gráficos e verificações de integridade (schema, base, eco, monofonia). A skill oferece versões Lite (10 espectadores, relatório rápido) e Pro (30 espectadores + 24 compradores, modo A/B, segmentação, relatório detalhado). A honestidade é central — o relatório sempre inclui uma caixa de honestidade lembrando que os dados são sintéticos e devem ser validados com 3-5 pessoas reais. As respostas são sempre em turco e as contagens são feitas por script, não pelo modelo de linguagem, garantindo precisão quantitativa.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/redirhan/panel-tr-lite/tree/main

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Panel TR (grupo focal sintético)

Para que serve: capturar problemas antes de um público real — oferta incompreensível, letra pequena ilegível, abertura que não prende ninguém nos primeiros 3 segundos, algo que afasta uma determinada faixa etária. O que não é: previsão de vendas ou pesquisa de mercado. Os números são contagens de respostas sintéticas, nunca "% do mercado".

Versões (arquivo EDITION): Lite = 10 cartões de espectador, uma única opção, relatório rápido pronto. Pro = 30 espectadores + 24 cartões de comprador (10 segmentos), modo A/B, tabelas e gráficos por segmento, redator de relatório separado. Etapas exclusivas do Pro estão marcadas abaixo como (Pro) ; no Lite, o script as recusa educadamente.

Arquivos

SKILL.md                    este arquivo
EDITION                     lite | pro
config.example.yaml         copiar -> config.yaml (caminhos, navegador, taxas base); caminho absoluto não é necessário
requirements.txt            PyYAML, Pillow, playwright (para modo site)
personas/viewers.yaml       cartões de espectador (Lite 10, Pro 30)
personas/buyers.yaml        cartões de comprador (apenas Pro, 24)
sources/index.yaml + *.md   resumos de fontes públicas referenciadas pelos cartões (TÜİK, DataReportal, ...)
prompts/persona_batch.md    instrução para subagente de um lote (panel.py preenche o plano)
prompts/aggregator.md       (Pro) instrução para redator de relatório (panel.py preenche report-prompt)
scripts/make_stimulus.py    vídeo/site/postagem -> quadros, capturas de tela, stimulus.md
scripts/panel.py            doctor | validate | cite | init-run | plan [--dry-run] | report-prompt (Pro)
scripts/aggregate.py        responses/*.json -> tabelas, gráficos, verificações de integridade, relatório rápido
examples/demo-kafe-reel/    execução de exemplo completa com um Reels fictício de cafeteria

Abaixo, S = a pasta desta skill (geralmente ~/.claude/skills/panel-tr), PY = python3 (de preferência S/.venv/bin/python). As pastas de execução são gravadas em runs_dir dentro do config.yaml (padrão ~/panel-tr-runs).

Etapas

  1. Na primeira instalação / em caso de problema: PY S/scripts/panel.py doctor (dependências, ffmpeg, navegador, versão). Se os cartões mudaram: PY S/scripts/panel.py validate deve indicar 0 erros. PY S/scripts/panel.py cite V07 exibe um cartão lado a lado com as linhas da fonte a que se refere.
  2. Pasta de execução: RUN=$(PY S/scripts/panel.py init-run --slug kafe-reels-v2) → modelos em RUN/inputs/.
  3. Escreva as entradas (em RUN/inputs/), em turco neutro, a partir da sua própria análise:
    • context.txt — onde e como a pessoa vê isso ("Aparece no feed de Reels; a conta que compartilha é @x; há texto de descrição / não há"). Escreva a conta que compartilha apenas se ela aparecer no aplicativo. Nunca escreva quem fez, qual é o objetivo ou qual versão é preferida.
    • onscreen.txt (vídeo) — cada texto na tela, com intervalo de tempo, exatamente como aparece na tela.
    • audio.txt (vídeo) — o que se ouve, como fato: som ambiente ou qual música, a partir de qual segundo, há fala/efeitos sonoros, é coerente com a imagem. É mostrado às pessoas com o título "NOSSA ANÁLISE — você não ouviu".
    • caption.txt (postagem/Reels) — o texto de descrição que será publicado, se houver.
  4. Estímulo (um para cada opção; A/B = stimulus_A, stimulus_B):
    PY S/scripts/make_stimulus.py video IN.mp4 RUN/stimulus --onscreen RUN/inputs/onscreen.txt --audio RUN/inputs/audio.txt [--caption RUN/inputs/caption.txt] [--transcript]
    PY S/scripts/make_stimulus.py site https://exemplo.com RUN/stimulus        # ou um .html local
    PY S/scripts/make_stimulus.py post a.jpg,b.jpg,c.jpg RUN/stimulus --caption RUN/inputs/caption.txt
    
    Vídeo: quadros em 0,0 / 0,5 / … / 2,5 segundos, depois um por segundo + último quadro; sheet_00_ilk3sn.jpg e páginas numeradas 2-3 com cada quadro abaixo com o tempo; --transcript adiciona o texto da fala se houver (se faster-whisper / openai-whisper estiver instalado). Site: Playwright Firefox (padrão) ou WebKit — desktop 1440×900 e mobile 390×844, primeira tela + página inteira em fatias de duas telas, além do texto visível. Chrome / Chromium / Chrome for Testing nunca são abertos. Abra as páginas você mesmo e verifique se onscreen.txt corresponde aos quadros.
  5. Planeje o painel:
    PY S/scripts/panel.py plan --run RUN --panel viewer --n 10 --batches 2 --stimulus RUN/stimulus --context-file RUN/inputs/context.txt [--action "…"] [--seed 7] [--dry-run]
    PY S/scripts/panel.py plan --run RUN --panel viewer --n 30 --batches 6 …                                   (Pro)
    PY S/scripts/panel.py plan --run RUN --panel buyer --n 24 --batches 5 --segments cafeteria_restaurante,imoveis,… …   (Pro)
    PY S/scripts/panel.py plan … --stimulus-a RUN/stimulus_A --stimulus-b RUN/stimulus_B                     (Pro, A/B)
    
    Tamanhos: verificação rápida 10 pessoas (2×5); verificação completa (Pro) 30 espectadores (6×5) e/ou 24 compradores (5×~5). A seleção de espectadores é ponderada pela distribuição etária do Instagram na Turquia (config: viewer_age_weights, fonte NapoleonCat), pelo menos uma pessoa de cada faixa etária; ~20% de pessoas "fora do alvo" (--out-share); --local İzmir prioriza pessoas dessa cidade; --ids para seleção manual. Cada painel mantém pelo menos um cético/pessoa fora do alvo. A/B (Pro): as opções são mostradas como "Opção 1/2"; grupos ímpares veem A primeiro, grupos pares veem B primeiro; a chave fica apenas em plan.json, não em nenhum prompt. Se a pergunta de ação padrão não se aplicar, use --action para alterá-la ("Ao ver este Reels, você iria lá neste fim de semana?").
  6. Execute os lotes — cada lote em um subagente separado e novo, todos em paralelo. Na ferramenta de agente, use um agente de propósito geral, não fork (fork carrega nosso contexto e expectativa). Prompt: "Leia <RUN>/batches/batch_NN.md e faça exatamente o que ele diz. Escreva apenas o arquivo JSON que ele nomeia." Cada subagente vê apenas seu próprio arquivo de prompt e as imagens. Depois verifique se cada arquivo RUN/responses/batch_NN.json existe; execute novamente o lote com falha uma vez com o mesmo prompt.
  7. Conte: PY S/scripts/aggregate.py RUN --title "…" [--real-people "…"] → RUN/data/panel_data.md, chart_acao.png, chart_pri3seg.png, all_answers.md e verificações: schema, base (referência a um quadro não mostrado = a pessoa inventou algo), eco do cartão (a pessoa repetiu seu próprio cartão), monofonia (sobreposição de palavras dentro do lote vs entre lotes). Lite também escreve aqui o relatório rápido RUN/PANEL_REPORT.md. Pro adicionalmente escreve tabelas para cada dimensão, gráficos por segmento (chart_acao_<dimensao>.png) e a preferência A/B.
  8. (Pro) Relatório: PY S/scripts/panel.py report-prompt --run RUN --title "…" --real-people "…" → RUN/aggregator_prompt.md. Dê a um novo subagente ("Leia … e faça") → RUN/PANEL_REPORT.md (objeções agrupadas, correções prioritárias, comentário por segmento). Leia o relatório comparando com all_answers.md (as citações devem ser reais, os números não devem ter sido alterados).
  9. Diga ao usuário (em turco): 3-5 linhas de resultados com números, as primeiras 3 correções, a frase da caixa de honestidade e quem deveriam ser 3-5 pessoas reais. O painel não substitui o gosto do usuário ou do cliente.

Regras

  • Evidência primeiro. Cada característica do cartão termina com [CHAVE:Fnn] (uma linha de fato em sources/) ou [suposicao]. panel.py validate verifica cada referência. Hoje cerca de metade das características são [suposicao] (não há dados públicos medidos para personalidade e gosto) — o relatório imprime essa proporção. Para adicionar sua própria pesquisa, escreva um .md com linhas "Fnn …" em sources/ e adicione sua chave em sources/index.yaml.
  • Sem ficção/teoria de marketing nos cartões. Os cartões trazem fatos sobre a pessoa (trabalho, cidade, orçamento, hábito), não nossas opiniões (como "os primeiros 2 segundos são importantes"). Caso contrário, o painel apenas repetiria nossas próprias crenças.
  • Diversidade intencional: céticos, sensíveis a preço, pessoas com baixa tecnologia, moradores de vilas, conservadores, idosos com uso intenso de Facebook, pessoas fora do alvo permanecem. O "não" deles é informação de segmentação.
  • Avalie apenas o que é mostrado. As pessoas veem os quadros, capturas de tela, imagens e os fatos de texto/áudio que escrevemos. Elas não assistiram ao vídeo, não ouviram o áudio; cada resposta é baseada em ≥ 2 quadros; o que não puderam avaliar vai para o campo naovejo. O áudio é sempre "nossa análise", nunca "ouvi".
  • Teste cego: os arquivos context/onscreen/audio não contêm quem fez, "nossa versão" ou a resposta esperada; os rótulos A/B são neutros e a ordem é balanceada.
  • Não educado, calibrado: o prompt carrega uma taxa base real (calibration no config.yaml; padrões são taxas de engajamento do Click Analytic / Socialinsider e taxa de resposta de e-mail frio do Hunter, veja sources/EB_*.md). Se você conhece a taxa real da sua conta, escreva-a. Um painel onde a maioria diz "Eu mandaria DM" é uma bandeira vermelha, não um sucesso.
  • Contextos independentes: um subagente por lote; dentro do lote, cada pessoa escreve em sequência, sem usar as frases da pessoa anterior. Se aggregate.py emitir um aviso de monofonia, execute novamente com lotes menores (3).
  • O script conta os números, o modelo escreve as palavras. O redator do relatório não pode inventar ou recontar números.
  • Caixa de honestidade obrigatória em todo relatório: sintético ≠ dados de mercado; valide com 3-5 pessoas reais (você pararia nos primeiros 3 segundos? O que explica em uma frase? O que faria depois?).
  • As respostas são em turco e do próprio vocabulário da pessoa; nas citações, preserva-se o İ/ı turco.
  • Custo: ~6-8 imagens por lote; execução de 10 pessoas ≈ 2 subagentes paralelos; 30 pessoas ≈ 6 subagentes + 1 redator de relatório. Para rascunhos, verificação rápida (10); para a versão final, painel completo (Pro, 24-30).
  • Privacidade: as pastas de execução são locais; não enviam material do cliente para nenhum outro lugar. Antes de compartilhar, limpe as entradas que contenham nome do cliente ou dados pessoais.

Pasta de saída

RUN/inputs/{context,onscreen,audio,caption}.txt
RUN/stimulus[_A|_B]/{stimulus.md,stimulus.json,sheet_*.jpg,frames/|shots/|post/}
RUN/plan.json  RUN/batches/batch_NN.md  RUN/responses/batch_NN.json
RUN/data/{panel_data.md,panel_data.json,all_answers.md,chart_*.png}
RUN/PANEL_REPORT.md            (Lite: relatório rápido; Pro: relatório do redator de relatório, relatório rápido data/quick_report.md)
RUN/aggregator_prompt.md       (Pro)

Habilidades Relacionadas