Communitygithub.com

tach-nguoi - Hiệu ứng tách người

Hiệu ứng cắt tách người trên video của bạn: chữ lớn phía sau người (chữ sau lưng người), giới thiệu nhân vật đóng băng kèm thẻ tên, dừng hình nhanh / dừng hình truyện tranh và phân thân (clone, một hoặc hai lần quay). Xử lý văn bản tiếng Việt chính xác, tự động đặt vị trí đảm bảo dễ đọc, trong vùng an toàn của từng ứng dụng, tỷ lệ 9:16 hoặc 16:9.

tach-nguoi - Hiệu ứng tách người 是什么?

Kỹ năng tach-nguoi (hiệu ứng tách người) được thiết kế để hỗ trợ người sáng tạo nội dung thêm hiệu ứng hình ảnh xoay quanh chính họ trong video. Kỹ năng này hỗ trợ năm hiệu ứng chính: chữ phía sau người (text behind), giới thiệu nhân vật đóng băng kèm thẻ tên (freeze-frame intro), dừng hình nhanh kiểu chụp ảnh (snap freeze), dừng hình truyện tranh (comic freeze) và phân thân (clone) với hai chế độ: một lần quay (trail) và hai lần quay (two takes). Kỹ năng yêu cầu gói Claude trả phí với Claude Code, ffmpeg, Python 3.10+, cùng các thư viện numpy, opencv-python, pillow và PyTorch cho tác vụ tách nền. GPU NVIDIA được khuyến nghị mạnh mẽ để đạt hiệu suất 35-50 khung hình/giây, nếu không sẽ chậm hơn 20-50 lần. Kỹ năng này được xây dựng dành riêng cho người dùng Việt Nam: hỗ trợ nhập liệu tiếng Việt, trả lời bằng tiếng Việt, và tự động kiểm tra độ tương phản để đảm bảo chữ luôn dễ đọc. Tất cả xử lý đều chạy trên máy người dùng, đảm bảo quyền riêng tư; mô hình RVM được tải về một lần từ GitHub. Kỹ năng tạo các ảnh tĩnh kiểm tra nhanh, sau đó xem trước độ phân giải thấp, và cuối cùng là kết xuất đầy đủ. Tệp kế hoạch JSON linh hoạt mô tả chi tiết hiệu ứng: văn bản, thời gian, phông chữ, màu sắc, mức độ che và hoạt ảnh. Tài liệu SKILL.md cung cấp hướng dẫn cài đặt chi tiết, quy tắc sử dụng và cách khắc phục sự cố phổ biến.

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Hiệu ứng tách người (person cut-out effects)

Bạn hỗ trợ người sáng tạo thêm hiệu ứng xoay quanh chính họ trong video. Nhiều người dùng là người Việt: nếu họ viết bằng tiếng Việt, hãy trả lời bằng tiếng Việt giao tiếp, giản dị.

Các tập lệnh nằm trong thư mục scripts/ của kỹ năng này. Chạy chúng bằng đường dẫn đầy đủ (hoặc từ thư mục của kỹ năng) khi đang làm việc trong thư mục của người dùng: tệp cài đặt và mọi đầu ra đều nằm trong thư mục người dùng, không bao giờ ở trong kỹ năng.

Yêu cầu và giới hạn

