بنقرة واحدة
umami-report
Per-site visitor & pageview reports from a private (self-hosted) Umami instance.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Per-site visitor & pageview reports from a private (self-hosted) Umami instance.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Check your Google Calendar (read-only): today's / this week's / upcoming events as an agenda.
List your Claude Code sessions for any time window — start, duration, project, message counts, title, models, token usage, API-equivalent cost, and an A–D cost-efficiency grade with per-session recommendations, straight from the local transcripts.
Report the commits you authored across every git repo under one folder, for any time window (grouped by repo, with optional line churn).
Read and write notes in an Obsidian vault — list notes (all or modified in a window), show a note, and save the current chat as a note.
Time-tracking reports (hours per project / per day, tasks completed) from a Super Productivity data file.
One weekly report combining Super Productivity time per project/task (with week-over-week deltas), Obsidian notes of the week grouped by folder (with key bullet points), emails sent this week, calendar events, git commits per repo, Claude Code sessions per project, and Umami page visits vs last week — with a skimmable TL;DR summary at the top.
| name | umami-report |
| description | Per-site visitor & pageview reports from a private (self-hosted) Umami instance. |
| version | 1.0.0 |
| author | gerodp |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| required_environment_variables | [{"name":"UMAMI_URL","prompt":"Umami base URL (e.g. https://analytics.example.com)","required_for":"all functionality"},{"name":"UMAMI_USERNAME","prompt":"Umami username","required_for":"all functionality"},{"name":"UMAMI_PASSWORD","prompt":"Umami password","required_for":"all functionality"}] |
| metadata | {"hermes":{"tags":["umami","analytics","web-analytics","traffic","visitors","pageviews","reporting","self-hosted","stats"],"category":"analytics","requires_toolsets":["terminal"]}} |
Report visitor and pageview numbers for every website on a private, self-hosted Umami analytics instance — in one command. Zero dependencies (Python stdlib only); all sites are queried concurrently so a full report returns in a couple of seconds. Each metric is shown with its delta versus the previous equal-length period (▲/▼).
Script path: ~/.hermes/skills/analytics/umami-report/scripts/umami_report.py
reportreport --site <name>report --days N or --since or
--start/--endreport --jsonPython 3.8+ (stdlib only — no installs). Three environment variables, injected
automatically into the sandbox from ~/.hermes/.env:
UMAMI_URL, UMAMI_USERNAME, UMAMI_PASSWORD.
Always run check first. If it reports missing variables, the user must set
them themselves — guide them, do not collect secrets in chat:
hermes config # edit config, or
$EDITOR ~/.hermes/.env # add: UMAMI_URL=..., UMAMI_USERNAME=..., UMAMI_PASSWORD=...
~/.hermes/.env is mode 600. After editing, re-run check.
cat, or interpolate $UMAMI_PASSWORD (or the other
vars) into a command line, log, or chat message.~/.hermes/.env on their own machine.check command. The script is
written to never print secrets or the auth token.SCRIPT=~/.hermes/skills/analytics/umami-report/scripts/umami_report.py
python3 $SCRIPT check
Prints OK — authenticated to <url>; N website(s) visible. on success, or a
clear, secret-free error. Exit code is non-zero on any failure.
python3 $SCRIPT report # all sites, last 7 days
python3 $SCRIPT report --days 30 # last 30 days
python3 $SCRIPT report --since today # today so far
python3 $SCRIPT report --start 2026-06-01 --end 2026-06-07
python3 $SCRIPT report --site blog # only sites matching "blog"
python3 $SCRIPT report --days 30 --json # machine-readable
report is the default, so python3 $SCRIPT with no args == last 7 days.
Output columns: Site, Visitors, Visits, Pageviews, Bounce%, sorted by
pageviews descending, with a TOTAL row. Visitors/Visits/Pageviews each show
the ▲/▼ change versus the immediately preceding period of equal length. The
--json output additionally carries site_id (the Umami website id, for telling
multiple sites apart / verification), bounce_pct, avg_duration and
avg_duration_prev (average visit duration in seconds) per site.
Present the table to the user as-is (it's already aligned). When they ask about a single number, read it from the relevant cell rather than re-querying.
--start/--end must be given together (YYYY-MM-DD); the end date is
inclusive (counts the whole day). They override --days/--since.UMAMI_URL (or http vs https) shows up as a network/HTTP error
from check — fix the env var, don't retry blindly.x-umami-api-key header instead — not supported here.python3 ~/.hermes/skills/analytics/umami-report/scripts/umami_report.py check
# → "OK — authenticated to https://...; N website(s) visible."
python3 ~/.hermes/skills/analytics/umami-report/scripts/umami_report.py report
# → aligned table of all sites for the last 7 days, with a TOTAL row.
Offline unit tests (no network) live next to the script:
python3 ~/.hermes/skills/analytics/umami-report/scripts/test_umami_report.py