{"id":"1228d5d3-edbc-47e4-8a33-6e55ae879b9b","shortId":"SMuNr7","kind":"skill","title":"Normalize loudness across podcast, lesson, or video batches before publishing","tagline":"Uses ffmpeg-normalize to batch-normalize audio levels so an agent can hand off consistent output without opening a DAW or touching every file by hand. It fits pipelines that need EBU R128, RMS, or peak targets across mixed media before delivery.","description":"# Normalize loudness across podcast, lesson, or video batches before publishing\n\nUses ffmpeg-normalize to batch-normalize audio levels so an agent can hand off consistent output without opening a DAW or touching every file by hand. It fits pipelines that need EBU R128, RMS, or peak targets across mixed media before delivery.\n\n## Prerequisites\n\nffmpeg plus a Python or uv environment\n\n## Installation\n\nRequirements and caveats from upstream:\n- [![Docker Image Version](https://img.shields.io/docker/v/slhck/ffmpeg-normalize?sort=semver&label=Docker%20image)](https://hub.docker.com/r/slhck/ffmpeg-normalize)\n- ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/slhck/ffmpeg-normalize/python-package.yml)\n- Docker support — Run via Docker container\n\nBasic usage or getting-started notes:\n- ## 🚀 Quick Start\n- Run pip3 install ffmpeg-normalize and ffmpeg-normalize /path/to/your/file.mp4, alternatively install [uv](https://docs.astral.sh/uv/getting-started/installation/) and run uvx ffmpeg-normalize /path/to/your/file.mp4\n- Example:\n\n- Source: https://github.com/slhck/ffmpeg-normalize\n- Extracted from upstream docs: https://raw.githubusercontent.com/slhck/ffmpeg-normalize/HEAD/README.md\n\n## Documentation\n\n- https://slhck.info/ffmpeg-normalize/\n\n## Source\n\n- [Agent Skill Exchange](https://agentskillexchange.com/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing/)","tags":["normalize","loudness","across","podcast","lesson","video","batches","before","publishing","skills","agentskillexchange","agent-skills"],"capabilities":["skill","source-agentskillexchange","skill-normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-awesome-list","topic-claude-code","topic-codex","topic-cursor","topic-llm","topic-mcp","topic-npx-skills","topic-openclaw","topic-skills-catalog"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/agentskillexchange/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add agentskillexchange/skills","source_repo":"https://github.com/agentskillexchange/skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (1,440 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:11:26.689Z","embedding":null,"createdAt":"2026-05-18T13:17:56.392Z","updatedAt":"2026-05-18T19:11:26.689Z","lastSeenAt":"2026-05-18T19:11:26.689Z","tsv":"'/docker/v/slhck/ffmpeg-normalize?sort=semver&label=docker%20image)](https://hub.docker.com/r/slhck/ffmpeg-normalize)':128 '/ffmpeg-normalize/':190 '/github/actions/workflow/status/slhck/ffmpeg-normalize/python-package.yml)':135 '/path/to/your/file.mp4':161,174 '/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing/)':197 '/slhck/ffmpeg-normalize':179 '/slhck/ffmpeg-normalize/head/readme.md':186 '/uv/getting-started/installation/)':167 'across':3,50,57,104 'action':130 'agent':23,77,192 'agentskillexchange.com':196 'agentskillexchange.com/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing/)':195 'altern':162 'audio':19,73 'basic':142 'batch':8,17,62,71 'batch-norm':16,70 'caveat':120 'consist':27,81 'contain':141 'daw':32,86 'deliveri':54,108 'doc':183 'docker':123,136,140 'docs.astral.sh':166 'docs.astral.sh/uv/getting-started/installation/)':165 'document':187 'ebu':44,98 'environ':116 'everi':35,89 'exampl':175 'exchang':194 'extract':180 'ffmpeg':13,67,110,155,159,172 'ffmpeg-norm':12,66,154,158,171 'file':36,90 'fit':40,94 'get':146 'getting-start':145 'github':129 'github.com':178 'github.com/slhck/ffmpeg-normalize':177 'hand':25,38,79,92 'imag':124 'img.shields.io':127,134 'img.shields.io/docker/v/slhck/ffmpeg-normalize?sort=semver&label=docker%20image)](https://hub.docker.com/r/slhck/ffmpeg-normalize)':126 'img.shields.io/github/actions/workflow/status/slhck/ffmpeg-normalize/python-package.yml)':133 'instal':117,153,163 'lesson':5,59 'level':20,74 'loud':2,56 'media':52,106 'mix':51,105 'need':43,97 'normal':1,14,18,55,68,72,156,160,173 'note':148 'open':30,84 'output':28,82 'peak':48,102 'pip3':152 'pipelin':41,95 'plus':111 'podcast':4,58 'prerequisit':109 'publish':10,64 'python':113 'quick':149 'r128':45,99 'raw.githubusercontent.com':185 'raw.githubusercontent.com/slhck/ffmpeg-normalize/head/readme.md':184 'requir':118 'rms':46,100 'run':138,151,169 'skill':193 'skill-normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing' 'slhck.info':189 'slhck.info/ffmpeg-normalize/':188 'sourc':176,191 'source-agentskillexchange' 'start':147,150 'status':132 'support':137 'target':49,103 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-awesome-list' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-llm' 'topic-mcp' 'topic-npx-skills' 'topic-openclaw' 'topic-skills-catalog' 'touch':34,88 'upstream':122,182 'usag':143 'use':11,65 'uv':115,164 'uvx':170 'version':125 'via':139 'video':7,61 'without':29,83 'workflow':131","prices":[{"id":"0ee43fc3-ca0d-435b-b524-15f026893dfb","listingId":"1228d5d3-edbc-47e4-8a33-6e55ae879b9b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"agentskillexchange","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:17:56.392Z"}],"sources":[{"listingId":"1228d5d3-edbc-47e4-8a33-6e55ae879b9b","source":"github","sourceId":"agentskillexchange/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing","sourceUrl":"https://github.com/agentskillexchange/skills/tree/main/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing","isPrimary":false,"firstSeenAt":"2026-05-18T13:17:56.392Z","lastSeenAt":"2026-05-18T19:11:26.689Z"}],"details":{"listingId":"1228d5d3-edbc-47e4-8a33-6e55ae879b9b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"agentskillexchange","slug":"normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing","github":{"repo":"agentskillexchange/skills","stars":8,"topics":["agent-skills","ai-agents","ai-tools","awesome-list","claude-code","codex","cursor","llm","mcp","npx-skills","openclaw","skills-catalog"],"license":"mit","html_url":"https://github.com/agentskillexchange/skills","pushed_at":"2026-05-18T19:02:17Z","description":"The open catalog of AI agent skills — 2,000+ security-scanned skills for Claude Code, Cursor, Codex, and more.","skill_md_sha":"df57f39b123f797339a278e05ce03a55fb1743ff","skill_md_path":"skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/agentskillexchange/skills/tree/main/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"Normalize loudness across podcast, lesson, or video batches before publishing","description":"Uses ffmpeg-normalize to batch-normalize audio levels so an agent can hand off consistent output without opening a DAW or touching every file by hand. It fits pipelines that need EBU R128, RMS, or peak targets across mixed media before delivery."},"skills_sh_url":"https://skills.sh/agentskillexchange/skills/normalize-loudness-across-podcast-lesson-or-video-batches-before-publishing"},"updatedAt":"2026-05-18T19:11:26.689Z"}}