Hãy thông báo cho người dùng những điều này trước khi cài đặt bất cứ thứ gì và bất cứ khi nào có yêu cầu cần thứ gì đó còn thiếu. python scripts/tn.py check hiển thị những gì đã có.

  • Cần có: gói Claude trả phí với Claude Code; ffmpeg; Python 3.10+ với numpy, opencv-python, pillow. Tác vụ tách nền cần PyTorch (khoảng 2-3 GB, tốt nhất trong môi trường Python riêng) và mô hình RVM, mà PyTorch tải xuống một lần từ GitHub ở lần tách nền đầu tiên (khoảng 15-100 MB).
  • GPU: card NVIDIA được khuyến nghị mạnh mẽ. Với card này, tác vụ tách nền chạy khoảng 35-50 khung hình/giây; trên CPU thì chậm hơn khoảng 20-50 lần (một clip 30 giây có thể mất 10-20 phút). Mọi hiệu ứng đều hoạt động theo cả hai cách.
  • Tốc độ (đã kiểm tra, RTX 4080): ảnh tĩnh trong vài giây; kết xuất đầy đủ ở 1080p chạy 18-27 fps cho chữ sau lưng và phân thân và 9-19 fps cho hiệu ứng đóng băng (một clip 20 giây mất khoảng 1-2 phút, sau khi tách nền một lần).
  • HĐH đã kiểm tra: Windows 10 (mọi lệnh). macOS: chưa được kiểm tra (không có GPU NVIDIA ở đó, nên tác vụ tách nền chậm).
  • Giới hạn: hoạt động tốt nhất với một hoặc hai người và có khoảng trống phía trên hoặc bên cạnh đầu. Cận cảnh dọc quá chặt sẽ làm chữ nhỏ. Chuyển động nhanh, tóc trên nền phức tạp và vật thể trong suốt sẽ tạo ra các cạnh thô. Phân thân cần chân máy hoặc máy quay gần như đứng yên. Phân thân hai lần quay cần cả hai lần quay từ cùng một vị trí.
  • Cái gì sẽ tắt nếu thiếu: nếu không có PyTorch, không có hiệu ứng nào có thể chạy (mọi hiệu ứng đều cần tách nền). Hãy nói điều đó và đề nghị cài đặt (hỏi trước).
  • Quyền riêng tư: mọi thứ đều chạy trên máy tính của người dùng; bản tải xuống duy nhất là mô hình RVM, một lần.

Cài đặt PyTorch (hỏi trước; nói rằng nó khoảng 2-3 GB)

Trong một môi trường riêng, để nó không làm hỏng các công cụ Python khác:

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   (NVIDIA GPU)
tach-nguoi-env/Scripts/python -m pip install torch                                                     (không có NVIDIA GPU)

Sau đó chạy mọi lệnh tn.py với Python đó (tach-nguoi-env/Scripts/python scripts/tn.py ...).

Quy tắc (luôn luôn)

  1. Không bao giờ thay đổi clip gốc của người dùng. Đọc chúng; ghi mọi kết quả thành tệp mới bên cạnh kế hoạch (hoặc nơi người dùng yêu cầu). Không có gì bị ghi đè: chọn tên mới.
  2. Hỏi trước khi cài đặt bất cứ thứ gì (nói cái gì, tại sao, kích thước bao nhiêu, lệnh chính xác).
  3. Ảnh tĩnh trước, sau đó xem trước độ phân giải thấp, rồi kết xuất đầy đủ. Hiển thị ảnh tĩnh và nói những gì các kiểm tra tìm thấy trước khi dành thời gian cho kết xuất đầy đủ.
  4. Đọc các kiểm tra mà tập lệnh in ra (% bị ẩn, độ tương phản, ghi chú KHÔNG ĐỌC ĐƯỢC; cũng được lưu trong checks.json bên cạnh ảnh tĩnh) và thông báo cho người dùng bằng từng câu đơn giản. Hiệu ứng đóng băng in ra khung hình mà chúng đã đóng băng: hãy nhìn vào ảnh tĩnh.

Thiết lập (chỉ lần đầu)

Trước hiệu ứng đầu tiên, chạy python scripts/tn.py settings. Nếu nó báo CHƯA lưu, hãy hỏi các câu hỏi thiết lập bên dưới, từng câu một, bằng ngôn ngữ của người dùng (có kèm từ tiếng Việt); nếu nó báo CHƯA hoàn thành, chỉ hỏi những câu nó liệt kê. Mỗi câu hỏi đều đưa ra các tùy chọn của nó cộng thêm hai tùy chọn nữa:

  • "Mình chưa chắc, giải thích giúp mình": giải thích bằng một hoặc hai câu đơn giản tùy chọn đó thay đổi điều gì, sau đó hỏi lại.
  • "Cho mình xem hết để so sánh": chạy python scripts/tn.py sample <kind> <their clip> --out <project>/tach-nguoi-mau/<kind>.mp4 --text "<một từ trong video của họ>", hiển thị tệp, sau đó hỏi lại. Mất 5-40 giây (hãy nói điều đó); nó sử dụng clip của chính họ, độ phân giải thấp, mọi tùy chọn cạnh nhau, có nhãn.

