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,528 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 15 Sept 2026
  • Snyk pass 15 Sept 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.5 $0.00049 $0.00908
Sonnet 5.5 $0.00025 $0.00454
Haiku 4.5 $0.00012 $0.00227

Measured 1mo ago against content hash 482ed5b7367c, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, 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 1mo 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. 1mo 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,528 stars, last pushed 12d ago), licensed MIT. It adds 123 tokens to every session and 2,270 once invoked, about $0.0005 per session on Opus 5.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

Plan, generate, edit, compare, and review images with Google Gemini (Nano Banana) image models, with an exact plan and explicit approval before every paid call. Use when the user asks to create or edit an image, picture, photo, illustration, logo, thumbnail, poster, banner, product shot, mockup, character sheet…

AgriciDaniel/banana-claude · 96 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

Content Repurposing Engine. Transforms any content (YouTube videos, blog posts, podcasts, local files, pasted text) into platform-optimized outputs for Twitter/X, Threads, LinkedIn, Instagram, TikTok, Pinterest, Snapchat, Facebook, YouTube Community, Skool, Discord, Reddit, Quora, Medium, WhatsApp Channels, Telegram…

AgriciDaniel/claude-repurpose · 179 tokens

repurpose-medium

Generates Medium publication content from content atoms: long-form articles (1500-3000 words) with narrative arc, SEO-optimized titles and subtitles, tag and publication targeting, and canonical crosspost handling. Optimizes for Google indexing, read time, and publication submission. Sub-skill of the Content…

AgriciDaniel/claude-repurpose · 96 tokens

repurpose-calendar

Generates a 7-day publishing calendar with staggered posts, optimal timing per platform, file references, engagement reminders, and theme-day grouping. Prevents audience fatigue by limiting to 2-3 posts per day. Sub-skill of the Content Repurposing Engine. Use when user says "publishing calendar", "content calendar"…

AgriciDaniel/claude-repurpose · 87 tokens

repurpose-quora

Generates Quora content from content atoms: a detailed answer to a relevant question, a Quora Space post for thought leadership, and question suggestions for authority building. Optimizes for expertise signals, SEO value, and upvote-worthy depth. Sub-skill of the Content Repurposing Engine. Use when user says "quora"…

AgriciDaniel/claude-repurpose · 95 tokens