seo-matomo
Matomo Reporting API extension. Self-hosted or Matomo Cloud analytics as a GA4 alternative or complement. Organic traffic, landing pages, device / country breakdowns, referrers, search keywords.
Install / Use
npx skills add AgriciDaniel/claude-seo --skill seo-matomoInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Data & AnalyticsSupported Platforms
Our assessment of seo-matomo
seo-matomo scores 90/100 on our quality scale, 82nd of 279 Data & Analytics skills we index (top 30%).
Its SKILL.md is 5.7 KB long, well organised into 8 sections with 1 code example: a solid amount of guidance for an agent.
With 17,676 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 4 days ago, so seo-matomo is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
seo-matomo compared with similar skills
All 4 of these similar skills score higher than seo-matomo; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| seo-matomo (this skill)by AgriciDaniel | 90 | 17.7k | 4d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 85.8k | 12d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.0k | 1d ago | CLAUDE.md |
| crawl4aiby unclecode | 100 | 84.4k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 84.1k | today | MCP Server |
Frequently asked questions
- How do I install seo-matomo?
- Run
npx skills add AgriciDaniel/claude-seo --skill seo-matomo. The install tabs above show the steps for each supported agent. - Which AI agents does seo-matomo work with?
- It is written for Claude Code, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is seo-matomo safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is seo-matomo still maintained?
- The repository was last updated 4 days ago, so seo-matomo is actively maintained.
Skill content
View source on GitHubname: seo-matomo description: Matomo Reporting API extension. Self-hosted or Matomo Cloud analytics as a GA4 alternative or complement. Organic traffic, landing pages, device / country breakdowns, referrers, search keywords. Triggers on "Matomo", "self-hosted analytics", "analytics ohne Google", "GA4 alternative", "Matomo Reporting", "Piwik". metadata: version: "2.4.0" compatibility: "Requires a Matomo instance URL and API token in ~/.config/claude-seo/matomo.json (0600), or MATOMO_URL / MATOMO_API_TOKEN / MATOMO_SITE_ID in the environment. Run extensions/matomo/install.sh to configure."
seo-matomo
Self-hosted analytics surface. Use Matomo as a privacy-first GA4 alternative
when you own your analytics data, want zero Google dependency, or operate
behind a strict data-residency boundary. The same seo-matomo skill works
against Matomo Cloud and self-hosted instances.
Prerequisites
- Run
extensions/matomo/install.shorinstall.ps1. - A Matomo instance URL (https://analytics.example.com).
- A Matomo API
token_authwithviewaccess on the sites you analyze. - (Optional) A default
idSiteto avoid passing--site-idon every call.
Routing
| Command | Underlying script |
|---|---|
| /seo matomo check | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_auth.py --check |
| /seo matomo organic [site-id] | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py organic --site-id <id> |
| /seo matomo top-pages | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py top-pages |
| /seo matomo device | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py device |
| /seo matomo country | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py country |
| /seo matomo referrers | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py referrers |
| /seo matomo keywords | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_report.py keywords |
All commands accept --days (default 28), --limit, --site-id, and
--json. The site ID falls back to MATOMO_SITE_ID from settings.
When this skill applies
- The user wants Google-free analytics or has a Matomo instance already configured. Common in EU privacy-first setups, regulated industries, and teams who own their analytics.
- The user explicitly says "Matomo", "self-hosted analytics", or asks to
replace GA4. For Google Search performance use
seo-google; this skill is the reporting substitute. - The user is migrating from GA4 and wants the same report types (organic trend, landing pages, device / country split, referrer split) sourced from Matomo's Reporting API.
Cross-skill delegation
- For Google Search Console / CrUX / Indexing, route to
seo-google.seo-matomocovers reporting (visits / pages / referrers), not search performance metrics. - For AI Overview / GEO citability work, route to
seo-geo. Matomo offers no LLM-specific signals. - During
/seo audit, the orchestrator spawns theseo-matomoagent (analogous toseo-google) whenever"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_auth.py --checksucceeds. Both agents can be active simultaneously when the user has both GA4 and Matomo configured.
Self-hosted instance on a private address
Every Matomo request goes through claude-seo's SSRF guard: the instance URL
is validated and DNS-pinned, and a redirect off the instance is refused.
Private, loopback, and link-local addresses are refused by default. When the
user's instance lives on one (http://matomo.internal:8080,
http://192.168.1.20, http://localhost:8080), tell them to name it in the
CLAUDE_SEO_LOCAL_TARGETS allowlist:
export CLAUDE_SEO_LOCAL_TARGETS="matomo.internal:8080"
Entries are host or host:port, comma-separated, matched exactly. The
allowlist covers only the top-level instance URL; redirect targets and every
other host stay fail-closed, and cloud metadata addresses are refused even
when listed. Never suggest disabling the guard or editing url_safety.py:
the allowlist is the supported route. Details in
extensions/matomo/docs/MATOMO-SETUP.md and SECURITY.md.
Error Handling
- Refused by the SSRF guard (error names
CLAUDE_SEO_LOCAL_TARGETS): the instance is on a private address that has not been allowlisted. Give the user the exact export line from the error, which already carries the righthost:port. - Refused redirect: the instance answered a 30x pointing at another host.
MATOMO_URLis pointing at a redirector rather than at the Reporting API. Ask the user for the URL their instance actually serves the API from. - Missing credentials: report which env vars / config keys are unset and
remind the user to run
extensions/matomo/install.shor"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run matomo_auth.py --setup. - HTTP 401/403 from Matomo: the token lacks view access for the given site. Verify the token scope in Matomo Administration -> Personal -> Security -> API Tokens. The skill never logs the token.
result=errorpayloads from Matomo (e.g. invalididSite): surface the message verbatim; do not guess.- Connection / SSL / timeout: report the network failure class
(
ConnectionError,SSLError,timeout) and confirmMATOMO_URLresolves.
Output Formatting
- Tables for time-series, device, and country data.
- Critical / High / Medium / Low priority for any cross-skill actions surfaced from Matomo data.
- Always label the data source as "Matomo Reporting API (live)" to distinguish from GA4, CrUX, or static crawl analysis.
- For organic keywords, surface the
anonymized_share_pctprominently. Many keywords will be "(not provided)" due to browser privacy and Matomo's anonymization rules; this is normal, not a data bug.
Related Skills
Agent-Reach
85.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
crawl4ai
84.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Scrapling
84.1k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
