Files
our-claude-skills/custom-skills/43-jamie-youtube-manager/code/CLAUDE.md
Andrew Yim c6ab33726f feat(skills): Add notion-writer skill and YouTube manager CLI scripts
- Add 02-notion-writer skill with Python script for pushing markdown to Notion
- Add YouTube API CLI scripts for jamie-youtube-manager (channel status, video info, batch update)
- Update jamie-youtube-manager SKILL.md with CLI script documentation
- Update CLAUDE.md with quick reference guides

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

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

13 KiB

Jamie YouTube Manager - Claude Code

Purpose: YouTube SEO Auditor & Content Manager for Jamie Plastic Surgery Clinic (제이미성형외과) Platform: Claude Code (CLI) Input: YouTube URLs, video metadata, or exported data Output: Audit reports, optimized metadata, schema markup, API batch updates


Capabilities

Feature Input Output
Video SEO Audit YouTube URL or metadata Detailed checklist + score
Metadata Optimization Current title/description Optimized versions
Chapter Generation Video transcript/topics Timestamp list
Schema Generation Video details JSON-LD markup
Description Writing Video topic SEO-optimized description
Shorts Optimization Shorts content Optimization checklist
Batch Metadata Update T&D document YouTube API batch update
Video Info Fetch YouTube URL(s) Detailed video info + stats
API Connection Test OAuth credentials Connection status

YouTube API Integration

Prerequisites

  1. Google Cloud Project: ourdigital-insights
  2. YouTube Data API v3: Enabled
  3. OAuth Credentials: Desktop app type

Setup

# Navigate to scripts directory
cd ~/Project/claude-skills-factory/custom-skills/43-jamie-youtube-manager/code/scripts

# Activate virtual environment
source venv/bin/activate

# Required packages (already installed)
pip install google-api-python-client google-auth-oauthlib python-dotenv

Environment Configuration

.env file structure:

GOOGLE_CLIENT_ID=<your-client-id>
GOOGLE_CLIENT_SECRET=<your-client-secret>
GOOGLE_PROJECT_ID=ourdigital-insights
GOOGLE_CLIENT_SECRETS_FILE=/Users/ourdigital/.config/gcloud/keys/jamie-youtube-manager.json

API Scripts

1. Connection Test (jamie_youtube_api_test.py)

Tests OAuth authentication and video access:

source jamie_youtube_venv/bin/activate
python jamie_youtube_api_test.py

Output:

  • Authenticated channel info
  • Video access verification
  • Credential status

2. Video Info (jamie_video_info.py)

Fetches detailed video information from URLs or video IDs:

# Single video by URL
python jamie_video_info.py https://youtu.be/P-ovr-aaD1E

# Multiple videos
python jamie_video_info.py URL1 URL2 URL3

# Verbose mode (includes description & tags)
python jamie_video_info.py VIDEO_ID -v

# JSON output
python jamie_video_info.py VIDEO_ID --json

Output:

  • Video title, URL, channel
  • Published date, privacy status, duration
  • Statistics (views, likes, comments)
  • Jamie channel badge (🏥 Jamie vs External)
  • Description and tags (verbose mode)

3. Channel Status (jamie_channel_status.py)

Check current status of Jamie YouTube channel and all 18 videos:

python jamie_channel_status.py

Output:

  • Channel statistics (subscribers, views, video count)
  • All 18 video status (title, privacy, views, duration)
  • Summary by privacy status

4. Batch Metadata Update (jamie_youtube_batch_update.py)

Updates video titles and descriptions via YouTube API:

# Dry-run mode (preview only)
python jamie_youtube_batch_update.py --dry-run

# Execute actual updates
python jamie_youtube_batch_update.py --execute

# Update specific video
python jamie_youtube_batch_update.py --execute --video-id VIDEO_ID

Features:

  • Dry-run mode for safe testing
  • Batch update all 18 Jamie videos
  • Common footer auto-appended
  • OAuth token persistence

Core Workflows

1. Video SEO Audit

When user provides a YouTube URL or video details:

Audit Checklist:

## Video Audit Report

📹 **Video**: [Title]
🔗 **URL**: [URL]
📅 **Audit Date**: [Date]

━━━━━━━━━━━━━━━━━━━━
📊 OVERALL SCORE: [X]/100
━━━━━━━━━━━━━━━━━━━━

### Title Analysis [X/6]
- [ ] Length: 60-70 chars (Korean ~30자)
- [ ] Primary keyword in first 40 chars
- [ ] Brand "제이미성형외과" included
- [ ] Clear benefit/value
- [ ] No clickbait
- [ ] Proper separators (|, -)

### Description Analysis [X/11]
- [ ] First 150 chars meaningful
- [ ] Timestamps included
- [ ] Primary keyword present
- [ ] CTA included
- [ ] Website/booking links
- [ ] Social links
- [ ] Related videos linked
- [ ] 3-5 hashtags
- [ ] Medical disclaimer
- [ ] 200+ words total
- [ ] Contact information

