From cc-meeting-highlight
topics.json에서 중요도 상위 토픽을 선정해 60초 하이라이트 영상용 highlights.json을 생성합니다. 각 클립의 자막(caption/subCaption), 시작·종료 시각, src 경로를 결정하고 합계 60초를 정확히 맞춥니다. "60초 하이라이트 만들어줘", "highlights.json 만들어줘" 같은 표현에서 발동됩니다. cc-meeting-highlight 파이프라인의 Phase 4.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cc-meeting-highlight:highlights-selectorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
topics.json에서 상위 3-4개 토픽을 골라 합계 60초의 하이라이트 영상을 위한 `highlights.json`을 만듭니다. 각 클립의 자막 문구와 시각 구간이 핵심 산출물입니다.
topics.json에서 상위 3-4개 토픽을 골라 합계 60초의 하이라이트 영상을 위한 highlights.json을 만듭니다. 각 클립의 자막 문구와 시각 구간이 핵심 산출물입니다.
| 파일 | 역할 |
|---|---|
topics.json | topics-extractor가 만든 토픽 목록 (importance, startSec, endSec, summary 포함) |
| 총 길이 (선택) | 기본 60초. 사용자가 30초·90초·3분 등을 지정할 수 있음 |
| 총 길이 | 권장 클립 수 | 클립당 평균 길이 |
|---|---|---|
| 30초 | 2-3개 | 10-15초 |
| 60초 | 3-4개 | 15-20초 |
| 90초 | 4-5개 | 18-22초 |
| 3분 | 6-8개 | 22-30초 |
너무 잘게 쪼개면 영상이 정신없고, 너무 길게 잡으면 회의의 다양성이 안 보임. 3-4개 / 60초가 가장 시청 경험이 좋다.
다음 우선순위로 선정합니다.
importance가 0.7 이상인 토픽 (의사결정·예산·일정 변경 등)anchorTexts에 반대 발언이 있는지)제외 기준:
endSec - startSec이 너무 짧음 (15초 미만)anchorTexts가 비어있거나 토픽 요지를 못 담음각 선정 토픽에서 가장 임팩트 있는 15-20초를 잘라냅니다.
구간 결정 원리:
sourceStartSec/sourceEndSec은 0.1초 단위까지 정확히각 클립에 2단 자막을 답니다.
caption (메인, 큰 글자, 최대 1줄)
subCaption (보조, 작은 글자, 1줄)
예시:
| 토픽 | caption | subCaption |
|---|---|---|
| QA 마감 12/22로 변경 | "QA 마감, 12/22로 4일 연장" | "PM·엔지니어 합의 · 출시일 영향 없음" |
| 신규 채용 1명 승인 | "백엔드 1명 추가 채용 확정" | "1Q 안에 입사 목표 · 김OO이 채용 리드" |
| 마케팅 예산 30% 삭감 | "마케팅 예산 30% 삭감" | "이번 분기 한정 · 내년 1월 재논의" |
선정한 클립들의 durationSec 합이 정확히 60초가 되도록 조정합니다.
조정 알고리즘:
1. 각 클립을 18초로 일단 설정 → 4클립이면 72초, 3클립이면 54초
2. 4클립 시: 각 클립을 15초로 줄여 60초 (4 × 15)
3. 3클립 시: 평균 20초 (20 + 20 + 20) 또는 (18 + 22 + 20)으로 분배
4. 미세 조정: 핵심 발언 길이에 맞춰 ±2초씩 분배
5. 최종 합계가 정확히 60.0초가 되도록 마지막 클립의 endSec을 조정
총 길이 오차는 ±0.1초 이내로.
{
"title": "12월 4일 정기 회의 하이라이트",
"meeting_date": "2025_12_04",
"totalDurationSec": 60,
"fps": 30,
"clips": [
{
"id": 1,
"src": "clips/clip_1.mp4",
"topic": "QA 마감 일정 변경",
"caption": "QA 마감, 12/22로 4일 연장",
"subCaption": "PM·엔지니어 합의 · 출시일 영향 없음",
"sourceStartSec": 248.5,
"sourceEndSec": 263.5,
"durationSec": 15.0,
"speakers": ["PM", "엔지니어 A"]
},
{
"id": 2,
"src": "clips/clip_2.mp4",
"topic": "백엔드 채용",
"caption": "백엔드 1명 추가 채용 확정",
"subCaption": "1Q 입사 목표 · 채용 리드 김OO",
"sourceStartSec": 1245.2,
"sourceEndSec": 1260.2,
"durationSec": 15.0,
"speakers": ["CTO"]
},
{
"id": 3,
"src": "clips/clip_3.mp4",
"topic": "마케팅 예산",
"caption": "마케팅 예산 30% 삭감",
"subCaption": "이번 분기 한정 · 1월 재논의",
"sourceStartSec": 2103.0,
"sourceEndSec": 2118.0,
"durationSec": 15.0,
"speakers": ["CFO"]
},
{
"id": 4,
"src": "clips/clip_4.mp4",
"topic": "다음 회의 안건",
"caption": "다음 회의: OKR 점검",
"subCaption": "12/11 · 부서장 전원",
"sourceStartSec": 3280.0,
"sourceEndSec": 3295.0,
"durationSec": 15.0,
"speakers": ["PM"]
}
]
}
필드 설명:
src: Remotion 프로젝트의 public/ 기준 상대경로. clips/clip_<id>.mp4 패턴 고정 (Phase 5 cut_clips 스크립트가 이 패턴으로 출력)sourceStartSec / sourceEndSec: 원본 mp4 기준durationSec: sourceEndSec - sourceStartSec. 합계 = totalDurationSecfps: Phase 6 Remotion 렌더링 시 사용. 기본 30speakers: 자막 표시에 활용할 수 있음 (선택)출력 직전 자체 점검:
clips[].durationSec의 합 = totalDurationSec (오차 ≤ 0.1초)src가 clips/clip_<id>.mp4 패턴id가 1부터 연속caption이 18자 이하, subCaption이 35자 이하sourceStartSec < sourceEndSec검증 실패 시 출력 직전에 자동 보정 또는 사용자에게 보고.
기본: meeting_rec/transcribe/highlights.json
highlights.json 작성이 끝나면 Phase 5 (cut_clips.sh) → Phase 6 (Remotion 렌더링) 순서로 진행합니다.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub gaebalai/gaebalai-marketplace --plugin cc-meeting-highlight