Lưu từng câu trả lời ngay lập tức: python scripts/tn.py settings set <key>=<value>. Câu trả lời nằm trong tach-nguoi.settings.json trong thư mục dự án của họ, vì vậy thiết lập sẽ không bao giờ chạy lại trừ khi họ yêu cầu ("làm lại phần cài đặt" → tn.py settings reset, sau đó hỏi lại). Các kế hoạch vẫn có thể ghi đè bất kỳ cài đặt nào cho một video.

#Câu hỏi (tiếng Việt)Tùy chọn → giá trịkeyloại mẫu
1Video của bạn đăng ở đâu nhiều nhất?TikTok → tiktok · YouTube Shorts → shorts · Reels → reels · YouTube video ngang → 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 (hỏi mã màu)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 (hỏi mã màu)accent(show outline)
8Có thêm tiếng động không?Có → on · Không → offsfxsfx (phát từng âm thanh)

Giải thích cho "chưa chắc":

  1. Mỗi app che một phần màn hình (nút bấm bên phải, phần mô tả bên dưới). Mình đặt chữ và bảng tên tránh mấy chỗ đó.
  2. Chữ cao, gọn nhìn giống mấy video trend nhất; chữ đậm dễ đọc trên điện thoại nhỏ.
  3. Mình tự kiểm tra độ tương phản: chữ khó đọc trên nền thì mình thêm bóng mờ và báo bạn.
  4. "Ít" thì đầu chỉ chạm nhẹ vào chữ. "Nhiều" thì đầu che hẳn một hai chữ cái giữa từ, nhìn giống trend hơn nhưng khó đọc hơn. Chữ cái đầu và cuối mỗi từ luôn được giữ lại.
  5. Chỉ là cách chữ xuất hiện trong nửa giây đầu.
  6. Viền giúp người nổi lên khỏi nền tối khi video dừng hình.
  7. Tiếng động được tạo mới hoàn toàn, không dính bản quyền.

Đừng hỏi về những thứ mà clip đã trả lời (hình dạng, độ dài của nó). Nếu người dùng nói "cứ làm đi" hoặc "mặc định", chạy python scripts/tn.py settings defaults (tiktok, cao, trắng, medium, rise, white, điểm nhấn vàng, bật âm thanh) và tiếp tục.

Lệnh

Tất cả các lệnh đều chạy với Python có các gói (xem python scripts/tn.py check).

python scripts/tn.py check                                   # đã cài gì, GPU, mô hình RVM
python scripts/tn.py behind plan.json --out out/clip.mp4 --stills    # 4 ảnh tĩnh mỗi văn bản + kiểm tra (nhanh)
python scripts/tn.py behind plan.json --out out/clip.mp4 --preview   # nửa kích thước, chỉ phạm vi văn bản -> out/clip.preview.mp4
python scripts/tn.py behind plan.json --out out/clip.mp4             # kết xuất đầy đủ, giữ nguyên âm thanh gốc

Lần chạy đầu tiên trên một clip sẽ tách người ra khỏi toàn bộ clip (khoảng 50 fps trên RTX 4080) và lưu cache vào _tach-nguoi-work/ bên cạnh đầu ra.

Tệp kế hoạch (bạn viết nó)

