Communitygithub.com

tach-nguoi

Efeitos de recorte de pessoa no seu próprio vídeo - texto GRANDE atrás da pessoa (chữ sau lưng người), uma introdução de personagem congelada com cartão de nome, congelamento instantâneo / congelamento de história em quadrinhos e clones (phân thân, uma ou duas tomadas). Texto em vietnamita feito corretamente, posicionado automaticamente para permanecer legível, dentro da área segura de cada aplicativo, 9:16 ou 16:9. Use quando o usuário quiser "texto atrás de mim", "chữ sau lưng", "chữ xuyên người", "giới thiệu nhân vật", "dừng hình", "freeze frame", "phân thân", "clone" ou outros efeitos de recorte em seu próprio vídeo.

O que é tach-nguoi?

Esta skill permite que você crie efeitos de recorte de pessoa em seus próprios vídeos, como texto atrás da pessoa, introduções de personagens com cartão de nome congelado, congelamento instantâneo estilo história em quadrinhos e clones (uma ou duas tomadas). A skill é otimizada para o público vietnamita, processando texto corretamente e posicionando-o automaticamente para máxima legibilidade, respeitando as áreas seguras de cada plataforma (TikTok, YouTube Shorts, Reels, YouTube horizontal). Suporta os formatos 9:16 e 16:9. A skill possui comandos para instalação e configuração, incluindo verificação de requisitos (ffmpeg, Python 3.10+, PyTorch com placa NVIDIA para desempenho ideal) e um assistente de configuração que pergunta preferências do usuário como plataforma, estilo de fonte, cor, nível de cobertura, animação e efeitos sonoros. Os efeitos são gerados em etapas: primeiro imagens estáticas para verificação rápida, depois uma prévia em baixa resolução e, finalmente, a renderização completa. A skill também gerencia planos de efeitos em JSON, permitindo controle preciso sobre texto, animações, congelamentos e clones. Tudo é processado localmente no computador do usuário, garantindo privacidade.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thegentleminh/thegentleminh-skills/tree/HEAD/plugins/tach-nguoi/skills/tach-nguoi

Perguntar na sua IA favorita

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

Documentação

Hiệu ứng tách người (efeitos de recorte de pessoa)

Você ajuda um criador a colocar efeitos ao redor da pessoa em seu próprio vídeo. Muitos usuários são vietnamitas: se eles escreverem em vietnamita, responda em vietnamita simples e falado.

Os scripts estão na pasta scripts/ desta skill. Execute-os usando o caminho completo (ou a partir da pasta da skill) enquanto trabalha na própria pasta do usuário: o arquivo de configurações e todas as saídas vão para a pasta do usuário, nunca para a skill.

Requisitos e limites

Informe o usuário sobre estes antes de instalar qualquer coisa e sempre que uma solicitação precisar de algo que esteja faltando. python scripts/tn.py check mostra o que está presente.

  • Necessita: um plano Claude pago com Claude Code; ffmpeg; Python 3.10+ com numpy, opencv-python, pillow. O recorte precisa do PyTorch (cerca de 2-3 GB, de preferência em seu próprio ambiente Python) e do modelo RVM, que o PyTorch baixa uma vez do GitHub no primeiro recorte (cerca de 15-100 MB).
  • GPU: uma placa NVIDIA é fortemente recomendada. Com uma, o recorte roda a cerca de 35-50 quadros por segundo; na CPU é aproximadamente 20-50× mais lento (um clipe de 30 segundos pode levar 10-20 minutos). Cada efeito funciona de qualquer maneira.
  • Velocidade (testado, RTX 4080): imagens estáticas em segundos; renderizações completas em 1080p rodam a 18-27 fps para texto atrás e clones e 9-19 fps para efeitos de congelamento (um clipe de 20 segundos em cerca de 1-2 minutos, após o recorte inicial).
  • SO testado: Windows 10 (todos os comandos). macOS: não testado ainda (sem GPU NVIDIA, então o recorte é lento).
  • Limites: funciona melhor com uma ou duas pessoas e espaço acima ou ao lado da cabeça. Close-ups verticais apertados resultam em texto pequeno. Movimento rápido, cabelo contra um fundo ocupado e objetos transparentes criam bordas irregulares. Clones precisam de um tripé ou uma câmera quase parada. Clones de duas tomadas precisam de ambas as tomadas do mesmo local.
  • O que desativa sem ele: sem PyTorch, nenhum efeito pode ser executado (cada efeito precisa do recorte). Diga isso e ofereça a instalação (pergunte primeiro).
  • Privacidade: tudo é executado no computador do usuário; o único download é o modelo RVM, uma vez.

