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>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
> **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
|
||||
> **Output**: Audit reports, optimized metadata, schema markup, API batch updates
|
||||
|
||||
---
|
||||
|
||||
@@ -17,6 +17,114 @@
|
||||
| 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
|
||||
|
||||
---
|
||||
|
||||
@@ -348,4 +456,83 @@ User: "영어 자막/메타데이터 추천해줘"
|
||||
|
||||
---
|
||||
|
||||
*Version 1.0.0 | Claude Code | 2025-12*
|
||||
## 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*
|
||||
|
||||
Reference in New Issue
Block a user