{"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: tiếng Việt được chấp nhận (mọi dạng đầu vào; nó được chuẩn hóa). Được hiển thị bằng chữ in hoa trừ khi "upper": false. Ký tự \n buộc thành hai dòng; nếu không, tập lệnh cũng thử bố cục hai dòng và giữ lại bố cục tốt hơn.
  • start / end: giây. Ít nhất 0,5 giây.
  • font: cao (cao, gọn gàng, kiểu cổ điển), dam (đậm), dam-vua (siêu đậm) hoặc đường dẫn tới tệp .ttf.
  • anim: rise, pop, letters (từng chữ một), none. Mọi văn bản cũng mờ dần trong 0,25 giây và đẩy vào 3% trong suốt thời gian tồn tại của nó ("drift": 0 tắt tính năng đó).
  • cover: mức độ người có thể che văn bản. light (luôn dễ đọc), medium (mặc định), bold (kiểu trend nặng).
  • Tùy chọn: x, y (tâm 0-1, để đặt bằng tay), width (tỷ lệ chiều rộng khung hình), shadow (0-1 phát sáng; được đặt tự động từ kiểm tra độ tương phản).

Vị trí tự động: kích thước lớn nhất và vị trí mà văn bản nằm sau đầu và chữ cái đầu và cuối của mỗi từ vẫn hiển thị, trong vùng an toàn của nền tảng (9:16 giữ khoảng cách với thanh trên, các nút bên phải và khu vực chú thích ở dưới cùng).

Hiệu ứng đóng băng khung hình

python scripts/tn.py freeze plan.json --out out/clip.mp4 --stills    # ảnh tĩnh chính mỗi lần đóng băng (nhanh)
python scripts/tn.py freeze plan.json --out out/clip.mp4 --preview   # nửa kích thước -> out/clip.preview.mp4
python scripts/tn.py freeze plan.json --out out/clip.mp4             # kết xuất đầy đủ
{"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ả?!"}
 ]}
  • Video dừng lại trên một khung hình trong hold giây (mặc định: intro 2.4, snap 1.6, comic 1.8), sau đó tiếp tục. Clip dài ra do các lần dừng; âm thanh gốc cũng tạm dừng và các âm thanh riêng của hiệu ứng phát ra (được tạo từ đầu, không có giấy phép; "sfx": false tắt chúng, "sfx_gain" điều chỉnh âm lượng).
  • at là thời gian trong clip nguồn. Tập lệnh đóng băng trên khung hình sắc nét nhất trong vòng ±0,25 giây (không bị nhòe chuyển động); "exact": true giữ nguyên khung hình chính xác. Chọn thời điểm khuôn mặt người rõ ràng: khi tên họ được nói, một phản ứng lớn, một tư thế.
  • intro: nền chuyển sang tối và xám, người nhô lên 6% với một đường viền (white, glow với color, hoặc none) và thẻ tên trượt vào ở phía xa họ. name được hiển thị bằng chữ in hoa, role bằng color.
  • snap: đèn flash trắng + màn trập, khung hình thu nhỏ thành ảnh in nghiêng trên bản sao bị làm mờ.
  • comic: màu phẳng, đường mực, chấm bán sắc, các đường tốc độ nhấp nháy phía sau người, hộp caption tùy chọn (color đặt màu hộp).

Phân thân (clones)

python scripts/tn.py clone plan.json --out out/clip.mp4 --stills | --preview | (đầy đủ)
{"clip": "raw/walk.mp4",
 "items": [{"effect": "trail", "start": 6.3, "end": 13.0, "every": 0.8, "style": "fade", "fade": 0.6}]}
  • trail (một lần quay): trong khi người di chuyển, một bản sao được để lại mỗi every giây giữa start và end và ở lại, sau đó tất cả các bản sao mờ dần trong fade giây. Chỉ người di chuyển mới được sao chép (người đứng yên sẽ không bị ảnh hưởng). style: fade (các bản sao cũ hơn mờ hơn), solid, ghost (trong suốt, nửa xám). Một âm thanh nhấp nháy nhẹ phát ra khi mỗi bản sao xuất hiện ("sfx": false ở đầu kế hoạch tắt nó).
  • two (hai lần quay, một người trong hai vai): {"effect": "two", "second": "raw/take2.mp4", "start": 0, "end": 10, "b_start": 0, "mode": "overlay"}. overlay tách người ra khỏi take 2 và đặt họ lên trên take 1 ("front": "a" giữ người của take 1 ở phía trước nơi họ băng qua); split nối hai take dọc theo cột trống nhất, với một đường nối mềm.
  • Cả hai đều căn chỉnh mọi khung hình với nền trước, do đó máy quay hơi trôi vẫn hoạt động (lệnh in ra khoảng cách máy quay đã di chuyển). Chân máy vẫn là tốt nhất: máy quay di chuyển, lia hoặc cầm tay với các chuyển động lớn sẽ không căn chỉnh được.

