Communitygithub.com

Kambaxon/Kambax-tiktok

Apenas usar quando o usuário solicitar explicitamente o estilo de cartografia/geopolítica (mapa de satélite, países coloridos, geomania99). O padrão para novos vídeos é doku-3d-video.

O que é Kambax-tiktok?

Esta habilidade permite criar vídeos de geopolitica no estilo de mapas de satélite com países coloridos, animações e narração em alemão, voltados para o TikTok. O fluxo de trabalho é totalmente baseado em código, utilizando HyperFrames para renderização frame a frame. O processo inclui montagem do cenário (mapas, ícones, figuras, legendas), geração de voz via Piper TTS (ou substituição por áudio do usuário), animação com GSAP e renderização final em 1080x1920 a 30fps. A habilidade impõe restrições de rede (acesso apenas a npm, PyPI e GitHub) e contorna bloqueios de CDN fazendo o download local de dependências. O resultado é um vídeo de 30 a 75 segundos com roteiro dramático (gancho, escalada, virada e pergunta final), sem introdução ou logotipo. A habilidade é destinada exclusivamente a criadores que solicitem explicitamente o estilo cartográfico; caso contrário, usa-se o skill padrão doku-3d-video.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kambaxon/Kambax-tiktok/tree/HEAD/.claude/skills/geo-karten-video

Perguntar na sua IA favorita

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

Documentação

Vídeos de Mapas Geopolíticos (TikTok, Alemão)

O usuário é um criador de TikTok. Cada vídeo será construído completamente no código com HyperFrames (primeiro leia o skill hyperframes: contrato de renderização, check, snapshot, render). Idioma: sempre alemão – roteiro, narração, legendas, rótulos, respostas ao usuário.

Fluxo (sem perguntas adicionais quando o usuário indicar um tema)

  1. Uma vez por container: bash ~/.claude/skills/geo-karten-video/scripts/setup.sh (tiles, ícones, fontes, GSAP local, limites de fronteira, voz Piper. Rede: apenas npm, PyPI e GitHub estão abertos. Esri/NASA-GIBS/HuggingFace/jsdelivr estão bloqueados – por isso estes desvios.)
  2. Projeto: bash scripts/projekt.sh <slug> -> /home/user/videos/<slug>
  3. Roteiro (skript.txt, uma linha = um beat/frase). Duração: 30 s ~ 65-70 palavras, 60-75 s ~ 150-170. Escreva números por extenso para a voz, exibição com {}: sechsundvierzig{46}. Abreviações por extenso (Lkw -> Laster). Fatos apenas se comprovados; valores estimados com "cerca de"/"aproximadamente" e conjuntivo em experimentos mentais.
  4. Narração + tempos das palavras: python3 scripts/voice.py skript.txt assets/audio --speed 1.05 -> voice.wav (48 kHz, -15 LUFS) + words.json. Se o usuário tiver uma gravação própria: usá-la (tempos das palavras então com npx hyperframes transcribe --model small --language de, se os modelos estiverem acessíveis).
  5. Mapa: python3 scripts/map.py assets/map --bbox lon0,lon1,lat0,lat1 --laender DEU,... --staedte "Berlin:13.40,52.52;..." (regiões/estados: --admin1 "Bayern;Sachsen-Anhalt"). Imagem <= ~5000 px de lado.
  6. Ícones: python3 scripts/icons.py --suche "oil" e python3 scripts/icons.py assets/icons name=HEX ...
  7. Construir cenas - modelo: templates/beispiel-keiner-arbeitet/ (index.html, karte.html, skript.txt). Legendas: python3 scripts/captions.py assets/audio/words.json compositions/untertitel.html --duration <s>
  8. npx hyperframes check --json -> npx hyperframes snapshot --at ... -o snap (máx. ~6 pontos de tempo por chamada, senão o processo é encerrado) -> visualizar imagens -> corrigir.
  9. Renderizar em segundo plano: npx hyperframes render -o renders/<slug>.mp4 -q delivery -w 2 --quiet (run_in_background). Em seguida, verificar com ffprobe, verificar contato, enviar o arquivo ao usuário.

O Visual (analisado a partir de 3 vídeos de referência – construir exatamente assim)

Formato: 1080x1920, 30 qps, 30-75 s. Sem introdução, sem logotipo. O frame 0 já é o gancho (país colorido + figura/ícone).

