Communitygithub.com

PrankMedic/video-phu-hinh

AI 에이전트가 화자 영상에 맞춰 자동으로 그래픽 오버레이, 작은 화면 프레임, 숫자, 목록, 비교, 단계, 막대 차트 및 가라오케 자막을 Remotion 기반으로 추가합니다.

video-phu-hinh란 무엇인가요?

이 스킬은 화자 중심 영상에 대해 음성과 얼굴을 유지하면서도 화면을 작게 줄이고 텍스트와 그래픽을 우선시하는 'phủ hình(그래픽 오버레이)' 스타일 영상을 제작합니다. 사용자는 영상 파일과 대본을 입력하면 에이전트가 음성 정리, 비디오 정규화, 그래픽 비트(Beat) 설계, Remotion 컴포지션 생성 및 렌더링까지 전 과정을 안내합니다. 지원하는 그래픽 종류는 단어 강조, 숫자 표시, 목록, 비교, 단계, 막대 차트, 가라오케 자막 등이며 각각의 타이밍은 음성 워드 타임라인에 동기화됩니다. 주요 플랫폼은 Remotion(Node.js)이며 Python 스크립트로 음성 준비 및 데이터 검증을 수행합니다. 에이전트는 CLAUDE.md를 읽고 콘텐츠를 검토한 후 포맷을 제안하며, 미디어에 개인 식별 정보가 포함된 경우 해당 부분을 건너뛰도록 설계되어 있습니다. 결과물은 9:16 세로 캔버스에 레터박스 처리되고, 얼굴은 자동 추적 없이 고정 박스로 처리되며 모든 그래픽은 정해진 좌표계 내에서 배치됩니다. 최종 오디오는 -14 LUFS로 노멀라이즈되고, 데이터 검증 스크립트를 통과해야 합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/PrankMedic/NoleXSapien/tree/main/skills/video-phu-hinh

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Video phủ hình theo lời

Dùng khi cần giữ giọng và sự hiện diện người nói nhưng ưu tiên khung nhỏ, chữ và đồ hoạ. Đọc CLAUDE.md, review nội dung và nguồn, đề xuất định dạng rồi đợi chọn nếu chưa chọn. Không xử lý media có dữ liệu nhận diện; dừng phần đó để người phụ trách loại bỏ trước. Không tự đăng, gửi, commit hay push.

  1. Chạy python3 scripts/chuan_bi_giong.py <video> Output/video/<slug>. Đọc báo cáo và nghe giọng gốc; phải dò nói vấp bằng scripts/tim_loi_noi.py trước khi cắt (script chuẩn bị giọng đã gọi, có thể chạy riêng khi sửa). Không suy ra hết nói vấp từ phụ đề đã làm gọn.
  2. Chuẩn hoá video nguồn thành canvas dọc 9:16 bằng letterbox, không cắt cận mặt. Đo face trên chính canvas này: {x,y,radius} chuẩn hoá 0–1, radius theo bề rộng, mặc định 0.14. Nguồn khác tỷ lệ phải chuyển trước; kiểm lại nếu mặt chuyển vị trí. Không có theo dõi mặt tự động; dùng vùng bao mọi vị trí mặt hoặc chia composition khi bố cục thay đổi. Chỉ dùng video đã loại bỏ nhận diện theo quy tắc dự án.
  3. Chuyển words {w,s,e} sang {text,startMs,endMs} với ms = giây × 1000. Giữ words gốc cùng segments gốc; audio từ video được cắt cùng segments. Không dùng đồng thời giọng cắt sẵn với words gốc. Media đặt trong public, đường dẫn tương đối. audio có thể rỗng vì PhuHinh dùng giọng trong video; music, musicVolume tuỳ chọn, nhạc không nằm trong lớp video co giãn.
  4. Lập beats {atPhrase,nth?,untilPhrase,untilNth?,mode,content,source?,box?}. Cụm cuối kết thúc ở endMs của từ cuối; nth đếm từ 0. Không chồng beats, mốc tăng dần. Khoảng trống tự về card; nên phủ toàn bộ lời bằng beats để kiểm nhịp rõ ràng. full: người nói vừa khung, contain, không cắt cận, tối đa 8 giây kể cả nhiều beat full liền nhau; card: người nói nhỏ góc trên, đồ hoạ dưới; over: đồ hoạ trong suốt, box tránh mặt cả lúc khung đang chuyển; cover: phủ kín bằng nền và đồ hoạ nhưng giọng video tiếp tục. Chuyển khung liên tục trong 650 ms.
  5. Content có kind là word, number, list, compare, steps, bars, và text. number thêm value, spoken là cụm số được nói, ví dụ value 12, spoken “mười hai”. spokenNth tuỳ chọn đếm lần xuất hiện cụm số trong chính beat, từ 0; mốc mục nth vẫn theo toàn bộ lời đã cắt. Giá trị chạy lên và chỉ đạt đủ khi nói xong cụm số. Các kiểu nhiều mục dùng items:[{text,atPhrase,nth?,value?,spoken?}], từng mục chỉ hiện khi nói đến; bars dùng value, compare chia cột, steps có mũi tên. spoken là ánh xạ thủ công cần người kiểm xác nhận ý nghĩa với value; script không hiểu ngữ nghĩa số viết bằng chữ. Không đặt số sớm trong tiêu đề hoặc nhãn mục; để value phụ trách hiện số. Giữ tối đa vài mục ngắn để không tràn vùng. Chữ chính 72 px trở lên.
  6. Box {x,y,width,height} tính bằng px 1080×1920, giới hạn x 64–1016, y 100–1260; mặc định card ở y620, over y900. Phụ đề y1330 trong vùng 1300–1520. Nguồn dưới phụ đề phải có tác giả/tổ chức, năm, link và ngày truy cập cho thông tin y khoa; dữ kiện chưa kiểm chứng phải ghi chờ duyệt. Nhãn giọng AI dùng aiVoice:true nếu cần.
  7. Viết JSON chứa props, chạy python3 scripts/kiem_phu_hinh.py <du-lieu.json>; phải sửa mốc không thấy, full dài, over đè mặt, số không có trong lời. Mã thoát 0 đạt kiểm dữ liệu, 1 lỗi kiểm, 2 lỗi đọc. Công cụ kiểm mặt ở khung ổn định và lấy mẫu 30 fps trong 650 ms sau mỗi lần chuyển khung; component kiểm thêm từng frame đang render. Mở frame thực tế để kiểm mặt di chuyển và chữ tràn. Sau đó tạo file TS trong studio/data export default {id:'VideoPhu',format:'PhuHinh',props:...}. Xem mau-moi.ts; MauPhuHinh là mẫu im lặng với placeholder video, không phải video đã duyệt.
  8. Chạy cd remotion && npx --no-install tsc --noEmit; render nháp bằng npx --no-install remotion render src/index.ts VideoPhu out/nhap.mp4 --codec h264. Xem mọi loại đồ hoạ, frame chuyển mode, đầu/cuối từng segment, nghe giọng xuyên cover, kiểm số đạt đủ đúng lúc, danh sách không hiện trước lời. Chạy dò lời trên bản cuối khi cần và nghe lại điểm nối.
  9. Chuẩn âm −14 LUFS bằng loudnorm hai lượt, đo true peak −1.5 dBTP, như mục chuẩn âm trong video-thuy-mac/SKILL.md; luôn ghi sang file khác và đo lại bản cuối. Bàn giao bản xem, nguồn, dữ liệu và phần chưa xác minh. Kiểm script và hình không thay duyệt y khoa/quảng cáo của người có trách nhiệm trước đăng.

관련 스킬