Instalando o PyTorch (pergunte primeiro; diga que tem cerca de 2-3 GB)

Em um ambiente separado, para não quebrar outras ferramentas Python:

python -m venv tach-nguoi-env
tach-nguoi-env/Scripts/python -m pip install numpy opencv-python pillow      (macOS/Linux: tach-nguoi-env/bin/python)
tach-nguoi-env/Scripts/python -m pip install torch --index-url https://download.pytorch.org/whl/cu126   (GPU NVIDIA)
tach-nguoi-env/Scripts/python -m pip install torch                                                     (sem GPU NVIDIA)

Em seguida, execute cada comando tn.py com esse Python (tach-nguoi-env/Scripts/python scripts/tn.py ...).

Regras (sempre)

  1. Nunca altere os clipes originais do usuário. Leia-os; escreva cada resultado como um novo arquivo ao lado do plano (ou onde o usuário disser). Nada é sobrescrito: escolha um novo nome.
  2. Pergunte antes de instalar qualquer coisa (diga o quê, porquê, tamanho, o comando exato).
  3. Imagens estáticas primeiro, depois uma prévia em baixa resolução, depois a renderização completa. Mostre as imagens estáticas e diga o que as verificações encontraram antes de gastar tempo em uma renderização completa.
  4. Leia as verificações que o script imprime (porcentagem oculta, contraste, notas NÃO LEGÍVEL; também salvas em checks.json ao lado das imagens estáticas) e informe o usuário em uma frase simples cada uma. Efeitos de congelamento imprimem em qual quadro eles congelaram: olhe as imagens estáticas.

Configuração (apenas na primeira vez)

Antes do primeiro efeito, execute python scripts/tn.py settings. Se ele disser Ainda não salvo, faça as perguntas de configuração abaixo, uma de cada vez, no idioma do usuário (redação em vietnamita fornecida); se ele disser Não finalizado, pergunte apenas as que ele listar. Cada pergunta oferece suas opções mais duas:

  • "Mình chưa chắc, giải thích giúp mình": explique em uma ou duas frases simples o que a escolha muda e pergunte novamente.
  • "Cho mình xem hết để so sánh": execute python scripts/tn.py sample <kind> <their clip> --out <project>/tach-nguoi-mau/<kind>.mp4 --text "<uma palavra do vídeo deles>", mostre o arquivo e pergunte novamente. Leva de 5 a 40 segundos (diga isso); usa o próprio clipe deles, baixa resolução, todas as opções lado a lado, etiquetadas.

Salve cada resposta imediatamente: python scripts/tn.py settings set <chave>=<valor>. As respostas ficam em tach-nguoi.settings.json na pasta do projeto do usuário, então a configuração nunca é executada novamente, a menos que ele peça ("làm lại phần cài đặt" → tn.py settings reset, em seguida, pergunte novamente). Os planos ainda podem substituir qualquer configuração para um vídeo.

#Pergunta (vietnamita)Opções → valorchavetipo de amostra
1Video của bạn đăng ở đâu nhiều nhất?TikTok → tiktok · YouTube Shorts → shorts · Reels → reels · YouTube vídeo horizontal → youtubeplatformplatform
2Bạn thích kiểu chữ nào?Chữ cao, gọn → cao · Chữ đậm → dam · Đậm vừa → dam-vuafontfont
3Chữ màu gì?Trắng → #ffffff · Vàng → #ffd400 · Đen → #111111 · Màu của kênh (peça o código da cor)colorcolor
4Người che chữ tới mức nào?Ít, chữ lúc nào cũng dễ đọc → light · Vừa → medium · Nhiều, kiểu trend → boldcovercover
5Chữ hiện ra kiểu nào?Trồi lên → rise · Bật ra → pop · Hiện từng chữ cái → letters · Hiện luôn → noneanimanim
6Lúc giới thiệu nhân vật, viền quanh người kiểu nào?Viền trắng → white · Viền phát sáng → glow · Không viền → noneoutlineoutline
7Màu điểm nhấn (vạch cạnh tên, dòng chức danh, hộp chữ truyện tranh)?Vàng → #ffd400 · Màu của kênh (peça o código da cor)accent(mostrar outline)
8Có thêm tiếng động không?Có → on · Không → offsfxsfx (toca cada som)

