| name | mira-quiz |
| description | Slide de QUIZ AO VIVO no Mira: a plateia escaneia um QR-code e responde uma múltipla escolha num Google Forms; o slide lê as respostas via Google Sheets gviz/JSONP. Diferente do mira-survey, tem resposta correta, revelação controlada pelo apresentador e percentuais que só aparecem após revelar. Use SEMPRE que o usuário disser /mira-quiz, quiz ao vivo, pergunta com resposta correta, revelar resposta, ranking do quiz, quiz com QR, quiz tipo Mentimeter, quiz tipo Slido, ou pedir um slide onde a plateia responde pelo celular e a resposta correta é revelada no palco. Para enquete sem resposta correta use /mira-survey; para QR simples use /mira-qrcode. |
Skill: Quiz ao vivo no slide
Fonte da verdade: decisões congeladas em BRAINSTORM_MIRA_QUIZ.md (2026-06-30). O /mira-quiz reaproveita a arquitetura validada do mira-survey: Google Forms como interface, Google Sheets como fonte viva e leitura pelo endpoint gviz com JSONP para funcionar por file://.
Modelo mental
O Mira não hospeda o jogo. Ele monta um slide que lê respostas já coletadas pelo Google Forms:
- A plateia abre o link de votação pelo QR-code.
- Cada envio cai na planilha de respostas vinculada ao Forms.
- O slide lê a planilha a cada poucos segundos pelo
gviz.
- Antes da revelação, mostra pergunta, QR, alternativas e total de respostas.
- Depois da revelação, marca a correta em verde e mostra contagem + percentual por alternativa.
Dados obrigatórios
Confirme estes dados antes de gerar o slide. Se faltar qualquer item, pergunte e pare.
| Dado | Exemplo | Uso |
|---|
| Link de votação | forms.gle/... ou docs.google.com/forms/... | vira QR-code inline |
| Link da planilha | docs.google.com/spreadsheets/d/<ID>/... | fonte viva de respostas |
| Pergunta | Qual destes é um modelo multimodal? | título do quiz |
| Alternativas | GPT-4o, Excel, Photoshop, PowerPoint | cards de resposta |
| Correta | GPT-4o | destaque na revelação |
| Campo de nome | primeira coluna textual depois do timestamp, ou índice informado | ranking básico |
Texto sugerido se faltar algo:
Para montar o quiz ao vivo eu preciso do link de votação do Google Forms, do link da planilha de respostas, da pergunta, das alternativas e da resposta correta. A planilha precisa estar pública como "qualquer pessoa com o link -> Leitor". Pode colar esses dados aqui?
Formulário esperado
O Google Forms deve ter, no mínimo:
- Um campo de identificação (nome ou apelido).
- Uma pergunta de múltipla escolha com as mesmas alternativas do slide.
Na planilha, a skill assume (salvo se o usuário indicar outro cabeçalho):
- A última coluna é a resposta do quiz.
- A primeira coluna textual depois do timestamp é o nome/apelido.
Se a planilha tiver várias perguntas, avise que o slide usará a última coluna e peça confirmação.
Verificação da planilha
Extraia o SHEET_ID do link da planilha com /spreadsheets/d/<ID>/ e teste o mesmo endpoint que o slide usará:
curl -sL "https://docs.google.com/spreadsheets/d/<SHEET_ID>/gviz/tq?tqx=out:json" | head -c 800
Se vier google.visualization.Query.setResponse({...}) com "status":"ok", a planilha está legível. Se vier HTML de login ou erro, peça para o usuário ajustar o compartilhamento para qualquer pessoa com o link -> Leitor.
Nunca use "Publicar na web -> CSV". Esse endpoint pode ficar cacheado por minutos. O quiz ao vivo usa só gviz + JSONP.
QR-code local
O QR do link de votação é gerado localmente e embutido como SVG inline, igual ao /mira-qrcode e ao /mira-survey. Não use npx qrcode, API externa nem CDN.
- Instale o pacote uma vez numa pasta temp reaproveitável, se ainda não existir:
npm install qrcode --no-save --prefix "<pasta-temp>"
- Gere o SVG:
node -e "require('qrcode').toString('LINK_VOTACAO',{type:'svg',errorCorrectionLevel:'M',margin:0,color:{dark:'#0a0a0a',light:'#ffffff'}},(e,s)=>{if(e)throw e;process.stdout.write(s)})"
- Cole o
<svg> inteiro dentro de .qr-card, com o comentário:
O link de votação não aparece por extenso no slide.
Estados
O slide tem três estados:
votando: mostra pergunta, alternativas neutras, QR-code, total de respostas e status ao vivo. Não mostra percentuais.
revelando: pausa curta, cards respiram e incorretas reduzem brilho.
revelado: correta em verde #35D07F, contagens e percentuais visíveis, barras proporcionais preenchidas.
Comandos:
- Botão discreto "Revelar".
- Tecla
R para revelar.
- Tecla
K para alternar ranking depois da revelação.
- Tecla
V para voltar ao estado de votação durante testes.
Direção visual
Padrão da v1: cards de alternativas com barras internas. Melhor formato para esconder porcentagens antes da revelação e destacar a correta depois.
- Fundo escuro Mira, laranja
#FF904D como identidade.
- Correta em verde
#35D07F, fundo translúcido e halo leve.
- Incorretas continuam legíveis, com menos destaque após revelar.
- Check discreto na correta.
- Barras aparecem só depois da revelação.
- Animação elegante, sem partículas e sem atrapalhar a leitura em projeção.
- A Regra Zero do Mira continua valendo (loop interno contínuo): a bolinha "ao vivo", o brilho do QR e a respiração leve dos cards mantêm o slide vivo.
Template canônico
O template completo (HTML + CSS + JS, um arquivo standalone) está em
references/quiz-template.html. Copie-o para
decks/<nome-do-quiz>/index.html e preencha apenas:
SHEET_ID
QUESTION
OPTIONS
CORRECT
ANSWER_HEADER, se necessário
NAME_HEADER, se necessário
- SVG inline do QR dentro de
.qr-card
Passos
- Confirmar dados obrigatórios. Link de votação, link da planilha, pergunta, alternativas e resposta correta. Se faltar algo, peça e pare.
- Validar a correta. A resposta correta precisa ser exatamente uma das alternativas, ignorando só caixa e acentos para conferência. No HTML, grave o texto canônico da alternativa.
- Extrair
SHEET_ID do link da planilha e verificar o gviz. Se a planilha não estiver pública, peça ajuste.
- Gerar QR localmente com
qrcode e embutir SVG inline. Nunca mostre o link por extenso no slide.
- Montar o slide com o template canônico. Preencha
QUESTION, OPTIONS, CORRECT, SHEET_ID e, se necessário, ANSWER_HEADER e NAME_HEADER.
- Salvar em
decks/<nome-do-quiz>/index.html.
- Reportar o caminho do arquivo, os atalhos (
R, K, V) e lembrar que o slide precisa de internet para ler a planilha, mas abre por duplo clique via file://.
Checklist