Communitygithub.com

LIUFelix2004/github-promo-video-skill

임의의 GitHub 계정에 대해 28초 이내의 이력서 프로모션 비디오를 생성합니다. 실제 프로필 페이지 스크린샷을 커버로 사용하고(가로로 누워서 먼 곳에서 가까이로 동적으로 세우기), GitHub 흰색 저장소 카드(Star 숫자 롤링 카운트, README 요약 항목별 슬라이드 인), 쪽지 스타일 엔딩으로 구성됩니다. 모든 텍스트는 로컬에서 렌더링되며, AI 생성 텍스트나 오타가 없습니다. '이 GitHub에 대한 프로모션 비디오/이력서 비디오/같은 스타일 비디오'와 같은 요청에 적합합니다.

github-promo-video-skill란 무엇인가요?

이 스킬은 LIUFelix2004의 GitHub 프로모션 비디오 생성 스킬로, 개발자 에이전트(Claude Code, Cursor 등)가 사용자의 GitHub 계정 정보를 기반으로 28초 이내의 프로모션 비디오를 완전 자동으로 제작할 수 있도록 돕습니다. 주요 기능은 세 부분으로 구성됩니다: 첫째, 실제 GitHub 프로필 페이지 스크린샷을 동적 커버로 사용하여 가로 누운 상태에서 원근 변환을 통해 수직으로 세워지는 애니메이션을 구현합니다. 둘째, Star와 Fork 수가 많은 상위 3개 저장소에 대해 흰색 카드 형태로 숫자 롤링, README 요약 슬라이드 인, 기술 태그 표시를 제공합니다. 셋째, 사용자 이름, 닉네임, 대표 저장소 정보를 포함한 쪽지 스타일 엔딩입니다. 이 스킬은 실제 GitHub 데이터(README 기반 요약)와 로컬 렌더링(PIL)에 의존하므로 텍스트 오류가 없고 관련 없는 브랜드 로고가 나타나지 않습니다. 지원 도구: Claude Code, Cursor, Codex, Windsurf, Cline 등. macOS와 Linux 플랫폼에서 테스트되었습니다. Python 3, Pillow, numpy, ffmpeg, Noto Sans CJK 폰트가 필요합니다. 제공된 스크립트(`scripts/capture_frame.py`, `scripts/render_promo.py`)를 사용하며, 사용자 정의 가능한 설정 파일(`config.json`)을 지원합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add LIUFelix2004/github-promo-video-skill

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

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

문서

GitHub 이력서 프로모션 비디오 (동형 파이프라인)

최종 구조 (총 재생 시간 ≤ 28초, 기본 약 24.5초):

  1. 동적 커버 (5.5초): 대상 계정의 GitHub 프로필 페이지 실제 스크린샷으로, '가로 단면으로 누워 있는 원경'에서 연속적인 원근 변환을 통해 '수직으로 기울어진 근경'으로 전환, 밝은 그라데이션 지면 + 부드러운 그림자, 흰색 플래시 전환.
  2. 프로젝트 카드 ×3 (각 6–6.5초): GitHub 흰색 저장소 카드, 동일 레이아웃 — 저장소 이름, 부제목, 빨간색/파란색 큰 숫자(0부터 실제 Star/Fork 수까지 롤링), README 요약 4개 항목 순차적 슬라이드 인, 하단 기술 태그 페이드 인. 카드 1, 2는 Star가 가장 높은 두 개의 프로젝트; 카드 3은 '추가 프로젝트' 개요(큰 숫자 = 총 저장소 수 / 최근 1년 기여 수).
  3. 쪽지 엔딩 (4.5초): 쪽지가 한 줄씩 붙여짐 (사용자 이름 / @github / 닉네임 / 대표작 · Star 수, 마지막 줄은 빨간색 배경), 오른쪽에 큰 원형 아바타(분홍색 테두리)가 확대되어 등장.
  4. 배경 음악: 사용자가 제공한 오디오 파일(주의사항 참조), 음성 없음.

