blog-audio

blog-audio is a skill for Claude Code from AgriciDaniel/claude-blog. It costs 123 tokens per session (2,270 once invoked), scanned B, original, MIT.

A tool that turns blog posts into spoken audio using Google Gemini’s text-to-speech service. It can create a summary, read the full article, or produce a two-speaker podcast-style version.

In plain words
What is it for?
Narrating blog summaries or full posts, creating dialogue-style audio, selecting from available voices, and converting the result to MP3 when FFmpeg is available.
Why use it?
It lets readers listen to written articles and provides generated audio files with an HTML audio player snippet.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is python3 scripts/run.py generate_audio.py --text "..." --voice Charon --json.

Part of the claude-blog plugin — 32 skills shipped together

Good fit Narrating blog summaries or full posts, creating dialogue-style audio, selecting from available voices, and converting the result to MP3 when FFmpeg is available.

Compare 6 skills from other repositories ↓
About the project

claude-blog is a Claude Code skill suite for planning, writing, optimizing, auditing, localizing, and refreshing blog content. It is for content and SEO workflows that produce articles and related publishing artifacts while checking drafts against defined delivery criteria. The catalogue entries provide the skills, agents, plugins, and instruction used by this workflow.

AgriciDaniel/claude-blog · 2,116 stars · on GitHub · claude-blog.md

Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/AgriciDaniel/claude-blog
agentmods
npx agentmods add skills/agricidaniel/claude-blog/blog-audio

Made for: Claude Code.

Or install claude-blog, the plugin that ships this one along with the rest of its 32 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for blog-audio

README.md
[![agentmods](https://agentmods.dev/badge/skills/agricidaniel/claude-blog/blog-audio/github.svg)](https://agentmods.dev/skills/agricidaniel/claude-blog/blog-audio)
Your own site
<a href="https://agentmods.dev/skills/agricidaniel/claude-blog/blog-audio"><img src="https://agentmods.dev/badge/skills/agricidaniel/claude-blog/blog-audio/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for blog-audio

Your own site · 80×15
<a href="https://agentmods.dev/skills/agricidaniel/claude-blog/blog-audio"><img src="https://agentmods.dev/badge/skills/agricidaniel/claude-blog/blog-audio.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 123 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,270 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • Socket pass 21 May 2026
  • Snyk pass 21 May 2026
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to medium

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • medium Privilege Escalation · line 241
    Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
    Fix: Avoid sudo/root unless strictly required. Prefer least-privilege patterns. If elevation is needed, document the justification and scope.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00123 $0.02270
Opus 5 $0.00062 $0.01135
Sonnet 5 $0.00025 $0.00454
Haiku 4.5 $0.00012 $0.00227

Measured 11d ago against content hash 482ed5b7367c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade B, and why

blog-audio scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

| FFmpeg not found | Install: `sudo apt install ffmpeg`. Falls back to WAV output. |
Origin

Copies of this mod

1 near-identical copy found in the catalogue:

brain/.raw/sources/claude-blog-skill/skills/blog-audio/SKILL.md · 252 lines

How it starts

The opening of the file, as written. The whole thing — 252 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Blog Audio: Gemini TTS Narration for Blog Posts

Generate professional audio narration of blog content using Google's Gemini TTS. Three modes: summary (200-300 word spoken overview), full article read-aloud, or two-speaker podcast dialogue. 30 voices, 80+ languages, HTML5 embed output.

Quick Reference

Command What it does
/blog audio generate <file> Generate audio narration of a blog post
/blog audio voices Show available voices with characteristics
/blog audio setup Check/configure API key for Gemini TTS

Prerequisites

  • Python 3.11+ (venv managed automatically by run.py)
  • GOOGLE_AI_API_KEY environment variable (same key used by blog-image)
  • FFmpeg (for WAV-to-MP3 conversion; falls back to WAV if missing)

Always Use run.py Wrapper

# CORRECT:
python3 scripts/run.py generate_audio.py --text "..." --voice Charon --json

# WRONG:
python3 scripts/generate_audio.py --text "..."  # Fails without venv

API Key Check (Gate Pattern)

Before generating audio, check for the API key:

test -n "${GOOGLE_AI_API_KEY:-}" && echo "GOOGLE_AI_API_KEY is set" || echo "GOOGLE_AI_API_KEY is not set"
  • If set: proceed with generation
  • If not set: guide the user: "Audio generation requires a Google AI API key. Get one free at https://aistudio.google.com/apikey Then set it: export GOOGLE_AI_API_KEY=your-key This can be the same key used by /blog image, but it must be exported in the shell."
  • When called internally (from blog-write): return silently if key is missing. Never block the writing workflow.

Setup

For /blog audio setup:

  1. Check if GOOGLE_AI_API_KEY is set in environment
  2. If blog-image uses project .mcp.json, confirm the referenced env var is exported
  3. If not, guide user to https://aistudio.google.com/apikey
  4. Verify with a dry run: python3 scripts/run.py generate_audio.py --text "Test" --dry-run --json

Voice Selection

For /blog audio voices:

Read the full file on GitHub · 252 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 252 lines · 123 tokens per session scan B 482ed5b7367c

Subscribe to this mod's changes

blog-audio is a skill published in the GitHub repository AgriciDaniel/claude-blog (2,116 stars, last pushed 7d ago), licensed MIT. It adds 123 tokens to every session and 2,270 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

banana

Direct, generate, edit, compare, and review visual assets with current Google Gemini image models. Use for image creation, image editing, reference-based consistency, product and character visuals, text-bearing graphics, grounded diagrams, video-derived images, and multi-model image portfolios.

AgriciDaniel/banana-claude · 55 tokens

shorts

Interactive longform-to-shortform video creator. Extracts viral-ready short clips from long videos using Claude as the orchestrator. Transcribes with faster-whisper (GPU), Claude scores and presents candidate segments interactively, user picks and adjusts, Remotion renders premium animated captions (Bold/Bounce/Clean…

AgriciDaniel/claude-shorts · 125 tokens

repurpose-discord

Generates Discord community content from content atoms: announcement posts for channels, discussion thread prompts designed for reply-generation, and rich embed messages with structured fields. Enforces casual peer tone, reaction prompts, and conversation-first design. Sub-skill of the Content Repurposing Engine. Use…

AgriciDaniel/claude-repurpose · 86 tokens

repurpose-pinterest

Generates Pinterest content from content atoms: standard pin concepts (3-5 pins) with keyword-rich descriptions, idea pin scripts (5-10 slides), and board suggestions. Optimizes for saves, clicks, and SEO — Pinterest is a visual search engine, not social media. Sub-skill of the Content Repurposing Engine. Use when…

AgriciDaniel/claude-repurpose · 101 tokens

repurpose-quotes

Extracts the 5 most quotable moments from content atoms and generates /banana image prompts for each using the 6-Component Brief. Produces quote cards ready for social sharing with platform-specific aspect ratios, color palettes, and text overlays. Sub-skill of the Content Repurposing Engine. Use when user says "quote…

AgriciDaniel/claude-repurpose · 92 tokens

repurpose-snapchat

Generates Snapchat content from content atoms: story scripts (3-5 frames at 10s each), Spotlight scripts (up to 60s vertical video), and AR lens concepts. Optimizes for completion rate, shares, and screenshot saves. Sub-skill of the Content Repurposing Engine. Use when user says "snapchat", "snap story", "snapchat…

AgriciDaniel/claude-repurpose · 93 tokens