Mapa = palco, um movimento de câmera contínuo. Imagem de satélite, mar em verde-escuro petróleo, terra em verde/bege natural. Quase sem cortes bruscos: a câmera dá zoom/panorâmica entre os beats (0,8 s power2.inOut), com deriva lenta entre eles. Câmera = um wrapper #k-cam (transform-origin 0 0), alvo via cam(px, py, scale) -> pixels do mapa no centro da tela (540, 900). Tudo que está vinculado a locais (ícones, rótulos, países) fica DENTRO do wrapper da câmera em pixels do mapa. Números grandes e rótulos "TAG 1" ficam no espaço da tela.

Países como caminho SVG: área semitransparente (fill-opacity ~0,66, textura de satélite transparece), borda clara (~2,5 px), sombra projetada drop-shadow(0 10px 10px rgba(0,0,0,.45)). Cor animada via GSAP no CSS fill (não attr, CSS sobrepõe o atributo). Cores fixas por país: Alemanha #2f5bea (azul royal), Turquia/Rússia/Irã #e02424 (vermelho), Ucrânia #e5a82e (laranja-amarelo), EUA #5aa9ff (azul claro), região de destaque #a8d82a (lima), partido/região-destaque #f2a41c (laranja). Mudanças de cor contam a história (ex.: azul -> cinza -> vermelho em caso de queda).

Nomes dos países: Fonte cursiva Kalam 700, branca, inclinada (-8 a -14 graus), grande, com sombra, de preferência cortada.

Figuras/pessoas: PNG com fundo removido (do usuário, pois não há geração de imagem) ou figuras OpenMoji, sempre com borda branca de adesivo + sombra (classe .st: drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff) drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(5px 9px 7px rgba(0,0,0,.45))). Elas ficam sobre seu país, aparecem (back.out(2.2), 0,45 s) e encolhem ao sair (0,22 s power3.in).

Ícones: Planos com contorno escuro grosso (OpenMoji): bomba de gasolina, barril de petróleo, dinheiro, explosão, navios, bandeiras, urna... Quantidades = muitos ícones pequenos espalhados pelas cidades, escalonados com 40-70 ms.

Números: Montserrat Black, branco, gigantesco (170-230 px), sombra dura, no topo da imagem (top ~240 px), contagem crescente (1,0 s power2.out). Rótulos de data/dia com 96 px.

Legendas: UMA palavra por aparição, MAIÚSCULAS, Montserrat Black ~68 px, branca com sombra escura, centralizada em y ~1400 (como na referência, terço inferior), pequeno pop por palavra. Gerada por captions.py.

Evidências: Screenshots de manchetes/documentos como "papéis" que voam inclinados; ocasionalmente foto B-Roll (2-3 s), depois de volta ao mapa.

Som: A narração é o relógio. SFX com moderação (assets/sfx): pop para adesivos importantes, whoosh para movimentos de câmera, error para cruz/parada, impact-bass no ponto de virada. Música apenas se o usuário fornecer um arquivo (sem acesso a música aqui).

Dramaturgia

  1. Gancho 0-3 s: pergunta ou notícia urgente + rosto/país visível imediatamente.
  2. Contexto: número/data/fonte concreta.
  3. Escalada em etapas (Dia 1 / Dia 3 / Dia 7 ou evento -> reação -> consequência), a cada 1-3 s um novo elemento.
  4. Ponto de virada/desfecho (número vira, país muda de cor, shake + impact).
  5. Final: zoom out + pergunta aberta aos espectadores (comentários). Sem créditos finais.

Armadilhas Técnicas (medidas)

  • GSAP incluído localmente (assets/vendor/gsap.min.js), CDN está bloqueado.
  • snapshot com muitos pontos de tempo é encerrado -> em blocos de ~6.
  • Render com -w 2 (imagem grande do mapa + filtros consomem RAM).
  • A voz do Piper soa sintética (16 kHz) – oferecer ao usuário uma gravação própria ou arquivo do ElevenLabs; então substituir voice.wav e recalcular os tempos das palavras.
  • Crédito da imagem pequeno no canto superior direito: "Imagem: NASA Blue Marble".
  • O container é volátil: enviar vídeos prontos imediatamente ao usuário; skills/projetos só permanecem se enviados a um repositório Git.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas