Files
our-claude-skills/custom-skills/44-jamie-youtube-subtitle-checker/code/references/chapter_patterns.md
Andrew Yim 4d9da597ca fix(desktop-skills): Fix YAML frontmatter for Claude Desktop compatibility
- Remove 'version' field from 13 SKILL.md files
- Quote descriptions containing colons (Triggers:) in 9 files
- Fix 20-gtm-audit binary file (extract proper SKILL.md from ZIP)
- Add missing 'description:' key in 41-jamie-brand-audit
- Add new skill 44-jamie-youtube-subtitle-checker with both desktop/ and code/ versions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 18:19:17 +09:00

5.5 KiB

챕터 추출 패턴 가이드

정기호 원장 영상의 구조적 특징을 기반으로 챕터 타임스탬프를 추출합니다.


영상 유형별 구조

Type A: 시술 소개 영상 (3-10분)

0:00  인트로 (인사)
      └─ "안녕하세요. 제이미성형외과 정기호 원장입니다"
      
0:15~ 문제 제기 / 공감
      └─ "~로 고민하시는 분들", "~때문에 걱정"
      
0:30~ 시술 소개
      └─ "[시술명]이란", "어떤 방법", "특징"
      
1:00~ 수술 과정 / 방법
      └─ "수술은", "진행", "과정", "방법"
      
2:00~ 장점 / 효과
      └─ "장점", "효과", "결과", "좋은 점"
      
3:00~ 회복 / 주의사항
      └─ "회복 기간", "주의", "관리", "~후에"
      
마지막 20초  마무리 / CTA
      └─ "상담", "문의", "감사합니다"

Type B: 짧은 설명 영상 (1-3분)

0:00  인트로
0:10~ 핵심 설명
0:40~ 장점/특징
1:20~ 마무리

Type C: Q&A / FAQ 영상

0:00  인트로 + 질문 소개
0:15~ 답변 1
0:45~ 답변 2 (있는 경우)
1:15~ 정리 / 마무리

챕터 감지 키워드

Primary Keywords (높은 우선순위)

챕터 유형 키워드
인트로 "안녕하세요", "제이미성형외과", "정기호 원장"
시술 소개 "[시술명]이란", "무엇인가요", "어떤 수술"
수술 과정 "수술 과정", "진행", "방법은", "어떻게"
장점 "장점", "좋은 점", "효과", "결과"
회복 "회복 기간", "회복은", "관리", "주의사항"
마무리 "상담", "문의", "감사합니다", "추천드립니다"

Secondary Keywords (보조)

챕터 유형 키워드
문제 제기 "고민", "걱정", "불편", "힘든"
비교 "차이", "비교", "vs", "다른 점"
대상 "적합한 분", "추천", "이런 분"
비용/시간 "시간", "기간", "비용"

챕터 추출 알고리즘

Step 1: 텍스트에서 키워드 탐지

def detect_chapter_candidates(subtitles, keywords):
    candidates = []
    for i, sub in enumerate(subtitles):
        text = sub['text']
        start_time = parse_start_time(sub['timestamp'])
        
        for chapter_type, kw_list in keywords.items():
            for kw in kw_list:
                if kw in text:
                    candidates.append({
                        'time': start_time,
                        'type': chapter_type,
                        'keyword': kw,
                        'context': text
                    })
                    break
    return candidates

Step 2: 중복 제거 및 정리

def deduplicate_chapters(candidates, min_gap_seconds=15):
    """
    같은 유형의 챕터가 15초 이내에 있으면 첫 번째만 유지
    """
    result = []
    last_by_type = {}
    
    for c in sorted(candidates, key=lambda x: x['time']):
        ctype = c['type']
        if ctype in last_by_type:
            if c['time'] - last_by_type[ctype] < min_gap_seconds:
                continue
        result.append(c)
        last_by_type[ctype] = c['time']
    
    return result

Step 3: 챕터 제목 생성

chapter_titles = {
    'intro': '인트로',
    'problem': '이런 고민 있으신가요?',
    'explanation': '{procedure_name}이란?',
    'procedure': '수술 과정',
    'benefits': '장점 및 효과',
    'recovery': '회복 및 관리',
    'closing': '마무리'
}

시간 형식 변환

SBV → YouTube 챕터 형식

def sbv_to_chapter_time(sbv_time):
    """
    "0:01:23.450" → "1:23"
    "0:00:45.120" → "0:45"
    """
    parts = sbv_time.split(':')
    if len(parts) == 3:
        h, m, s = parts
        s = s.split('.')[0]  # 밀리초 제거
        
        h, m, s = int(h), int(m), int(s)
        
        if h > 0:
            return f"{h}:{m:02d}:{s:02d}"
        else:
            return f"{m}:{s:02d}"
    return sbv_time

챕터 출력 형식

YouTube 설명란용 형식

0:00 인트로
0:17 하이브리드 쌍꺼풀이란?
0:33 수술 과정
0:50 장점 및 특징
1:10 회복 기간
1:25 마무리

상세 형식 (내부 문서용)

| 시간 | 챕터 | 감지 키워드 | 컨텍스트 |
|------|------|------------|----------|
| 0:00 | 인트로 | "안녕하세요" | 인사말 |
| 0:17 | 시술 소개 | "이란" | "하이브리드 쌍꺼풀이란..." |

시술별 챕터 템플릿

눈 성형 영상

0:00 인트로
0:XX [시술명]이란?
0:XX 수술 방법
0:XX 장점 (자연스러움, 빠른 회복 등)
0:XX 회복 기간 및 주의사항
0:XX 마무리

이마/리프팅 영상

0:00 인트로
0:XX 노화의 원인
0:XX [시술명] 소개
0:XX 수술 과정
0:XX 효과 및 유지 기간
0:XX 회복 및 관리
0:XX 마무리

Q&A 영상

0:00 인트로 및 질문 소개
0:XX Q1. [질문1]
0:XX Q2. [질문2]
0:XX Q3. [질문3]
0:XX 마무리

Edge Cases

1. 챕터가 너무 적을 때

영상 길이 대비 챕터가 2개 이하면:

  • 영상을 3등분하여 강제 챕터 생성
  • "전반부", "중반부", "후반부" 사용

2. 인트로가 감지되지 않을 때

  • 0:00에 "인트로" 강제 추가
  • 첫 번째 자막 내용으로 제목 생성

3. 짧은 영상 (1분 미만)

  • 챕터 최소 2개만 생성
  • 0:00 인트로 + 마지막 구간

Version 1.0.0 | 2025-12-23