К основному содержанию
скилл CX Codex

google-analytics — скилл для Claude Code: отчёты GA4 из чата

Тянет отчёты GA4 через Google Analytics Data API: трафик, каналы, конверсии. Пригодится, когда нужно посмотреть цифры, не открывая веб-интерфейс.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add OpenClaudia/openclaudia-skills --skill google-analytics -a claude-code
Открыть на GitHub

Что делает google-analytics

Скилл превращает запросы про трафик и поведение пользователей в вызовы runReport. Внутри — готовые шаблоны curl для пяти типов отчётов: обзор трафика, источники привлечения, топ страниц, вовлечённость и конверсии. Каждый отчёт — POST с JSON-телом, где задаются dateRanges, metrics, dimensions и сортировка.

Перед работой нужны OAuth-креденшелы Google: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET и действующий access token. Их кладут в .env, .env.local или ~/.claude/.env.global. Токен живёт час, дальше его обновляют через refresh_token — refresh-токен придётся хранить отдельно и беречь. ID свойства в GA4 ищут через accountSummaries, формат — properties/XXXXXXXXX.

Диапазоны дат задаются короткими строками вроде 30daysAgo и today, а два dateRanges в одном запросе дают сравнение периодов. Отчёты по конверсиям фильтруются по eventName через inListFilter. Если OAuth не настроен, скилл просто не сможет обратиться к API — это первое, что стоит проверить перед установкой.

Какие задачи решает

  • посмотреть сессии, пользователей и просмотры страниц за период
  • разложить трафик по каналам и UTM-кампаниям
  • найти страницы с наибольшим числом просмотров
  • оценить вовлечённость и глубину просмотра по разделам
  • собрать статистику по событиям покупки и регистрации

Примеры запросов агенту

  • Покажи отчёт GA4 по трафику за последние 30 дней
  • Разложи сессии по каналам привлечения и кампаниям
  • Какие страницы набрали больше всего просмотров за месяц?

Как установить google-analytics

1Через Skills CLI (Vercel)

npx skills add OpenClaudia/openclaudia-skills --skill google-analytics -a claude-code

2Вручную: положить файлы

~/.claude/skills/google-analytics/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/google-analytics/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора49

content-calendar Скилл выстраивает сетку публикаций для соцсетей, рассылок и блога на неделю, месяц или квартал. Помогает распределить темы по правилу 80/20 и подобрать время выходов. CX Codex +1 676установок icp-builder Скилл задаёт пошаговый фреймворк для описания идеального клиента (ICP), сегментации аудитории B2B или B2C и подготовки вопросов для интервью. CX Codex +1 536установок copywriting Пишет текст для лендингов, продуктовых и sales-страниц, рекламы. Собирает вводные, выбирает фреймворк и выдаёт заголовки с призывами к действию. CX Codex +1 531установок reddit-marketing Скилл ведёт стратегию продвижения на Reddit: ищет подходящие сабреддиты, планирует контент и следит, чтобы аккаунт не забанили. CX Codex +1 529установок content-strategy Проектирует тематические кластеры, контент-планы и карты статей под этапы воронки продаж. Пригодится редакторам и маркетологам для органического продвижения. CX Codex +1 512установок social-content Пишет посты под конкретную платформу: Twitter/X, LinkedIn, Instagram, TikTok, Reddit и Facebook. Умеет публиковать через API. CX Codex +1 508установок competitor-analysis Скилл для анализа конкурентов: SEO, реклама, соцсети, email, цены и позиционирование. Пригодится перед запуском продукта или пересмотром стратегии. CX Codex +1 505установок page-cro Скилл разбирает лендинг по шагам: первый экран, формы, соцдоказательства, скорость. Пригодится, когда страница не конвертит и непонятно почему. CX Codex +1 501установок

Похожие

google-analytics-data-api-basics официальный google Скилл подключает работу с отчётными данными Google Analytics через Data API v1beta. Нужен для запросов метрик, измерений и проверки доступа к API. CX Codex 7 364установок google-analytics-admin-api-basics официальный google Скилл помогает настраивать аккаунты и ресурсы Google Analytics через Admin API. Пригодится, если нужно управлять аналитикой из кода. CX Codex 7 068установок analytics-tracking kostja94 Указатель на актуальные инструкции по отслеживанию событий GA4, ключевых событий и User-ID. Нужен при переносе со старого пути скилла. CX Codex +1 2 400установок analytics coreyhaines31 Помогает составить план трекинга, настроить события для GA4, GTM, Mixpanel или Segment и проверить сбор метрик без искажений. CX Codex +1 84 300установок analytics-tracking-testing kindlmann Скилл проверяет, что события GA4, пиксели Meta и TikTok действительно уходят из браузера, а не просто появляются в dataLayer. CX Codex +1 998установок dark-social-attributor aaron-he-zhu Скилл помогает оценить трафик из мессенджеров и закрытых каналов без кликовых меток. Он разбирает прямой трафик GA4 и проектирует опросные поля. CX Codex +1 1 000установок

