Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Automated client reporting for agencies and freelancers using OpenClaw. Pull data from Google Analytics, Google Search Console, social media platforms, and c...
Automated client reporting for agencies and freelancers using OpenClaw. Pull data from Google Analytics, Google Search Console, social media platforms, and c...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Pull metrics from multiple sources, generate branded reports, and auto-deliver to clients. Built for agencies and freelancers who need consistent, professional reporting without manual work.
pip3 install requests jinja2
Google Analytics 4 โ GA4_PROPERTY_ID + service account key Google Search Console โ service account key (see seo-audit-suite references) Social platforms โ same credentials as social-media-autopilot skill SendGrid โ for email delivery (SENDGRID_API_KEY)
client-reports/ โโโ config.json # Global settings, API keys โโโ clients/ # Per-client configuration โ โโโ client-name/ โ โโโ config.json # Client-specific settings (property IDs, branding) โ โโโ reports/ # Generated reports โ โโโ data/ # Cached metrics data โโโ templates/ # Report templates (Jinja2 HTML) โโโ schedules.json # Automated delivery schedule Run scripts/init-workspace.sh to create this structure.
scripts/add-client.sh --name "acme-corp" --domain "acme.com" --email "ceo@acme.com" Creates client directory with config template. Edit clients/acme-corp/config.json to add: GA4 property ID Search Console site URL Social media handles Branding (logo URL, brand colors) Report preferences (metrics to include, frequency)
Fetch fresh data for a client: scripts/pull-metrics.sh --client "acme-corp" # All sources scripts/pull-metrics.sh --client "acme-corp" --source ga4 # Google Analytics only scripts/pull-metrics.sh --client "acme-corp" --source gsc # Search Console only scripts/pull-metrics.sh --client "acme-corp" --source social # Social metrics scripts/pull-metrics.sh --client "acme-corp" --period 30d # Last 30 days Data sources and metrics: Google Analytics 4: Sessions, users, new users, bounce rate Top pages by views Traffic sources breakdown Conversion events Device/browser breakdown Google Search Console: Total clicks, impressions, CTR, avg position Top queries by clicks Top pages by impressions Position changes vs previous period Social Media: Followers/following changes Post engagement (likes, shares, comments) Top performing posts Reach/impressions
scripts/generate-report.sh --client "acme-corp" --type monthly scripts/generate-report.sh --client "acme-corp" --type weekly --format html scripts/generate-report.sh --client "acme-corp" --type custom --metrics "traffic,rankings,social" Report types: weekly โ 7-day snapshot with week-over-week changes monthly โ 30-day deep dive with month-over-month trends quarterly โ 90-day strategic overview custom โ pick specific metrics Output formats: Markdown โ default, good for Slack/email HTML โ branded, professional, email-ready PDF โ via HTML-to-PDF conversion (requires wkhtmltopdf or similar)
scripts/deliver-report.sh --client "acme-corp" --latest # Send most recent scripts/deliver-report.sh --client "acme-corp" --via email # Email delivery scripts/deliver-report.sh --client "acme-corp" --via slack # Slack webhook
Configure in schedules.json: { "schedules": [ { "client": "acme-corp", "type": "weekly", "day": "monday", "time": "09:00", "timezone": "America/Los_Angeles", "deliver_via": "email", "enabled": true }, { "client": "acme-corp", "type": "monthly", "day_of_month": 1, "time": "09:00", "timezone": "America/Los_Angeles", "deliver_via": "email", "enabled": true } ] } Use with OpenClaw cron to automate: check schedules daily, generate and deliver due reports.
Quick terminal dashboard for any client: scripts/dashboard.sh --client "acme-corp" Shows current period vs previous: traffic, rankings, social growth, conversions.
Templates use Jinja2 and live in templates/: <!-- templates/monthly.html --> <html> <head><style>/* brand styles */</style></head> <body> <h1>Monthly Report โ {{ client.name }}</h1> <p>{{ period.start }} to {{ period.end }}</p> <h2>Traffic Overview</h2> <table> <tr><td>Sessions</td><td>{{ ga4.sessions }}</td><td>{{ ga4.sessions_change }}%</td></tr> <tr><td>Users</td><td>{{ ga4.users }}</td><td>{{ ga4.users_change }}%</td></tr> </table> <h2>Search Performance</h2> <!-- ... --> </body> </html> Customize templates per client by placing overrides in clients/<name>/templates/.
Daily: Pull fresh metrics for all active clients Weekly: Generate and deliver weekly reports (Monday AM) Monthly: Generate and deliver monthly reports (1st of month) Quarterly: Generate quarterly reviews
references/ga4-setup.md โ Google Analytics 4 API setup and available metrics references/report-customization.md โ How to customize templates and metrics
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.