Giới hạn đã biết

  • Hoạt động tốt nhất khi có khoảng trống phía trên hoặc bên cạnh đầu. Trong cận cảnh chặt, nơi khuôn mặt lấp đầy khung hình dọc, văn bản sẽ nhỏ phía trên đầu; hãy nói điều đó và đề xuất một cảnh quay rộng hơn hoặc cover: bold.
  • Tách nền toàn bộ video cần PyTorch và mô hình RVM (GPL-3.0, được tải xuống bởi máy người dùng trong lần sử dụng đầu tiên); GPU NVIDIA giúp nó nhanh.

Ví dụ lời nhắc

Các lời nhắc sao chép-dán (thêm ghi chú trong examples/prompts.md):

  • Một dòng khởi đầu: "Làm chữ 'THÀNH CÔNG' sau lưng mình trong clip raw/clip.mp4." → các câu hỏi thiết lập (lần đầu), 4 ảnh tĩnh kèm kiểm tra khả năng đọc, sau đó toàn bộ clip với chữ sau lưng bạn.
  • Yêu cầu chi tiết: "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." → một kết xuất với phần giới thiệu thẻ tên, một lần đóng băng truyện tranh với hộp thoại và một bức ảnh chụp nhanh, mỗi cái đều có âm thanh riêng.
  • Chữ sau lưng, kiểu trend: "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."
  • Phân thân: "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ác bản sao của bạn được để lại dọc theo đường đi của bạn, mờ dần cùng nhau.
  • Hai lần quay: "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."
  • So sánh: "Cho mình xem các kiểu chữ để so sánh." → một hình ảnh cạnh nhau có nhãn trên clip của riêng bạn.
  • Ghi chú chỉnh sửa: "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." → chỉ những thay đổi đó; ảnh tĩnh mới, sau đó kết xuất mới (bản cũ được giữ lại).

Nếu có sự cố xảy ra

Kỹ năng này được xây dựng với Claude Code, vì vậy nó có thể có lỗi và mỗi máy tính đều khác nhau. Khi một bước thất bại, hoặc người dùng nói kết quả trông sai:

  1. Giải thích đơn giản bằng tiếng Việt: cái gì bị lỗi và tại sao, bằng một hoặc hai câu. Không hiển thị stack trace thô trừ khi được yêu cầu.
  2. Đọc kỹ năng này và tập lệnh liên quan (scripts/tn.py và tệp tn_*.py cho hiệu ứng). Chạy python scripts/tn.py check nếu có thể có thứ gì đó bị thiếu.
  3. Sửa nó và chạy lại, viết tệp đầu ra mới. Không bao giờ chạm vào hoặc ghi đè lên clip của người dùng, ngay cả khi đang sửa.
  4. Nếu nguyên nhân nằm trong chính kỹ năng này, hãy nói điều đó và đề xuất báo cáo để nó được sửa cho mọi người: https://github.com/thegentleminh/thegentleminh-skills/issues

Lỗi thường gặp

  • No module named 'torch': PyTorch chưa được cài đặt trong Python đã chạy lệnh; hãy sử dụng Python tach-nguoi-env (xem phần cài đặt ở trên).

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知识".

相关技能