🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

YouTube Analytics

by @adamkristopher

YouTube Data API v3 analytics toolkit. Analyze YouTube channels, videos, and search results. Use when the user asks to: check YouTube channel stats, analyze video performance, compare channels, search for videos, get subscriber counts, view engagement metrics, find trending videos, get channel uploads, or analyze YouTube competition. Requires a YouTube Data API v3 key from Google Cloud Console.

Versionv1.0.0
Downloads2,767
Installs7
Stars⭐ 6
TERMINAL
clawhub install youtube-analytics

πŸ“– About This Skill


name: youtube-analytics description: "YouTube Data API v3 analytics toolkit. Analyze YouTube channels, videos, and search results. Use when the user asks to: check YouTube channel stats, analyze video performance, compare channels, search for videos, get subscriber counts, view engagement metrics, find trending videos, get channel uploads, or analyze YouTube competition. Requires a YouTube Data API v3 key from Google Cloud Console."

YouTube Analytics Toolkit

Setup

Install dependencies:

cd scripts && npm install

Configure credentials by creating a .env file in the project root:

YOUTUBE_API_KEY=AIzaSy...your-api-key
YOUTUBE_DEFAULT_MAX_RESULTS=50

Prerequisites: A Google Cloud project with the YouTube Data API v3 enabled. Get your API key from the Google Cloud Console.

Quick Start

| User says | Function to call | |-----------|-----------------| | "Analyze this YouTube channel" | analyzeChannel(channelId) | | "Compare these two channels" | compareChannels([id1, id2]) | | "How is this video performing?" | analyzeVideo(videoId) | | "Search YouTube for [topic]" | searchAndAnalyze(query) | | "Get stats for this channel" | getChannelStats(channelId) | | "Get this video's view count" | getVideoStats(videoId) | | "Find channels about [topic]" | searchChannels(query) | | "Show recent uploads from this channel" | getChannelVideos(channelId) |

Execute functions by importing from scripts/src/index.ts:

import { analyzeChannel, searchAndAnalyze } from './scripts/src/index.js';

const analysis = await analyzeChannel('UCxxxxxxxx');

Or run directly with tsx:

npx tsx scripts/src/index.ts

Workflow Pattern

Every analysis follows three phases:

1. Analyze

Run API functions. Each call hits the YouTube Data API and returns structured data.

2. Auto-Save

All results automatically save as JSON files to results/{category}/. File naming patterns:
  • Named results: {sanitized_name}.json
  • Auto-generated: YYYYMMDD_HHMMSS__{operation}.json
  • 3. Summarize

    After analysis, read the saved JSON files and create a markdown summary in results/summaries/ with data tables, comparisons, and insights.

    High-Level Functions

    | Function | Purpose | What it gathers | |----------|---------|----------------| | analyzeChannel(channelId) | Full channel analysis | Channel info, recent videos, avg views per video | | compareChannels(channelIds) | Compare multiple channels | Side-by-side subscribers, views, video counts | | analyzeVideo(videoId) | Video performance analysis | Views, likes, comments, like rate, comment rate | | searchAndAnalyze(query, maxResults?) | Search + stats | Search results with full video statistics |

    Individual API Functions

    For granular control, import specific functions from the API modules. See references/api-reference.md for the complete list of 13 API functions with parameters, types, and examples.

    Channel Functions

    | Function | Purpose | |----------|---------| | getChannel(channelId) | Get full channel details | | getChannelStats(channelId) | Get simplified stats (subscribers, views, videoCount) | | getMultipleChannels(channelIds) | Batch fetch multiple channels |

    Video Functions

    | Function | Purpose | |----------|---------| | getVideo(videoId) | Get full video details | | getVideoStats(videoId) | Get simplified stats (views, likes, comments) | | getMultipleVideos(videoIds) | Batch fetch multiple videos | | getChannelVideos(channelId) | Get recent uploads from a channel |

    Search Functions

    | Function | Purpose | |----------|---------| | searchVideos(query, options?) | Search for videos | | searchChannels(query, options?) | Search for channels |

    Results Storage

    Results auto-save to results/ with this structure:

    results/
    β”œβ”€β”€ channels/       # Channel data and comparisons
    β”œβ”€β”€ videos/         # Video data and analyses
    β”œβ”€β”€ search/         # Search results
    └── summaries/      # Human-readable markdown summaries
    

    Managing Results

    import { listResults, loadResult, getLatestResult } from './scripts/src/index.js';

    // List recent results const files = listResults('channels', 10);

    // Load a specific result const data = loadResult(files[0]);

    // Get most recent result for an operation const latest = getLatestResult('channels', 'channel_analysis');

    Tips

    1. Use channel IDs β€” Channel IDs start with UC (e.g., UCxxxxxxxx). You can find them in the channel URL or page source. 2. Request summaries β€” After pulling data, ask for a markdown summary with tables and insights. 3. Compare channels β€” Use compareChannels() to benchmark competitors side by side. 4. Batch requests β€” Use getMultipleChannels() or getMultipleVideos() for efficient batch lookups. 5. Search + analyze β€” searchAndAnalyze() combines search with full video stats in one call.

    πŸ’‘ Examples

    | User says | Function to call | |-----------|-----------------| | "Analyze this YouTube channel" | analyzeChannel(channelId) | | "Compare these two channels" | compareChannels([id1, id2]) | | "How is this video performing?" | analyzeVideo(videoId) | | "Search YouTube for [topic]" | searchAndAnalyze(query) | | "Get stats for this channel" | getChannelStats(channelId) | | "Get this video's view count" | getVideoStats(videoId) | | "Find channels about [topic]" | searchChannels(query) | | "Show recent uploads from this channel" | getChannelVideos(channelId) |

    Execute functions by importing from scripts/src/index.ts:

    import { analyzeChannel, searchAndAnalyze } from './scripts/src/index.js';

    const analysis = await analyzeChannel('UCxxxxxxxx');

    Or run directly with tsx:

    npx tsx scripts/src/index.ts
    

    βš™οΈ Configuration

    Install dependencies:

    cd scripts && npm install
    

    Configure credentials by creating a .env file in the project root:

    YOUTUBE_API_KEY=AIzaSy...your-api-key
    YOUTUBE_DEFAULT_MAX_RESULTS=50
    

    Prerequisites: A Google Cloud project with the YouTube Data API v3 enabled. Get your API key from the Google Cloud Console.

    πŸ“‹ Tips & Best Practices

    1. Use channel IDs β€” Channel IDs start with UC (e.g., UCxxxxxxxx). You can find them in the channel URL or page source. 2. Request summaries β€” After pulling data, ask for a markdown summary with tables and insights. 3. Compare channels β€” Use compareChannels() to benchmark competitors side by side. 4. Batch requests β€” Use getMultipleChannels() or getMultipleVideos() for efficient batch lookups. 5. Search + analyze β€” searchAndAnalyze() combines search with full video stats in one call.