Рядом в теме «Маркетинг и контент»

Всё по теме «Маркетинг и контент» →

Вопросы о google-analytics

Как установить google-analytics в Claude?

Выполните npx skills add OpenClaudia/openclaudia-skills --skill google-analytics -a claude-code. Скилл появится в ~/.claude/skills/google-analytics/SKILL.md.

Что делает скилл google-analytics?

Он обращается к Google Analytics Data API и возвращает отчёты GA4: трафик, источники привлечения, топ страниц, метрики вовлечённости и конверсии.

Что нужно для работы скилла?

OAuth-креденшелы Google: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET и access token. Токен обновляется через refresh-токен, потому что истекает через час.

Исходный текст

SKILL.md · MIT
---
name: google-analytics
description: >
  Pull GA4 reports, traffic data, and insights from the Google Analytics Data API.
  Use when asked about website traffic, user behavior, acquisition channels,
  conversions, or audience segments. Trigger phrases: "google analytics", "GA4",
  "traffic report", "analytics data", "user acquisition", "engagement metrics",
  "conversion tracking", "audience segments", "page views", "sessions".
---

# Google Analytics (GA4)

Pull reports and insights from GA4 using the Google Analytics Data API.

## Prerequisites

Requires Google OAuth credentials:
- `GOOGLE_CLIENT_ID`
- `GOOGLE_CLIENT_SECRET`
- A valid OAuth access token (refreshed as needed)

Set credentials in `.env`, `.env.local`, or `~/.claude/.env.global`.

### Getting an Access Token

```bash
# Step 1: Get authorization code (user must visit this URL in browser)
echo "https://accounts.google.com/o/oauth2/v2/auth?client_id=${GOOGLE_CLIENT_ID}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code&access_type=offline"

# Step 2: Exchange code for tokens
curl -s -X POST "https://oauth2.googleapis.com/token" \
  -d "code={AUTH_CODE}" \
  -d "client_id=${GOOGLE_CLIENT_ID}" \
  -d "client_secret=${GOOGLE_CLIENT_SECRET}" \
  -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob" \
  -d "grant_type=authorization_code"

# Step 3: Refresh an expired token
curl -s -X POST "https://oauth2.googleapis.com/token" \
  -d "refresh_token={REFRESH_TOKEN}" \
  -d "client_id=${GOOGLE_CLIENT_ID}" \
  -d "client_secret=${GOOGLE_CLIENT_SECRET}" \
  -d "grant_type=refresh_token"
```

Store the refresh token securely. The access token expires after 1 hour.

### Finding Your GA4 Property ID

```bash
curl -s -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  "https://analyticsadmin.googleapis.com/v1beta/accountSummaries" \
  | python3 -c "
import json, sys
data = json.load(sys.stdin)
for acct in data.get('accountSummaries', []):
    for prop in acct.get('propertySummaries', []):
        print(f\"{prop['property']}  |  {prop.get('displayName','')}  |  Account: {acct.get('displayName','')}\")
"
```

The property ID format is `properties/XXXXXXXXX`.

---

## API Base

```
POST https://analyticsdata.googleapis.com/v1beta/{property_id}:runReport
```

All report requests use POST with a JSON body. Always include `Authorization: Bearer {ACCESS_TOKEN}`.

---

## 1. Traffic Overview Report

Get sessions, users, page views, and engagement rate over a date range.

### Example curl

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "newUsers"},
      {"name": "screenPageViews"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"},
      {"name": "bounceRate"}
    ]
  }'
```

### Date Range Shortcuts

- `today`, `yesterday`
- `7daysAgo`, `14daysAgo`, `28daysAgo`, `30daysAgo`, `90daysAgo`
- Specific dates: `2024-01-01`
- Compare periods by passing two dateRanges

---

## 2. User Acquisition Report

See where users come from (channels, sources, campaigns).

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "sessionDefaultChannelGroup"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ],
    "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}],
    "limit": 20
  }'
```

### Useful Acquisition Dimensions