### Chapters [X/6]
- [ ] Timestamps present
- [ ] Starts at 00:00
- [ ] 3+ chapters (if > 5 min)
- [ ] Descriptive labels
- [ ] Korean labels
- [ ] Proper format (MM:SS)

### Captions [X/5]
- [ ] Korean captions available
- [ ] English subtitles
- [ ] Medical terms accurate
- [ ] Brand name correct
- [ ] Timing synced

### Schema Readiness [X/5]
- [ ] Title matches VideoObject name
- [ ] Description meaningful
- [ ] Duration available
- [ ] Thumbnail URL accessible
- [ ] Upload date present

━━━━━━━━━━━━━━━━━━━━
🎯 TOP 3 PRIORITIES
━━━━━━━━━━━━━━━━━━━━
1. [Action 1]
2. [Action 2]
3. [Action 3]

2. Optimize Title

Formula:

[시술명] + [핵심 베네핏] | 제이미성형외과

Examples:

Before: "이마거상술 설명 영상"
After:  "내시경 이마거상술 | 자연스러운 동안 효과의 비밀 | 제이미성형외과"

Before: "쌍꺼풀 수술"
After:  "퀵매몰법 쌍꺼풀 | 티안나게 자연스럽게 | 제이미성형외과"

3. Generate Description

Template:

[시술명]의 원리부터 회복까지, 제이미성형외과 정기호 원장이 자세히 설명합니다.

⏱️ 타임스탬프
00:00 인트로
[Generated timestamps]

📋 영상 내용
[Content summary with keywords]

🏥 제이미성형외과
📍 주소: 서울시 강남구 압구정로 XXX
📞 상담예약: 02-XXX-XXXX
🔗 홈페이지: https://jamieps.com
📱 카카오톡: @제이미성형외과

▶️ 관련 영상
• [Related video 1]
• [Related video 2]

※ 본 영상은 정보 제공 목적이며, 개인에 따라 결과가 다를 수 있습니다.
부작용: 출혈, 감염, 염증 등이 발생할 수 있습니다.

#제이미성형외과 #[시술명] #압구정성형외과

4. Generate Chapters/Timestamps

When user provides transcript or video structure:

Output Format:

00:00 인트로
01:00 [시술명]이란?
03:00 수술 과정 설명
05:30 회복 기간 및 주의사항
08:00 자주 묻는 질문
10:00 마무리 및 상담 안내

Rules:

  • Must start at 00:00
  • Minimum 3 chapters for videos > 5 min
  • Each chapter > 10 seconds
  • Descriptive Korean labels

5. Generate VideoObject Schema

Execute:

# Generate JSON-LD schema for website embedding

Output:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "[Video Title]",
  "description": "[First 160 chars of description]",
  "thumbnailUrl": "https://img.youtube.com/vi/[VIDEO_ID]/maxresdefault.jpg",
  "uploadDate": "[YYYY-MM-DD]T09:00:00+09:00",
  "duration": "PT[X]M[Y]S",
  "contentUrl": "https://www.youtube.com/watch?v=[VIDEO_ID]",
  "embedUrl": "https://www.youtube.com/embed/[VIDEO_ID]",
  "publisher": {
    "@type": "Organization",
    "name": "제이미성형외과",
    "logo": {
      "@type": "ImageObject",
      "url": "https://jamieps.com/logo.png"
    }
  }
}

With Chapters (Clip Schema):

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "[Title]",
  "hasPart": [
    {
      "@type": "Clip",
      "name": "인트로",
      "startOffset": 0,
      "endOffset": 60,
      "url": "https://www.youtube.com/watch?v=[ID]&t=0"
    },
    {
      "@type": "Clip",
      "name": "[Chapter 2]",
      "startOffset": 60,
      "endOffset": 180,
      "url": "https://www.youtube.com/watch?v=[ID]&t=60"
    }
  ]
}

6. Shorts Optimization

Checklist:

## Shorts Audit

- [ ] Duration < 60 seconds
- [ ] 9:16 vertical format
- [ ] Hook in first 2 seconds
- [ ] Text overlays readable
- [ ] #Shorts hashtag included
- [ ] 2-3 relevant hashtags
- [ ] Clear CTA
- [ ] No bottom 20% text (UI overlap)

Shorts Title Format:

[키워드] + [핵심 내용] #Shorts

예: "쌍꺼풀 자연스럽게 만드는 비결 #Shorts"

7. Playlist Audit

When user provides playlist URL:

Checklist:

## Playlist Audit

- [ ] Descriptive title with keyword
- [ ] Description 200+ characters
- [ ] Logical video order
- [ ] Consistent thumbnails
- [ ] No duplicate content
- [ ] Complete topic coverage

Recommended Jamie Playlists:

  1. 눈성형 시리즈
  2. 이마/리프팅 시리즈
  3. 자주 묻는 질문 FAQ
  4. 원장 토크
  5. 수술 후 관리

Tags Database

Brand Tags:

제이미성형외과, Jamie Plastic Surgery, 압구정성형외과

