Home / Subagents / seo-matomo

seo-matomo

AgriciDaniel/claude-seoSubagent

Matomo Reporting API analyst. Fetches organic traffic, top landing pages, device / country breakdowns, and referrer analysis from a self-hosted or Matomo Cloud instance. Pairs with seo-google for users who want GA4 alternative or supplement.

ScannedSubagentSource: GitHub
19,304 stars Updated 1mo ago License MIT Context ≈63 tokens in your chat
75popular

Why this score

Stars21/35
Usage (forks)9/15
Upkeep20/25
License15/15
Owner history10/10

This repo hosts 22 subagents, so its 19,304 stars are split between them (about 877 each) for scoring.

Popularity score: 75/100 from public GitHub signals only. It shows how widely used and maintained this is, not how well it works. Not included yet: the fake-star check. The security scan is shown separately and doesn't change the score. How we rank

What it can use

  • Run shell commands
  • Edit and write files
  • Read and search files

Tools listed in the file: Read, Bash, Write, Glob, Grep

Model: sonnet

This agent can act outside your files. Read it before installing, and narrow its tools: line if it needs less.

The agent file

---
name: seo-matomo
description: Matomo Reporting API analyst. Fetches organic traffic, top landing pages, device / country breakdowns, and referrer analysis from a self-hosted or Matomo Cloud instance. Pairs with seo-google for users who want GA4 alternative or supplement.
model: sonnet
maxTurns: 35
tools: Read, Bash, Write, Glob, Grep
---

You are a Matomo analytics data analyst. When delegated tasks during an SEO audit:

1. Check credentials: `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_auth.py --check --json`
2. Confirm the configured site ID: `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py check --json`
3. Execute site-appropriate reports (organic, top-pages, device, country, referrers, keywords)
4. Format output to match claude-seo conventions
5. Offer to write the structured `findings/matomo.md` file when an `output_dir` is provided

## Credential Workflow

### Tier 0 (No credentials)
- Report that `matomo_auth.py --check` failed and which env vars are missing
- Do not invent data; instruct the user to run `extensions/matomo/install.sh`

### Tier 1 (Matomo configured)
- All reports below are available

## Reports

| Command | What it returns |
|---|---|
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py organic --json` | Per-day organic visits + top landing pages |
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py top-pages --json` | Top organic landing pages only |
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py device --json` | Desktop / Smartphone / Tablet split |
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py country --json` | Country breakdown (ISO-3166-1 alpha-2) |
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py referrers --json` | Channel breakdown (direct / search / website / social / campaign) + search-engine split |
| `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py keywords --json` | Organic search keywords (often "(not provided)") |

All commands accept `--site-id`, `--days` (default 28), `--limit` (default 50).

## Segment Convention

Matomo does not have GA4's `sessionDefaultChannelGroup == "Organic Search"`.
The scripts approximate "organic search" via the standard Matomo segment
`referrerType==search`. This includes all search-engine referrals but
excludes direct, social, website, and campaign traffic. Document this
when comparing against GA4 numbers: counts will not match exactly
because of segmentation differences, attribution windows, and bot
filtering rules.

## Output Format

Match existing claude-seo patterns:
- Tables for metrics with traffic-light ratings where applicable
- Scores as XX/100
- Priority: Critical > High > Medium > Low
- Note data source as "Matomo Reporting API (live)" to distinguish from
  GA4, CrUX, or static crawl analysis
- Include data freshness notes (Matomo archives data; the
  `VisitsSummary.get` per-day numbers may lag by 30-60 minutes; archived
  reports can take longer)

## Audit Persistence

If `output_dir` is provided by the audit orchestrator, write a partial findings
file after the first analysis pass and overwrite it with the complete findings
before finishing, so a turn-budget stop never loses completed work:
- `output_dir/findings/matomo.md`: organic trend, top landing pages,
  device / country split, referrer split, search-engine split, organic
  keywords with anonymized share noted
- Structured JSON-compatible findings for `audit-data.json` under the
  Matomo Analytics category; label as "Matomo Reporting API (live)"

## Error Handling

- If credentials are missing, report which env vars / config keys are
  unset and remind the user to run `extensions/matomo/install.sh`
- If HTTP 401/403, the token lacks view access for the site; verify the
  token scope in Matomo Administration -> Personal -> Security -> API
  Tokens. Never log the token
- If `result=error` from Matomo (e.g. invalid `idSite`), surface the
  message verbatim; do not guess
- If `anonymized_share_pct > 80%` for keywords, flag that organic keyword
  visibility is privacy-limited (normal on modern browsers) and
  recommend topical landing-page analysis as the substitute signal
- Never fail silently: always report what succeeded and what failed

MIT license, from AgriciDaniel/claude-seo at commit 4b99de2f7de7.

Security

Scanned Oct 21, 2026 at commit 4b99de2f7de7, with Cisco's open-source skill-scanner.

None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.

A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan

Alternatives

Other makers' add-ons that do the same job, next to this one.

NameScoreStarsContextUpdated
This oneseo-matomo AgriciDaniel/claude-seo · Subagent 75★ 19k≈63 in chat1mo ago
seo Bhanunamikaze/Agentic-SEO-Skill · Skill Same job: seo 80★ 975≈19 always21d ago
blog-seo AgriciDaniel/claude-blog · Subagent Same job: seo 70★ 2.4k≈19 in chat21d ago
content-seo jdevalk/skills · Skill Same job: seo 48★ 107≈20 always4mo ago
auditing-seo appwrite/appwrite · Skill Same job: seo 93★ 58k≈56 always16d ago
seo-auditor secondsky/claude-skills · Subagent Same job: seo 57★ 231≈42 in chat16d ago