| Dimension | Description |
|-----------|-------------|
| `sessionDefaultChannelGroup` | Channel grouping (Organic, Paid, Social, etc.) |
| `sessionSource` | Traffic source (google, facebook, etc.) |
| `sessionMedium` | Medium (organic, cpc, referral, etc.) |
| `sessionCampaignName` | UTM campaign name |
| `firstUserSource` | First-touch attribution source |

---

## 3. Top Pages Report

Find the highest-traffic pages on the site.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "pagePath"}
    ],
    "metrics": [
      {"name": "screenPageViews"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"}
    ],
    "orderBys": [{"metric": {"metricName": "screenPageViews"}, "desc": true}],
    "limit": 25
  }'
```

---

## 4. Engagement Metrics

Understand how users interact with your content.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "pagePath"}
    ],
    "metrics": [
      {"name": "engagedSessions"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"},
      {"name": "screenPageViewsPerSession"},
      {"name": "eventCount"}
    ],
    "orderBys": [{"metric": {"metricName": "engagedSessions"}, "desc": true}],
    "limit": 20
  }'
```

### Key Engagement Metrics

| Metric | What It Measures |
|--------|-----------------|
| `engagementRate` | % of sessions that were engaged (>10s, 2+ pages, or conversion) |
| `averageSessionDuration` | Mean session length in seconds |
| `screenPageViewsPerSession` | Pages per session |
| `bounceRate` | % of sessions with no engagement |
| `eventCount` | Total events fired |

---

## 5. Conversion Tracking

Report on conversion events (purchases, signups, etc.).

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "eventName"}
    ],
    "metrics": [
      {"name": "eventCount"},
      {"name": "totalUsers"},
      {"name": "eventValue"}
    ],
    "dimensionFilter": {
      "filter": {
        "fieldName": "eventName",
        "inListFilter": {
          "values": ["purchase", "sign_up", "generate_lead", "begin_checkout"]
        }
      }
    }
  }'
```

### Conversion by Channel

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "sessionDefaultChannelGroup"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "conversions"},
      {"name": "totalRevenue"}
    ],
    "orderBys": [{"metric": {"metricName": "conversions"}, "desc": true}]
  }'
```

---

## 6. Audience Segments

Break down traffic by device, geography, and demographics.

### By Device Category

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [{"name": "deviceCategory"}],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ]
  }'
```

### By Country

Replace `deviceCategory` with `country` in the dimensions.

### By Landing Page + Source

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "landingPage"},
      {"name": "sessionSource"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ],
    "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}],
    "limit": 30
  }'
```

---

## 7. Period Comparison

Compare two time periods to identify trends.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [
      {"startDate": "30daysAgo", "endDate": "today", "name": "current"},
      {"startDate": "60daysAgo", "endDate": "31daysAgo", "name": "previous"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "conversions"},
      {"name": "engagementRate"}
    ]
  }'
```

---

## Response Parsing

GA4 API returns JSON. Parse with python3 or jq:

```bash
# Parse report into a table
curl -s -X POST "..." | python3 -c "
import json, sys
data = json.load(sys.stdin)
headers = [h['name'] for h in data.get('dimensionHeaders',[])] + [m['name'] for m in data.get('metricHeaders',[])]
print(' | '.join(headers))
print('-' * (len(headers) * 20))
for row in data.get('rows', []):
    dims = [d['value'] for d in row.get('dimensionValues',[])]
    mets = [m['value'] for m in row.get('metricValues',[])]
    print(' | '.join(dims + mets))
"
```

---

## Workflow: Monthly Analytics Report

When asked for a monthly report:

1. Pull traffic overview (sessions, users, page views) with period comparison
2. Pull acquisition breakdown by channel
3. Pull top 20 pages by page views
4. Pull conversion summary by channel
5. Pull device and country breakdown

Present as a structured report with tables, trends (up/down arrows), and recommendations:

```
## Monthly Analytics Report: {Property Name}
### Period: {date range} vs {previous period}

### Traffic Summary
| Metric | Current | Previous | Change |
|--------|---------|----------|--------|
| Sessions | X | Y | +Z% |
| ...

### Top Channels
...

### Top Pages
...

### Conversion Summary
...

### Recommendations
- [Based on data patterns]
```

## Common Issues

- **403 Forbidden**: User lacks access to the GA4 property
- **Empty rows**: No data for the requested date range or filters
- **Quota exceeded**: GA4 API has daily quotas; reduce date ranges or batch requests
- **Property not found**: Verify the property ID format (`properties/XXXXXXXXX`)

© OpenClaudia · MIT · OpenClaudia/openclaudia-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой