> Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".
npx skills add https://github.com/AgriciDaniel/claude-blog --skill blog-google
Direct access to Google's SEO APIs for blog performance analysis. Provides real
Chrome user metrics, indexation status, search performance, entity analysis, YouTube
video discovery, keyword volumes, and PDF/HTML performance reports.
All APIs are free at normal usage levels. Setup requires a Google Cloud project
with an API key and/or service account.
Always check credentials before running any command:
python3 skills/blog-google/scripts/run.py google_auth --check --json
Config file: ~/.config/claude-seo/google-api.json (shared with claude-seo)
{
"api_key": "AIzaSy...",
"oauth_client_path": "/path/to/client_secret.json",
"default_property": "sc-domain:example.com",
"ga4_property_id": "properties/123456789",
"ads_developer_token": "...",
"ads_customer_id": "123-456-7890",
"ads_login_customer_id": "123-456-7890"
}
If missing, read references/auth-setup.md and walk the user through setup.
| Tier | Detection | Available Commands |
|------|-----------|-------------------|
| 0 (API Key) | api_key present | pagespeed, crux, crux-history, youtube, nlp |
| 1 (OAuth/SA) | + OAuth token or service account | Tier 0 + gsc, inspect, index |
| 2 (Full) | + ga4_property_id configured | Tier 1 + ga4 |
| 3 (Ads) | + ads_developer_token + ads_customer_id | Tier 2 + keywords |
Always communicate the detected tier before running commands.
| Command | What it does | Tier |
|---------|-------------|------|
| /blog google setup | Check/configure API credentials |: |
| /blog google pagespeed <url> | PSI Lighthouse + CrUX field data | 0 |
| /blog google crux <url> | CrUX field data only (p75 metrics) | 0 |
| /blog google crux-history <url> | 25-week CWV trend analysis | 0 |
| /blog google youtube <query> | YouTube video search (views, likes, duration) | 0 |
| /blog google nlp <url-or-text> | NLP entity extraction + sentiment | 0 |
| /blog google gsc <property> | Search Console: clicks, impressions, CTR, position | 1 |
| /blog google inspect <url> | URL Inspection: index status, canonical | 1 |
| /blog google index <url> | Submit URL to Indexing API | 1 |
| /blog google ga4 [property-id] | GA4 organic traffic report | 2 |
| /blog google keywords <seed> | Keyword ideas from Google Ads Keyword Planner | 3 |
| /blog google report <type> | PDF/HTML performance report |: |
| /blog google quotas | Show rate limits for all APIs |: |
/blog google pagespeed <url>Combined Lighthouse lab data + CrUX field data for a published blog post.
Script: python3 skills/blog-google/scripts/run.py pagespeed_check <url> --json
Reference: references/api-reference.md
Output merges lab scores (point-in-time Lighthouse) with field data (28-day
Chrome user metrics). CrUX tries URL-level first, falls back to origin-level.
/blog google crux <url>CrUX field data only (no Lighthouse run). Faster.
Script: python3 skills/blog-google/scripts/run.py pagespeed_check <url> --crux-only --json
/blog google crux-history <url>25-week CrUX History trends. Shows whether CWV metrics are improving, stable, or degrading.
Script: python3 skills/blog-google/scripts/run.py crux_history <url> --json
/blog google gsc <property>Search Analytics: clicks, impressions, CTR, position for last 28 days.
Script: python3 skills/blog-google/scripts/run.py gsc_query --property <property> --json
Default: 28 days, dimensions=query,page, type=web, limit=1000.
Includes quick-win detection: queries at position 4-10 with high impressions.
/blog google inspect <url>URL Inspection: real indexation status from Google.
Script: python3 skills/blog-google/scripts/run.py gsc_inspect <url> --json
Returns: verdict (PASS/FAIL), coverage state, robots.txt status, indexing state,
page fetch state, canonical selection, mobile usability, rich results.
For batch inspection: python3 skills/blog-google/scripts/run.py gsc_inspect --batch <file> --json
/blog google index <url>Notify Google of a URL update. Submit new blog posts for faster indexation.
Script: python3 skills/blog-google/scripts/run.py indexing_notify <url> --json
Reference: references/api-reference.md
The Indexing API is officially for JobPosting and BroadcastEvent/VideoObject pages.
Always inform the user of this restriction. Daily quota: 200 publish requests.
For batch: python3 skills/blog-google/scripts/run.py indexing_notify --batch <file> --json
/blog google ga4 [property-id]Organic traffic report: daily sessions, users, pageviews, bounce rate, engagement.
Script: python3 skills/blog-google/scripts/run.py ga4_report --property <id> --json
Default: 28 days, filtered to Organic Search channel group.
For top landing pages: python3 skills/blog-google/scripts/run.py ga4_report --property <id> --report top-pages --json
YouTube mentions have the strongest AI visibility correlation (0.737, Ahrefs 75K brands).
Free, API key only. Used by blog-write and blog-rewrite for video embedding.
/blog google youtube <query>Search YouTube for videos relevant to a blog topic.
Script: python3 skills/blog-google/scripts/run.py youtube_search search "<query>" --json
Quota: 100 units per search (10,000 units/day free).
Returns: title, channel, views, likes, duration, description, tags.
For video details + comments: python3 skills/blog-google/scripts/run.py youtube_search video <video_id> --json
Google's own entity/sentiment analysis. Enhances E-E-A-T scoring for blog content.
/blog google nlp <url-or-text>Full NLP analysis: entities, sentiment, content classification.
Script: python3 skills/blog-google/scripts/run.py nlp_analyze --url <url> --json
Free tier: 5,000 units/month. Requires billing enabled on GCP project.
For entity extraction only: python3 skills/blog-google/scripts/run.py nlp_analyze --url <url> --features entities --json
Gold-standard keyword volume data. Requires Google Ads account (Tier 3).
/blog google keywords <seed>Generate keyword ideas from seed terms for blog topic research.
Script: python3 skills/blog-google/scripts/run.py keyword_planner ideas "<seed>" --json
For volume lookup: python3 skills/blog-google/scripts/run.py keyword_planner volume "<kw1>,<kw2>" --json
/blog google report <type>Generate a PDF/HTML report with charts and tables.
Script: python3 skills/blog-google/scripts/run.py google_report --type <type> --data <json> --domain <domain> --format pdf
| Type | Input | Output |
|------|-------|--------|
| cwv-audit | PSI + CrUX + CrUX History data | Core Web Vitals audit with gauges, timelines |
| gsc-performance | GSC query data | Search Console report with query tables |
| indexation | Batch inspection data | Indexation status with coverage donut |
| full | All data combined | Comprehensive Google SEO report |
Note: PDF generation requires system libraries: sudo apt install libpango1.0-dev libcairo2-dev.
Falls back to HTML if WeasyPrint is unavailable or PDF rendering fails.
| API | Per-Minute | Per-Day | Auth |
|-----|-----------|---------|------|
| PSI v5 | 240 QPM | 25,000 QPD | API Key |
| CrUX + History | 150 QPM (shared) | Unlimited | API Key |
| GSC Search Analytics | 1,200 QPM/site | 30M QPD | Service Account |
| GSC URL Inspection | 600 QPM | 2,000 QPD/site | Service Account |
| Indexing API | 380 RPM | 200 publish/day | Service Account |
| GA4 Data API | 10 concurrent (50 for 360) | 200K Core Tokens/day (2M for 360) | Service Account |
| YouTube Data |: | 10,000 units/day | API Key |
| NLP API |: | 5,000 units/month | API Key (billing) |
Read references/rate-limits-quotas.md for detailed quota management.
This skill is both user-invocable (/blog google pagespeed) and callable
internally by other blog sub-skills:
Falls back gracefully when credentials are not configured.
| Scenario | Action |
|----------|--------|
| No credentials configured | Run /blog google setup. List Tier 0 commands (API key only). |
| Service account lacks GSC access | Add client_email to GSC > Settings > Users > Add. |
| CrUX data unavailable (404) | Insufficient Chrome traffic. Use PSI lab data as fallback. |
| GA4 property not found | Find property ID in GA4 Admin > Property Details. |
| Indexing API quota exceeded | 200/day limit. Prioritize most important URLs. |
| Rate limit (429) | Wait and retry with exponential backoff. |
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take agricidaniel/blog-google from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.