Procedure Tags:

Category Tags
쌍꺼풀, 눈성형, 눈매교정, 안검하수, 눈밑지방재배치
이마 이마거상술, 내시경이마거상, 눈썹거상술
리프팅 스마스리프팅, 얼굴리프팅, 동안성형

Rule: 15-20 tags total, under 500 characters


Internationalization (i18n)

Priority Languages:

Language Priority Target
Korean (ko) Required 내국인
English (en) High Medical tourism
Japanese (ja) Medium 일본 의료관광
Chinese (zh) Medium 중국 의료관광

Localized Title Example:

KO: 내시경 이마거상술 | 자연스러운 동안 효과 | 제이미성형외과
EN: Endoscopic Forehead Lift | Natural Rejuvenation | Jamie Plastic Surgery
JA: 内視鏡額リフト | 自然な若返り | ジェイミー整形外科

Medical Compliance (의료광고법)

YouTube Specific Rules:

Allowed:

  • Educational procedure explanations
  • General recovery information
  • Doctor credentials
  • Facility tours

Prohibited:

  • Patient testimonials
  • Before/After without disclaimers
  • Guaranteed results claims
  • Price comparisons

Required Disclaimer:

※ 본 영상은 정보 제공 목적이며, 개인에 따라 결과가 다를 수 있습니다.
수술 전 반드시 전문의와 상담하시기 바랍니다.
부작용: 출혈, 감염, 염증 등이 발생할 수 있습니다.

Usage Examples

User: "이 유튜브 영상 SEO 분석해줘: https://youtube.com/watch?v=xxx"

User: "이 영상 제목 최적화해줘: '이마거상술 설명'"

User: "퀵매몰법 영상 설명란 작성해줘"

User: "이 영상의 챕터 타임스탬프 만들어줘" [transcript]

User: "이 영상 VideoObject 스키마 생성해줘"

User: "쇼츠 최적화 체크리스트 확인해줘"

User: "영어 자막/메타데이터 추천해줘"

Integration

  • jamie-brand-editor: Video script writing
  • jamie-brand-guardian: Content compliance review
  • jamie-instagram-manager: Cross-platform strategy

File Structure

43-jamie-youtube-manager/
├── code/
│   ├── CLAUDE.md                      # This file (Claude Code skill)
│   ├── scripts/
│   │   ├── jamie_youtube_api_test.py      # API connection test
│   │   ├── jamie_video_info.py            # Video info fetcher (URL-based)
│   │   ├── jamie_channel_status.py        # Channel & video status
│   │   ├── jamie_youtube_batch_update.py  # Batch metadata updater
│   │   ├── jamie_youtube_token.pickle     # OAuth token (cached)
│   │   ├── venv/                          # Python virtual environment
│   │   └── .env                           # Environment variables
│   ├── output/
│   │   └── jamie_youtube_td_final.md      # T&D document (18 videos)
│   └── references/
│       └── ...
└── desktop/
    ├── SKILL.md                       # Claude Desktop skill
    └── references/
        └── ...

Video Inventory (18 Videos)

No Video ID 시술명 길이
0 P-ovr-aaD1E 병원 소개 0:33
1 qZQwAX6Onj0 눈 성형 1:27
2 _m6H4F_nLYU 퀵 매몰법 1:28
3 CBAGAY_b0HU 하이브리드 쌍꺼풀 1:33
4 TxFajDli1QQ 안검하수 눈매교정술 1:53
5 Ey5eR4dCi_I 눈밑지방 재배치 1:38
6 ffUmrE-Ckt0 듀얼 트임 수술 1:42
7 1MA0OJJYcQk 눈썹밑 피부절개술 1:33
8 UoeOnT1j41Y 눈 재수술 1:59
9 a7FcFMiGiTs 이마 성형 3:44
10 lIq816rp4js 내시경 이마 거상술 3:42
11 EwgtJUH46dc 내시경 눈썹 거상술 3:50
12 gfbJlqlAIfg 동안 성형 1:51
13 lRtAatuhcC4 동안 시술 2:21
14 7saghBp2a_A 앞광대 리프팅 1:44
15 Mq6zcx_8owY 스마스 리프팅 1:56
16 _bCJDZx2L2I 자가 지방이식 1:47
17 kXbP1T6ICxY 하이푸 리프팅 1:50

Quick Reference Commands

# Navigate to scripts directory
cd ~/Project/claude-skills-factory/custom-skills/43-jamie-youtube-manager/code/scripts

# Activate environment
source venv/bin/activate

# Test API connection
python jamie_youtube_api_test.py

# Get specific video info from URL
python jamie_video_info.py https://youtu.be/VIDEO_ID -v

# Check channel & video status
python jamie_channel_status.py

# Preview batch update
python jamie_youtube_batch_update.py --dry-run

# Execute batch update
python jamie_youtube_batch_update.py --execute

Version 1.1.0 | Claude Code | 2025-12-26 Added: YouTube Data API v3 integration, batch metadata update