testimonial-clips
SkillMediaLets your agent pull client praise from Zoom recordings and turn it into captioned short-form videos.
Use testimonial-clips in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add testimonial-clips and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the testimonial-clips skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Read this when extracting client testimonial segments from Zoom recordings and turning them into captioned short-form videos (Reels/Shorts). Handles requests like "make testimonial clips" or "cut anything testimonial-worthy from this meeting".
What this skill tells your AI
The instructions your AI receives, as published by bam-bam-2/solo-skills in skills/testimonial-clips/SKILL.md and read by Ahel’s review.
이 스킬이 시스템에 하는 일 (설치 전 확인)
- 녹화 파일을 읽고 잘라낸 클립을 새로 만듭니다. 원본은 수정하지 않습니다.
- 남의 발언을 편집하는 작업입니다. 공개 전 당사자 동의를 받으세요.
ffmpeg을 로컬에서 돌립니다.
후기 클립 만들기
줌 자문/미팅 녹화에서 클라이언트가 스스로 말한 긍정 평가를 뽑아 숏폼으로 만든다. 2026-09월 A 대표님·B 원장님 두 건으로 검증된 절차다.
0. 먼저 판단할 것 — 클라이언트가 화면에 나오는가
이게 전체 구성을 가른다. 다운로드 전에 프레임을 뽑아 확인한다.
ffmpeg -ss <구간> -i full.mp4 -frames:v 1 -vf scale=300:-2 /tmp/chk.jpg
| 상황 | 구성 |
|---|---|
| 얼굴 나옴 | 영상을 주인공으로. 얼굴 중심 크롭 + 하단 자막 |
| 카메라 꺼짐 | 영상 버림. 브랜드 인용 카드 + 오디오 파형 + 자막 |
⚠️ 줌 shared_screen_with_speaker_view는 말하는 사람 타일로 전환된다.
클라이언트가 카메라를 껐으면 정작 그가 말하는 구간이 전부 검은 화면이다.
갤러리 뷰도 마찬가지다. 화면공유가 없으면 한쪽이 통째로 검다.
1. 녹화·전사록 받기
Zoom S2S OAuth — 자격증명과 다운로드 토큰 절차는 advisory-minutes 스킬 참조.
download_url에는 별도의 download_access_token이 필요하다.
2. 후기 구간 찾기
VTT를 타임스탬프째로 파싱해 클라이언트 발화만 키워드로 훑는다.
keys=['좋았','감사','도움','달라졌','자신감','해결','성장','바뀌','이뤘','배웠','몰랐']
for ts, sp, body in cues:
if sp != '밤밤' and any(k in body for k in keys) and len(body) > 15:
print(f"[{ts}] {body}")
고르는 기준
- ⭐ 밤밤이 유도한 답이 아니라 클라이언트가 스스로 꺼낸 말만 쓴다
- 비교가 들어간 발언이 가장 세다 — "다른 걸 해봤는데 이건 다르더라" 류
- 그 사람의 직업·맥락이 묻어난 문장 (예: "진료실에서 듣는 거랑은 다르니까")
- 밤밤 자랑이 섞인 구간은 잘라낸다
- 앞뒤 문맥을 붙여 완결된 한 덩어리로 만든다. 40~90초
메타 파일로 정리한다: 번호|시작|길이|제목
3. 단어 단위 재전사 — 줌 자막을 쓰지 않는다
줌 자체 자막은 고유명사·숫자가 심하게 깨진다.
(fimbam→밤밤, 긱백→겟백, 커피 채취→커피챗, 오만원 단가가 오만원으로)
맥에 mlx_whisper가 깔려 있다(애플 실리콘 최적화, 맥미니에서 클립당 10~15초).
ffmpeg -ss <시작> -i full.mp4 -t <길이> -vn -ac 1 -ar 16000 -c:a pcm_s16le a1.wav
mlx_whisper a1.wav --model mlx-community/whisper-large-v3-mlx --language ko \
--word-timestamps True --output-format json --output-dir /tmp/wj --output-name w1
4. 카라오케 자막(ASS) 생성
단어별로 색을 바꾼 라인을 여러 개 깔아 하이라이트가 이동하는 효과를 낸다.
- 청크: 세로 17자 / 가로 28~30자, 단어 간격 0.9초 이상이면 끊는다
- 강조색
&H0035F0F5&(형광 연두), 기본&HFFFFFF& \pos()로 고정,\fad(60,60)subtitles=...:force_style=은 쓰지 말 것 — 쉼표를 필터 구분자로 먹어 파싱이 깨진다. 스타일을 ASS 파일에 직접 박고ass=파일.ass로 붙인다
5. 합성
얼굴이 나올 때
crop=<얼굴중심>,scale=1080:1279,eq=brightness=0.12:contrast=1.16,
pad=1080:1920:0:200:<브랜드색>,ass=자막.ass
- 위 여백에 후크 인용문 + 이름 배지를 ASS
Hook/Tag스타일로 얹는다 - 밤 촬영이면 밝기·대비 보정을 반드시 넣는다
얼굴이 없을 때
[1:a]showwaves=s=1080x200:mode=cline:colors=<강조색>@0.75,format=yuva420p,
colorkey=black:0.18:0.06[wv];
[0:v]scale=1080:1920[bg];[bg][wv]overlay=0:830[bw];[bw]ass=자막.ass
- 배경은 브랜드 그라데이션 카드(HTML→PNG 렌더)
showwaves+colorkey로 파형만 남겨 얹으면 화면이 산다
레이아웃은 층으로 완전히 분리한다. 후크(상단) / 파형·영상(중앙) / 자막(하단). 겹치면 둘 다 안 읽힌다. 실제로 두 건 모두 위치를 2~3번 다시 잡았다.
가로(1280×720)와 세로(1080×1920) 두 벌을 뽑는다.
6. 검수
프레임을 여러 개 뽑아 가로로 이어붙여 한 번에 본다.
for t in 15 20 50; do ffmpeg -ss $t -i c1.mp4 -frames:v 1 /tmp/f$t.jpg; done
magick /tmp/f15.jpg /tmp/f20.jpg /tmp/f50.jpg -resize x680 +append /tmp/pv.jpg
확인 항목 — 자막이 후크를 덮지 않는가 / 파형이 자막을 가리지 않는가 / 어두워서 얼굴이 안 보이지 않는가 / 화면 밖으로 넘치지 않는가
7. ⚠️ 발행 전 반드시
클라이언트 동의를 받는다. 자문 계약서 제11조에 절차가 있다 — 건별로 공개 범위(구체 수치까지 쓸지)·실명 여부·사용처를 함께 정하고, 언제든 철회 가능.
얼굴이 나오는 클립은 특히 그렇다.
그리고 매출 수치는 카드에 박지 않는다. 발언이 전사 기반이라 부정확할 수 있고, 동의 범위를 벗어날 수 있다. *"노력은 줄고 수입은 늘었습니다"*처럼 정성 표현으로 간다.
주의
- ffmpeg 빌드에 libass가 없으면 자막을 못 굽는다. 맥미니 ffmpeg가 최소 빌드라 안 된다. 전사는 맥미니(빠름), 렌더는 로컬로 나눈다
- 한글 파일명을
while read로 돌리면 인코딩이 깨진다. 번호로 루프를 돌고 나중에 이름을 붙인다 - 전사 오류 교정 사전을 만들어 자막 생성 시 일괄 치환한다
관련: advisory-minutes · measured-ui-callouts · macmini-offload
Signals
- GitHub stars
- 367
- Forks
- 89
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
testimonial-clips- Source
- github.com/bam-bam-2/solo-skills