GA4 Analytics Toolkit

ReviewAudited by ClawScan on May 10, 2026.

Overview

The toolkit mostly matches its analytics purpose, but it includes high-impact Google indexing actions and local file storage helpers that are not tightly bounded.

Install only if you trust the publisher and need Google Analytics/Search Console automation. Use a dedicated least-privilege Google service account, avoid granting Indexing API rights unless required, require confirmation before any reindexing or URL removal, and keep the local results directory private.

Findings (5)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If invoked incorrectly, the agent could request indexing changes that affect search visibility for URLs tied to the service account.

Why it was flagged

The skill includes a function that can request URL deletion from Google's index using a caller-supplied URL, with no visible domain check or explicit confirmation guard in the function.

Skill content
export async function removeFromIndex(url, options = {}) { ... requestBody: { url, type: 'URL_DELETED' }
Recommendation

Require explicit user confirmation for every indexing mutation, validate URLs against SEARCH_CONSOLE_SITE_URL, and consider disabling or removing URL deletion unless the user specifically needs it.

What this means

A mistaken or adversarial call could cause the agent to read JSON files outside the intended results folder or write generated result files into unexpected local directories.

Why it was flagged

The storage helper accepts caller-controlled category and filepath values without showing path normalization or containment to the results directory, creating path traversal or unintended local JSON read/write risk.

Skill content
const categoryDir = join(settings.resultsDir, category); ... writeFileSync(filepath, JSON.stringify(result, null, 2), 'utf-8'); ... export function loadResult(filepath) { ... readFileSync(filepath, 'utf-8'); }
Recommendation

Constrain reads and writes to the configured results directory, reject absolute paths and '..' segments, and expose only scoped result-loading functions to the agent.

What this means

Anyone who can use the configured environment may be able to access the Google properties and indexing APIs available to that service account.

Why it was flagged

The skill asks users to provide a Google service account private key. This is expected for GA4/Search Console/Indexing access, but it is sensitive authority and registry metadata does not declare a primary credential.

Skill content
GA4_CLIENT_EMAIL=service-account@project.iam.gserviceaccount.com
GA4_PRIVATE_KEY="<your-service-account-private-key>"
Recommendation

Use a dedicated least-privilege service account, grant only the required properties and APIs, rotate the key if exposed, and avoid enabling Indexing API permissions unless needed.

What this means

Saved result files may contain sensitive business analytics and can be reused or exposed later if the project directory is shared or committed.

Why it was flagged

The skill intentionally persists retrieved analytics, Search Console, revenue, demographic, and realtime data to local files for later summaries.

Skill content
All results automatically save as timestamped JSON files to `results/{category}/`.
Recommendation

Keep the results directory private, add it to .gitignore if appropriate, and delete or redact old result files when they are no longer needed.

What this means

Installing dependencies from an unknown-source skill can run package lifecycle behavior or introduce vulnerable packages.

Why it was flagged

The skill is described as instruction-only in the install metadata, but its setup asks users to install Node dependencies. This is disclosed and user-directed, but dependency provenance should be reviewed.

Skill content
Install dependencies:

```bash
cd scripts && npm install
```
Recommendation

Review scripts/package.json and scripts/package-lock.json before installing, use a clean workspace, and avoid running the setup with elevated privileges.