From acedatacloud-content
Queries Google Analytics 4 reports and properties using the Data and Admin APIs. Useful for traffic, sessions, users, conversions, and realtime data.
How this skill is triggered — by the user, by Claude, or both
Slash command
/acedatacloud-content:google-analyticsWhen to use
Trigger when the user wants GA4 metrics — sessions, users, top pages / channels / countries, conversions, or live realtime users — for one of their GA4 properties. Read-only (`analytics.readonly`). List properties first to get the numeric property id.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Query **Google Analytics 4** via `curl + jq`. The user's OAuth bearer token is in
Query Google Analytics 4 via curl + jq. The user's OAuth bearer token is in
$GOOGLE_ANALYTICS_TOKEN (scope analytics.readonly); every call needs
Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN. Two APIs: the Admin API
(analyticsadmin.googleapis.com/v1beta) to discover properties, and the Data
API (analyticsdata.googleapis.com/v1beta) to run reports.
Failures are {"error":{"code","message","status"}} — show verbatim. 401 =
re-install.
AUTH="Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN"
# List the GA4 properties the user can access (via their account summaries)
curl -sS -H "$AUTH" "https://analyticsadmin.googleapis.com/v1beta/accountSummaries" \
| jq '.accountSummaries[]?.propertySummaries[]? | {property, displayName}'
property looks like properties/123456789 — the number is the PROPERTY_ID.
PID="123456789"
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" -d '{
"dateRanges":[{"startDate":"28daysAgo","endDate":"today"}],
"dimensions":[{"name":"pagePath"}],
"metrics":[{"name":"screenPageViews"},{"name":"activeUsers"}],
"orderBys":[{"metric":{"metricName":"screenPageViews"},"desc":true}],
"limit":10
}' "https://analyticsdata.googleapis.com/v1beta/properties/$PID:runReport" \
| jq '.rows[] | {page: .dimensionValues[0].value, views: .metricValues[0].value, users: .metricValues[1].value}'
Swap dimensions/metrics for other reports: sessionDefaultChannelGroup +
sessions (acquisition), country + activeUsers (geo), eventName +
eventCount / conversions (events). Dates accept NdaysAgo, today,
yesterday, or YYYY-MM-DD.
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"dimensions":[{"name":"country"}],"metrics":[{"name":"activeUsers"}]}' \
"https://analyticsdata.googleapis.com/v1beta/properties/$PID:runRealtimeReport" | jq '.rows'
analytics/v3 endpoints.screenPageViews, not "Pageviews").
If a name 400s, it's the wrong API id — check the GA4 dimensions & metrics list.limit (default 10k rows); page with offset.npx claudepluginhub acedatacloud/skills --plugin acedatacloud-contentPulls GA4 reports, traffic data, and insights from the Google Analytics Data API. Handles OAuth authentication and provides example queries for traffic overview, user behavior, and acquisition channels.
Queries Google Analytics 4 data via the Analytics Data API for metrics like page views, sessions, users, conversions, and traffic sources with custom date ranges and filtering.
Analyzes Google Analytics 4 data to review website performance, traffic patterns, bounce rates, and conversions. Generates actionable reports including SEO daily reports with organic KPIs, anomaly detection, and prioritized recommendations.