엄격한 규칙

  • 커버는 반드시 실제로 캡처한 프로필 페이지 프레임이어야 함: scripts/capture_frame.py를 사용하여 직접 캡처하거나, 헤드리스 브라우저로 스크린샷. AI로 커버 생성/재구성 금지 (저장소 이름 조작, 데이터 위조), 타인이 제공한 스크린샷을 설명 없이 커버로 사용 금지.
  • 화면의 모든 텍스트는 config에서만 비롯됨: 숫자, 저장소 이름, 요약 줄은 모두 로컬에서 레이아웃(PIL), AI 비디오 생성에 텍스트 위탁 금지 — 이것이 이 파이프라인의 텍스트 오류 제로 및 관련 없는 브랜드 로고 미출현의 근본 원인.
  • 프로젝트 소개는 반드시 README 실독 기반: Star 순으로 상위 2–3개 프로젝트를 선정하고, README를 열어 각 항목당 4줄의 한 문장 요약으로 정리한 후 config에 작성; 저장소 목록 설명으로 대충 채우는 것은 불합격. Star 3위가 내용이 빈약할 경우(예: README가 한 줄), 카드 3 개요에 포함하고 인계 시 설명.
  • 인계 전 프레임 추출 자체 점검: 최소한 커버 시작 프레임, 각 카드 완성 프레임, 엔딩 프레임을 확인; 텍스트/숫자 문제 발견 시 반드시 수정 후 인계하고, 사용자에게 남은 결함을 솔직히 보고.

단계

1. 계정 조사

  • https://github.com/<user>?tab=repositories&sort=stargazers를 열어 Star 순위와 개수 확인.
  • 프로필 페이지를 열어 확인: 표시 이름, followers, 총 저장소 수, 최근 1년 기여 수, 고정 저장소.
  • Star 상위 2–3개 저장소의 README를 각각 열어, 각 프로젝트에 대한 4줄 요약(기능/형태/기술/특징)과 기술 태그 4–6개 작성.

2. 자료 준비 (assets/)

python3 scripts/capture_frame.py <user> assets/page_frame.png   # 프로필 페이지 스크린샷 (실제 프레임)
curl -L https://github.com/<user>.png -o assets/avatar.png       # 아바타 (또는 프로필 페이지에서 캡처)
# BGM: 사용자가 제공한 오디오 파일을 assets/bgm.m4a에 배치 (선택 사항)

3. config 작성

examples/config.example.json을 config.json으로 복사하고, 1단계의 실제 데이터와 요약을 입력 (경로는 config 파일 기준 상대 경로 또는 절대 경로 사용).

4. 렌더링

python3 scripts/render_promo.py --config config.json --out out.mp4

필요 사항: Python 3 + Pillow + numpy, ffmpeg, Noto Sans CJK 폰트 (스크립트는 일반적인 경로에서 자동 검색).

5. 프레임 추출 자체 점검 후 인계

ffmpeg를 사용하여 0.4초 / 각 구간 중간 지점 / 엔딩에서 각각 한 프레임씩 추출하여 확인: 숫자가 Star 수와 일치하는지, 텍스트 위치가 올바른지, 커버가 실제 페이지인지, 엔딩 쪽지가 완전한지. 완성된 영상과 함께 '구조 설명 + 알려진 결함' 메시지를 사용자에게 전송.

config 필드 개요

필드설명
username / display_name계정 이름 / 표시 이름 (엔딩 쪽지에 사용)
page_frame / avatar / bgm자료 경로; bgm은 null 가능 (무음)
cards정확히 3장: {name, sub, n1, l1, n2, l2, rows[4], chips[]}; n1/l1은 빨간색 큰 숫자+레이블 (예: 303 / Stars), n2/l2는 파란색 (예: 33 / Forks); 카드 3은 Repositories / Contributions 사용 가능
finale_strips4줄의 쪽지 텍스트, 마지막 줄은 자동으로 빨간색 배경
durations선택 사항: {cover, cards[3], finale} 초 단위, 합계에서 전환 시간을 제외하면 ≤28

주의사항

  • 음악 저작권: 저장소에는 어떤 BGM도 포함되지 않습니다. 사용자가 직접 제공하거나 사용 권한이 있는 오디오 파일만 사용하세요. 타인의 비디오에서 추출한 오디오 트랙을 재배포하지 마세요.
  • 프레임 캡처 서비스(thum.io) 첫 요청 시 자리 표시 이미지가 반환되는 것은 정상적인 대기 현상이며, 스크립트에서 '두 번 가져오기'를 처리합니다.
  • 전체 영상에 Apple과 같은 관련 없는 브랜드 로고가 나타나지 않는 것은 설계 결과(로컬 렌더링으로 외부 자료 없음)이므로 추가 처리가 필요하지 않습니다.

관련 스킬