Explicações para dar para "chưa chắc":

  1. Cada aplicativo cobre uma parte da tela (botões à direita, descrição abaixo). Colocamos o texto e a placa de nome evitando esses lugares.
  2. Fonte alta e compacta parece com os vídeos mais populares; fonte em negrito é mais fácil de ler em celulares pequenos.
  3. Nós mesmos verificamos o contraste: se o texto for difícil de ler no fundo, adicionamos uma sombra fraca e avisamos você.
  4. "Pouco" significa que a cabeça apenas toca levemente o texto. "Muito" significa que a cabeça cobre completamente uma ou duas letras no meio da palavra, parecendo mais com a tendência, mas mais difícil de ler. A primeira e a última letra de cada palavra são sempre mantidas.
  5. É apenas a forma como o texto aparece no primeiro meio segundo.
  6. A borda ajuda a pessoa a se destacar do fundo escuro quando o vídeo congela.
  7. Os sons são criados do zero, sem direitos autorais.

Não pergunte sobre coisas que o clipe já responde (sua forma, sua duração). Se o usuário disser "cứ làm đi" ou "mặc định", execute python scripts/tn.py settings defaults (tiktok, cao, branco, medium, rise, white, accent amarelo, som ligado) e continue.

Comandos

Todos os comandos são executados com o Python que tem os pacotes (veja python scripts/tn.py check).

python scripts/tn.py check                                   # o que está instalado, GPU, modelo RVM
python scripts/tn.py behind plan.json --out out/clip.mp4 --stills    # 4 imagens estáticas por texto + verificações (rápido)
python scripts/tn.py behind plan.json --out out/clip.mp4 --preview   # metade do tamanho, apenas o intervalo do texto -> out/clip.preview.mp4
python scripts/tn.py behind plan.json --out out/clip.mp4             # renderização completa, áudio original mantido

A primeira execução em um clipe recorta a pessoa de todo o clipe (cerca de 50 fps em uma RTX 4080) e o armazena em cache em _tach-nguoi-work/ ao lado da saída.

Arquivo de plano (você escreve)

{"clip": "raw/my-clip.mp4",
 "items": [{"text": "Thành công", "start": 1.0, "end": 7.0,
            "font": "cao", "color": "#ffffff", "anim": "rise", "cover": "medium"}]}
  • text: vietnamita é permitido (qualquer forma de entrada; é normalizado). Mostrado em maiúsculas, a menos que "upper": false. Um \n força duas linhas; caso contrário, o script também tenta um layout de duas linhas e mantém o melhor.
  • start / end: segundos. Pelo menos 0,5 s.
  • font: cao (alta e condensada, o visual clássico), dam (pesada), dam-vua (extra negrito) ou um caminho para um .ttf.
  • anim: rise, pop, letters (uma letra de cada vez), none. Cada texto também desaparece em 0,25 s e desliza 3% ao longo de sua vida ("drift": 0 desativa isso).
  • cover: o quanto a pessoa pode cobrir o texto. light (sempre fácil de ler), medium (padrão), bold (visual de tendência pesada).
  • Opcional: x, y (centro 0-1, para colocar manualmente), width (fração da largura do quadro), shadow (0-1 brilho; definido automaticamente a partir da verificação de contraste).

O posicionamento é automático: o maior tamanho e posição onde o texto fica atrás da cabeça e a primeira e última letras de cada palavra permanecem visíveis, dentro das áreas seguras da plataforma (9:16 mantém-se longe da barra superior, dos botões à direita e da área de legenda na parte inferior).

Efeitos de quadro congelado

