Mmcp.market

seo-matomo skill

by AgriciDaniel·AgriciDaniel/claude-seo·18k stars·MIT

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".

A100/100content scan

Is the seo-matomo skill safe?

Clean: nothing in its files matched our rules. We read 1 file in the folder on 2026-09-28.

No findings.

Install the seo-matomo skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git /tmp/claude-seo
mkdir -p ~/.claude/skills
cp -r /tmp/claude-seo/extensions/matomo/skills/seo-matomo ~/.claude/skills/seo-matomo
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

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.sh or install.ps1.
  • A Matomo instance URL (https://analytics.example.com).
  • A Matomo API token_auth with view access on the sites you analyze.
  • (Optional) A default idSite to avoid passing --site-id on every call.

Routing

All commands accept --days (default 28), --limit, --site-id, and --json. The site ID falls back to MATOMOSITEID from settings.

When this skill applies

configured. Common in EU privacy-first setups, regulated industries, and teams who own their analytics.

  • The user wants Google-free analytics or has a Matomo instance already

replace GA4. For Google Search performance use seo-google; this skill is the reporting substitute.

  • The user explicitly says "Matomo", "self-hosted analytics", or asks to

(organic trend, landing pages, device / country split, referrer split) sourced from Matomo's Reporting API.

  • The user is migrating from GA4 and wants the same report types

Cross-skill delegation

seo-matomo covers reporting (visits / pages / referrers), not search performance metrics.

  • For Google Search Console / CrUX / Indexing, route to seo-google.

offers no LLM-specific signals.

  • For AI Overview / GEO citability work, route to seo-geo. Matomo

(analogous to seo-google) whenever "${CLAUDEPLUGINROOT}/scripts/claude-seo" run matomo_auth.py --check succeeds. Both agents can be active simultaneously when the user has both GA4 and Matomo configured.

  • During /seo audit, the orchestrator spawns the seo-matomo agent

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 CLAUDESEOLOCAL_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

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 right host:port.

  • Refused by the SSRF guard (error names CLAUDESEOLOCAL_TARGETS): the

MATOMO_URL is pointing at a redirector rather than at the Reporting API. Ask the user for the URL their instance actually serves the API from.

  • Refused redirect: the instance answered a 30x pointing at another host.

remind the user to run extensions/matomo/install.sh or "${CLAUDEPLUGINROOT}/scripts/claude-seo" run matomo_auth.py --setup.

  • Missing credentials: report which env vars / config keys are unset and

site. Verify the token scope in Matomo Administration -> Personal -> Security -> API Tokens. The skill never logs the token.

  • HTTP 401/403 from Matomo: the token lacks view access for the given

the message verbatim; do not guess.

  • result=error payloads from Matomo (e.g. invalid idSite): surface

(ConnectionError, SSLError, timeout) and confirm MATOMO_URL resolves.

  • Connection / SSL / timeout: report the network failure class

Output Formatting

surfaced from Matomo data.

  • Tables for time-series, device, and country data.
  • Critical / High / Medium / Low priority for any cross-skill actions

distinguish from GA4, CrUX, or static crawl analysis.

  • Always label the data source as "Matomo Reporting API (live)" to

Many keywords will be "(not provided)" due to browser privacy and Matomo's anonymization rules; this is normal, not a data bug.

  • For organic keywords, surface the anonymizedsharepct prominently.

More skills from AgriciDaniel/claude-seo

  • AseoComprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability, indexability, Core Web Vitals with INP), schema markup, content quality (E-E-A-T), image optimization, sitemap analysis, and GEO for AI Overviews/ChatGPT/Perplexity. Industry detection for SaaS, e-commerce, local, publishers, agencies. Triggers on: SEO, audit, schema, Core Web Vitals, sitemap, E-E-A-T, AI Overviews, GEO, technical SEO, content quality, page speed. Use this hub only when the SEO domain is clear and the requested workflow is not; otherwise use the exact retained leaf or command.
  • Aseo-agenticAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).
  • Aseo-ahrefsAhrefs API analyst (extension). Reads referring domains, backlinks, organic keywords, and content explorer data via the tested @ahrefs/mcp@0.0.11 server. Pairs with seo-backlinks for multi-source confidence weighting.
  • Aseo-auditRun a full-site SEO audit and return a scored, prioritized report. Use only for site-wide checks; use seo-page for one URL or seo-technical for a technical-only review.
  • Aseo-backlinksAnalyze a site's backlink profile, anchors, toxic signals, competitors, gaps, and disavow candidates. Use only when links or referring domains are the requested focus.
  • Aseo-bingBing Webmaster Tools + IndexNow extension. Microsoft Copilot citations are fed by the Bing index; this skill makes Bing visibility, link data, and IndexNow URL submission first-class.
  • Aseo-clusterCluster keywords by SERP overlap and design hub-and-spoke content architecture with internal links. Use for planning only; use the blog-cluster command to execute article production.
  • Aseo-competitor-pagesGenerate SEO-optimized competitor comparison and alternatives pages. Covers "X vs Y" layouts, "alternatives to X" pages, feature matrices, schema markup, and conversion optimization. Use when user says "comparison page", "vs page", "alternatives page", "competitor comparison", "X vs Y", "versus", "compare competitors", or "alternative to".
  • Aseo-contentEvaluate page content for usefulness, E-E-A-T, readability, thinness, and AI citation readiness, plus last-mile draft cleanup (AI-typical phrasing and invisible Unicode watermark characters). Use for content-only analysis, not full-page technical checks.
  • Aseo-content-briefGenerate competitive SEO content briefs with per-section word counts, competitor scoring, keyword density guidance, and page-type templates. Supports both new page briefs and improve-existing-page briefs. Use when user says "content brief", "write a brief", "content outline", "blog brief", "service page brief", "brief for", "writing brief", "content plan", or "outline for".
  • Aseo-dataforseoLive SEO data via DataForSEO MCP server: SERP analysis, keyword research (volume, difficulty, intent, trends), backlink profiles, on-page analysis, competitor and content analysis, business listings, AI visibility (LLM mention tracking), and domain analytics. Requires DataForSEO extension installed. Use when user says "dataforseo", "live SERP", "keyword volume", "backlink data", "AI visibility check", or "real search data".
  • Aseo-dataforseoLive SEO data via DataForSEO MCP server: SERP analysis, keyword research (volume, difficulty, intent, trends), backlink profiles, on-page analysis, competitor and content analysis, business listings, AI visibility (LLM mention tracking), and domain analytics. Requires DataForSEO extension installed. Use when user says "dataforseo", "live SERP", "keyword volume", "backlink data", "AI visibility check", or "real search data".

All agent skills → · MCP servers