- 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>
539 lines
13 KiB
Markdown
539 lines
13 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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**:
|
|
|
|
```markdown
|
|
## 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**:
|
|
```bash
|
|
# Generate JSON-LD schema for website embedding
|
|
```
|
|
|
|
**Output**:
|
|
```json
|
|
{
|
|
"@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)**:
|
|
```json
|
|
{
|
|
"@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**:
|
|
```markdown
|
|
## 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**:
|
|
```markdown
|
|
## 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
|
|
|
|
```bash
|
|
# 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*
|