tubern provides an R interface to the YouTube Analytics API v2, allowing you to retrieve YouTube Analytics data for channels and content owners. The package supports authentication via OAuth 2.0 and provides functions for getting analytics reports and managing channel groups.
install.packages("tubern")# install.packages("devtools")
devtools::install_github("gojiplus/tubern", build_vignettes = TRUE)library(tubern)
# First time? Get step-by-step setup guide
yt_oauth()
# With your credentials (basic analytics)
yt_oauth("your-client-id.apps.googleusercontent.com", "your-client-secret")
# For revenue data (requires special permission)
yt_oauth("your-client-id.apps.googleusercontent.com", "your-client-secret", scope = "monetary")# Use intuitive relative dates - no more manual date calculations!
overview <- get_channel_overview("last_30_days")
daily_trends <- get_daily_performance("this_month")
top_videos <- get_top_videos("last_7_days")
# Or use traditional dates
report <- get_report(
ids = "channel==MINE",
metrics = "views,likes,comments",
start_date = "2024-01-01",
end_date = "2024-01-31"
)# Convert to data.frame with clean column names
df <- yt_to_dataframe(daily_trends)
head(df)
# Quick visualization
yt_quick_plot(daily_trends) # Auto-detects best chart type
yt_quick_plot(top_videos, chart_type = "bar")
# Export to CSV
yt_export_csv(overview, "my_channel_overview.csv")
# Get summary statistics
summary <- yt_extract_summary(overview)# Channel performance overview
overview <- get_channel_overview("last_30_days")
# Top performing videos
top_videos <- get_top_videos("last_7_days", max_results = 20)
# Audience demographics
demographics <- get_audience_demographics("last_90_days")
# Geographic performance
geo_performance <- get_geographic_performance("this_month")
# Device/platform breakdown
device_performance <- get_report(
ids = "channel==MINE",
metrics = "views,estimatedMinutesWatched",
dimensions = "deviceType",
start_date = "last_30_days"
)
# Revenue analysis (requires monetary scope)
revenue <- get_revenue_report("last_month")# Get available metrics and dimensions
get_available_metrics()
get_available_dimensions()
# Helpful error messages with suggestions
# get_report(ids = "channel==MINE", metrics = "vews", start_date = "last_7_days")
# β Error: Invalid metric(s): vews. Did you mean: 'vews' -> 'views'?
# Diagnostic tools
diagnose_tubern() # Check setup
check_api_quota() # Monitor API usageyt_oauth(): Set up OAuth 2.0 authenticationget_report(): Retrieve YouTube Analytics reportslist_groups(): List channel groupsadd_groups(): Create new channel groupsupdate_group(): Modify existing groupsdelete_group(): Remove groupslist_group_items(): List items in a groupadd_group_item(): Add channels to groupsdelete_group_item(): Remove channels from groupsCommon metrics you can request include: - views: Number
of times videos were viewed - likes, dislikes:
Engagement metrics - shares: Number of times videos were
shared - comments: Number of comments -
subscribersGained, subscribersLost: Subscriber
changes - estimatedMinutesWatched: Total watch time in
minutes - averageViewDuration: Average time spent
watching
For monetary metrics (requires monetary-analytics scope): -
estimatedRevenue: Estimated revenue -
adEarnings: Revenue from ads -
impressionBasedCpm: Cost per thousand impressions
Dimensions allow you to segment your data: - video:
Individual video performance - day: Daily breakdowns -
country: Geographic data - deviceType:
Desktop, mobile, tablet, etc. - operatingSystem: OS
breakdowns - ageGroup, gender: Demographic
data (limited availability)
yt_oauth()For detailed authentication instructions, see the YouTube Analytics API documentation.
Released under the MIT License.
Contributions are welcome! Please read the Contributor Code of Conduct and submit issues or pull requests on GitHub.
For bug reports and feature requests, please use the GitHub issue tracker.