Files
AgriciDaniel 2020316123 fix(audit): grand-audit-2 remediation, security + currency + drift
Independent re-audit (6 Codex slices) of shipped v1.11.0 surfaced real
issues the first pass missed. Remediated across 54 files:

Security: SSRF DNS-rebinding revalidation (generate_hero, blog_preflight);
symlink TOCTOU on chart/hero/preflight/image writers (O_NOFOLLOW atomic);
path traversal in blog-notebooklm/blog-google/blog-audio wrapper run.py;
preflight allowlist-before-safety bypass (Gate 5); unescaped untrusted
text to XSS in discourse + schema JSON-LD; arbitrary file read/write in
audio/indexing/gsc batch flows.

Correctness: validate_image_setup args reassignment crash; chart
AttributeError on malformed input; preflight accepting 999/100 scores.

Currency (verified vs live Google docs): Indexing API scoped to
JobPosting/livestream only (was told for generic blog posts in 6 files);
gemini-3.1-flash-image stable + gemini-3.1-flash-tts-preview; nanobanana
preview-shutdown warnings.

Hygiene: SKILL.md trimmed 470->330 lines (under token budget); count /
version / command-contract coherence across README/CLAUDE/docs/.github;
stale install.ps1 SHA; 10 new SSRF/injection/symlink regression tests.

252 tests pass, prose lint + plugin validate green, no secret leaks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 15:29:39 +03:00

3.8 KiB

Privacy Policy

Claude Blog is a Claude Code plugin that runs entirely on your local machine. It does not collect, store, transmit, or share any personal data or usage information.

What This Plugin Does NOT Do

  • Does not collect analytics or telemetry
  • Does not send data to any external server (except when you explicitly use web search, API calls to CMS platforms, or MCP servers you configure)
  • Does not create accounts or require authentication
  • Does not store cookies or tracking identifiers
  • Does not access any data outside of the files and URLs you provide to it

Third-Party Services

When you explicitly invoke certain commands, the plugin may interact with external services on your behalf and under your control:

Feature Service When
AI image generation Google Gemini API (via nanobanana-mcp) Only when you run /blog image and have configured your own API key
Audio narration Google Gemini TTS API Only when you run /blog audio and have configured your own API key
Web research and fetching Search engines, public web pages Used by most commands for research, SERP analysis, link verification, and source checking (/blog write, /blog rewrite, /blog analyze, /blog brief, /blog outline, /blog strategy, /blog seo-check, /blog factcheck, /blog geo, /blog calendar, /blog persona, /blog cannibalization)
SERP and keyword data DataForSEO API (~$0.01/call) Only when you run /blog cannibalization --api with your own DataForSEO credentials. Local mode (default) requires no API
CMS taxonomy sync WordPress, Shopify, Ghost, Strapi, Sanity APIs Only when you run /blog taxonomy with your own CMS credentials
NotebookLM research Google NotebookLM Only when you run /blog notebooklm with your own configuration
Google API data Google PageSpeed Insights, CrUX, Search Console, GA4, YouTube Data API, Cloud NLP, Keyword Planner, and Indexing API for JobPosting or livestream URLs only Only when you run /blog google commands and have configured your own API credentials at ~/.config/claude-seo/google-api.json

All API keys and credentials are stored locally in your environment variables or .env files. This plugin never transmits your credentials to any party other than the service you are explicitly calling.

Data Residency

All generated content (blog posts, images, audio files, analysis reports) is saved to your local filesystem only.

Project-root context files (v1.8.0)

Three optional files can be created at the root of any project that uses this plugin. They are read by the orchestrator when present and skipped silently when absent. They are NEVER transmitted off your machine:

File Created by Purpose Privacy note
BRAND.md /blog brand init Audience, positioning, editorial rules, taboo phrases, competitor differentiation May contain confidential positioning. Add to .gitignore if your repo is public and the brand context is non-public.
VOICE.md /blog brand init Tone fingerprint, lexical rules, headline patterns Generally safe to commit; mirrors the persona JSON.
DISCOURSE.md /blog discourse <topic> Cross-platform discourse research brief for a topic Topic and brief are visible only locally. The script that produces this file (scripts/discourse_research.py) reads pre-gathered SERP results from a temp file you specify and emits the brief. No network calls in the script itself.

If any of these files contain confidential information (competitor positioning, internal product strategy, customer-discourse research on private topics), add them to .gitignore before committing.

Contact

For privacy questions, open an issue at: https://github.com/AgriciDaniel/claude-blog/issues

Last Updated

2026-05-17