python scripts/tn.py freeze plan.json --out out/clip.mp4 --stills    # imagens estáticas principais por congelamento (rápido)
python scripts/tn.py freeze plan.json --out out/clip.mp4 --preview   # metade do tamanho -> out/clip.preview.mp4
python scripts/tn.py freeze plan.json --out out/clip.mp4             # renderização completa
{"clip": "raw/my-clip.mp4",
 "items": [
  {"effect": "intro", "at": 2.0, "name": "Anh Tuấn", "role": "Đầu bếp · 20 năm nghề", "outline": "white", "color": "#ffd400"},
  {"effect": "snap", "at": 8.5},
  {"effect": "comic", "at": 13.2, "caption": "Ủa, thiệt hả?!"}
 ]}
  • O vídeo pausa em um quadro por hold segundos (padrões: intro 2,4, snap 1,6, comic 1,8), depois continua. O clipe fica mais longo devido às pausas; o som original também pausa e os sons do próprio efeito tocam (criados do zero, sem licenças; "sfx": false os desativa, "sfx_gain" os dimensiona).
  • at é um tempo no clipe de origem. O script congela no quadro mais nítido dentro de ±0,25 s (sem desfoque de movimento); "exact": true mantém o quadro exato. Escolha momentos em que o rosto da pessoa está claro: quando seu nome é dito, uma grande reação, uma pose.
  • intro: o fundo escurece e fica cinza, a pessoa salta 6% para a frente com um contorno (white, glow em color ou none) e o cartão de nome desliza para o lado oposto a ela. name é mostrado em maiúsculas, role em color.
  • snap: flash branco + obturador, o quadro encolhe em uma foto impressa inclinada sobre uma cópia desfocada.
  • comic: cores planas, linhas de tinta, pontos de meio-tom, linhas de velocidade tremeluzentes atrás da pessoa, caixa de caption opcional (color define a cor da caixa).

Clones (phân thân)

python scripts/tn.py clone plan.json --out out/clip.mp4 --stills | --preview | (completo)
{"clip": "raw/walk.mp4",
 "items": [{"effect": "trail", "start": 6.3, "end": 13.0, "every": 0.8, "style": "fade", "fade": 0.6}]}
  • trail (uma tomada): enquanto a pessoa se move, uma cópia é deixada a cada every segundos entre start e end e permanece, então todas as cópias desaparecem ao longo de fade segundos. Apenas a pessoa que se move é copiada (alguém parado é deixado em paz). style: fade (cópias mais antigas mais fracas), solid, ghost (transparente, meio cinza). Um som de flash suave toca conforme cada cópia aparece ("sfx": false no topo do plano desativa isso).
  • two (duas tomadas, uma pessoa em dois papéis): {"effect": "two", "second": "raw/take2.mp4", "start": 0, "end": 10, "b_start": 0, "mode": "overlay"}. overlay recorta a pessoa da tomada 2 e a coloca sobre a tomada 1 ("front": "a" mantém a pessoa da tomada 1 na frente onde elas se cruzam); split une as duas tomadas ao longo da coluna mais vazia, com uma costura suave.
  • Ambos alinham cada quadro com o fundo primeiro, então uma câmera ligeiramente instável ainda funciona (o comando imprime o quanto a câmera se moveu). Um tripé ainda é o melhor: uma câmera em movimento, panorâmica ou de mão com grandes movimentos não se alinhará.

Limitações conhecidas

  • Funciona melhor quando há espaço acima ou ao lado da cabeça. Em um close-up apertado onde o rosto preenche um quadro vertical, o texto acaba pequeno acima da cabeça; diga isso e sugira um enquadramento mais aberto ou cover: bold.
  • O recorte de vídeo inteiro precisa do PyTorch e do modelo RVM (GPL-3.0, baixado pela máquina do usuário no primeiro uso); uma GPU NVIDIA torna rápido.

Exemplos de prompts

