Communitygithub.com

nathankim0/app-demo-recorder

Grava clipes de demonstração rápidos e limpos de um aplicativo móvel em execução em um emulador Android ou simulador iOS, para anúncios, prévias na loja, postagens sociais ou ferramentas de vídeo com IA que usam gravação de tela como entrada.

O que é app-demo-recorder?

Esta skill permite que agentes de IA criem gravações de tela de aplicativos móveis de alta qualidade, ideais para materiais de marketing, demonstrações e conteúdo para redes sociais. Ela suporta tanto emuladores Android quanto simuladores iOS, utilizando ferramentas como `adb` e `xcrun simctl` para interagir com os dispositivos e `ffmpeg` para pós-processamento. A skill gerencia todo o fluxo de trabalho, desde a escolha da build (produção vs. depuração) e otimização do desempenho do dispositivo até a gravação, corte de tempos ociosos e verificação final dos clipes. Diferencia-se por produzir vídeos polidos e prontos para uso, sem sobreposições de depuração, anúncios ou barras de status desorganizadas, e inclui funcionalidades como remoção automática de pausas e aceleração uniforme. Não é destinada a testes automatizados ou edição avançada de vídeos finalizados.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nathankim0/app-demo-recorder/tree/HEAD/skills/app-demo-recorder

Perguntar na sua IA favorita

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

Documentação

Gravador de demonstração de app

Crie gravações curtas de tela que pareçam uma pessoa usando o aplicativo com confiança: um recurso por clipe, sem travamentos de carregamento, sem sobreposições de depuração, sem anúncios, uma barra de status organizada.

$S é scripts/appdemo.sh no diretório desta skill. Ela precisa de ffmpeg (brew install ffmpeg), além de adb para Android ou xcrun simctl do Xcode para iOS. Em agentes em sandbox, execute com permissões elevadas: ela se comunica com o emulador, o simulador e grava fora do workspace.

1. Combine o que mostrar

  • Pergunte quais recursos mostrar se o usuário não disse. Grave um clipe por recurso e nomeie os clipes como NN_recurso (01_busca_preco, 02_calculadora. Comece com o que o produto faz de melhor, não com a tela que o app abre.
  • Pergunte qual build e conta usar quando não for óbvio. Material de marketing normalmente precisa de uma build de release de produção com dados reais. Uma build de depuração/staging mostra menus de desenvolvedor, toasts de aviso, dados de teste e roda mais devagar. Não assuma; uma gravação de staging geralmente precisa ser refeita.
  • Se o clipe precisar de um estado pago ou premium, procure uma sobreposição de depuração/desenvolvedor no app antes de mexer em cobranças reais.
  • Credenciais que o usuário fornecer: insira-as com um comando cuja saída você descarta (adb shell input text ... >/dev/null no Android; printf ... | xcrun simctl pbcopy <udid> e depois cole no iOS) em vez de usar ferramentas que registram cada comando, e não as escreva em arquivos.

2. Deixe o dispositivo rápido e silencioso

  • Emulador Android: dê recursos a ele. Um AVD pequeno gagueja na tela e a gagueira aparece no clipe. emulator -avd <nome> -memory 6144 -cores 4 -gpu host -no-snapshot-save -no-boot-anim Se o mesmo id do app já estiver instalado com uma chave de assinatura diferente, use outro AVD em vez de desinstalar (desinstalar apaga os dados do usuário).
  • Build de release instalada e em execução; faça login; dispense pop-ups de primeira execução, solicitações de permissão e anúncios intersticiais antes de gravar.
  • $S statusbar on: hora fixa (APPDEMO_TIME, padrão 9:41), bateria e sinal cheios, ícones de notificação ocultos. $S statusbar off restaura.
  • No Android, não pressione Voltar do sistema na tela raiz do app. Isso finaliza a atividade e uma sobreposição na memória (chave premium, feature flag) é perdida ao reiniciar.

3. Ensaie, depois grave

  1. Ensaie cada clipe uma vez sem gravar. Aprenda os toques, coordenadas e tempos de espera. Abrir a tela uma vez também aquece os caches, então a gravação final carrega mais rápido.
  2. Grave:
    $S start 01_busca_preco
    # manipule o app: adb shell input tap/swipe/text, xcrun simctl, ou sua ferramenta de automação de UI
    $S stop 01_busca_preco        # -> $APPDEMO_OUT/01_busca_preco.mp4
    
    A gravação roda no host (adb emu screenrecord / simctl io recordVideo). Não use adb shell screenrecord no dispositivo em um emulador: ele compete com o app pela CPU e pode congelar a UI, fazendo com que rolagens e toques nunca apareçam.
  3. Envie as ações para um clipe como um lote único com pausas curtas (0.5–2.5 s), não uma chamada de ferramenta por toque. Inspecionar a tela entre as etapas deixa longos trechos mortos na gravação.
  4. Role em etapas deliberadas (cerca de 40 % da tela, 600–800 ms por deslize) para que os espectadores possam ler.
  5. Use a entrada de texto do driver de UI para texto não ASCII (coreano, emoji); adb shell input text só lida com ASCII.
  6. Quando um recurso só mostra valor com dados (um razão, um diário, um carrinho), grave a criação de uma entrada realista, depois exclua-a imediatamente e confirme que a tela voltou ao estado original. Verifique primeiro as configurações de compartilhamento: uma nova postagem pode ser pública.

4. Verifique cada clipe

$S strip $APPDEMO_OUT/01_busca_preco.mp4 /tmp/01.jpg 8

Olhe para a tira, não para seu script: confirme que cada etapa pretendida realmente aconteceu (rolagens moveram, a aba mudou, o resultado apareceu) e nada indesejado está na tela: toasts, teclados cobrindo conteúdo, anúncios, dados pessoais como um endereço real, ou banners de depuração. Regrave clipes com falha; não entregue um clipe cuja ação silenciosamente não fez nada.

5. Corte a espera

$S tighten in.mp4 out.mp4          # corte de lead-in ocioso, trechos congelados -> 0.35 s, tela de resultado final mantida 1.5 s
$S speed  in.mp4 out.mp4 1.3       # aceleração uniforme opcional

tighten começa o clipe 0.4 s antes da primeira ação real (os segundos ociosos após start nunca são perfeitamente parados, então a detecção de congelamento sozinha os perde) e encurta cada trecho onde a imagem não muda, para que os toques se sigam como uma pessoa que conhece o app. Clipes típicos perdem cerca de metade do comprimento. Verifique um clipe apertado com strip também: se uma pequena mudança (digitar um dígito, alternar um chip) foi cortada, diminua --noise; se pausas permanecem, diminua --min-freeze.

6. Entregue

Coloque tudo em uma pasta: clipes brutos, as versões apertadas (recomendadas para edição) e um breve README listando cada clipe, o que mostra e qualquer coisa que o usuário deve saber (dados criados e excluídos, dados pessoais visíveis, recorte da câmera do emulador no topo). Relate os comprimentos dos clipes e o que não pôde ser gravado e por quê.

Habilidades Relacionadas