Prompts para copiar e colar (mais com notas em examples/prompts.md):

  • Iniciador de uma linha: "Làm chữ 'THÀNH CÔNG' sau lưng mình trong clip raw/clip.mp4." → perguntas de configuração (primeira vez), 4 imagens estáticas com a verificação de legibilidade, então o clipe completo com o texto atrás de você.
  • Briefing detalhado: "Clip raw/phong-van.mp4: giây 2 giới thiệu nhân vật tên 'Chị Lan', chức danh 'Chủ quán phở · 15 năm', giây 9 dừng hình kiểu truyện tranh với câu 'Thiệt luôn hả?!', giây 14 chụp ảnh dừng hình. Có tiếng động." → uma renderização com uma introdução de cartão de nome, um congelamento de história em quadrinhos com um balão de fala e um instantâneo de foto, cada um com seu próprio som.
  • Texto atrás, visual de tendência: "Chữ 'ĐÀ LẠT' sau lưng mình, cho đầu che nhiều như trend, chữ vàng, hiện từng chữ cái."
  • Clones: "Clip raw/di-bo.mp4 mình đi ngang qua: để lại bóng mình mỗi 0,8 giây rồi mờ dần." → cópias suas deixadas ao longo do seu caminho, desaparecendo juntas.
  • Duas tomadas: "Mình quay 2 lần cùng chỗ (raw/vai-a.mp4, raw/vai-b.mp4), ghép thành 2 người nói chuyện với nhau."
  • Comparar: "Cho mình xem các kiểu chữ để so sánh." → uma comparação etiquetada lado a lado no seu próprio clipe.
  • Notas de revisão: "Chữ to hơn chút, dời lên trên, dừng hình lâu hơn 1 giây, bỏ tiếng chụp ảnh." → apenas essas alterações; novas imagens estáticas, depois uma nova renderização (a antiga é mantida).

Se algo der errado

Esta skill foi construída com Claude Code, então pode ter bugs, e cada computador é diferente. Quando uma etapa falhar, ou o usuário disser que o resultado parece errado:

  1. Explique claramente, em vietnamita: o que falhou e porquê, em uma ou duas frases. Sem rastreamentos de pilha brutos, a menos que solicitado.
  2. Leia esta skill e o script envolvido (scripts/tn.py e o arquivo tn_*.py para o efeito). Execute python scripts/tn.py check se algo pode estar faltando.
  3. Corrija e execute novamente, escrevendo um novo arquivo de saída. Nunca toque ou sobrescreva os clipes do usuário, mesmo enquanto corrige.
  4. Se a causa estava nesta própria skill, diga e sugira relatar para que seja corrigido para todos: https://github.com/thegentleminh/thegentleminh-skills/issues

Falhas comuns

  • No module named 'torch': PyTorch não está instalado no Python que executou o comando; use o tach-nguoi-env (veja a seção de instalação).

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

anh-thanh-video

Turn photos into a video - a beat-synced photo edit (photos change on the beat with flash, pop, shake and snap-and-ease camera moves, like the "2 ảnh / 3 ảnh" templates but with any song the user owns and any number of photos), a gentle photo album (slow push toward faces, soft crossfades, title and captions), or a 2.5D "3D zoom" where near things move more than far things. Faces stay in frame, Vietnamese text done right, 9:16 / 16:9 / 1:1 / 4:5. Use for "biến ảnh thành video", "ghép ảnh thành video", "video ảnh theo nhạc", "photo slideshow", "mẫu capcut nhiều ảnh", "video kỷ niệm", "album ảnh cưới/gia đình", "ảnh 3D", product photo videos.

dung-video

Set up a computer for editing YouTube videos with Claude Code and do basic edits with the free tool ffmpeg - check and install ffmpeg/Python, create a tidy project folder, trim, join, make a vertical 9:16 version for Shorts, Vietnamese subtitles (.srt) with Whisper, even out loudness, export with YouTube's recommended upload settings, grab a thumbnail frame. Use when the user wants to set up video editing, cut or join clips, make Shorts, add subtitles, fix volume, or export a video for YouTube.

video-giai-thich

Make a Vietnamese animated explainer video (9:16, TikTok / Reels / Shorts) from a topic or a question - "vì sao bầu trời màu xanh?", "lãi kép là gì?" - with a spoken-Vietnamese script, a voice (ElevenLabs, your own recording, or none), on-screen words that appear as they are spoken, and pictures animated in code and timed to the words. Five looks (riso print, chalkboard, newsprint, blueprint, poster). Use for "làm video giải thích", "video kiến thức", "video khoa học", "giải thích bằng hoạt hình", "explainer video in Vietnamese", "vibe coding animation", "video kiểu Vibe知识".

Habilidades Relacionadas