# Podcast & Media Intelligence (`kondasviktor/podcast-media-intelligence`) Actor

Turn podcasts and recordings into speaker-separated transcripts, subtitles, summaries, chapters, and show notes. Gemini 3.5 Transcribe, 85+ languages, RSS schedules with dedup. Up to 30 min/source. PPE from $0.025/min + usage.

- **URL**: https://apify.com/kondasviktor/podcast-media-intelligence.md
- **Developed by:** [Viktor Kondas](https://apify.com/kondasviktor) (community)
- **Categories:** AI, Automation, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.00 / 1,000 audio minute transcribeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Podcast & Media Intelligence

Turn podcasts, interviews, and recordings into **speaker-separated transcripts, subtitles, summaries, chapters, and show notes** — powered by **Gemini 3.5 Transcribe** (85+ languages). Automation-ready JSON for n8n, Make, webhooks, and AI agents.

**Store:** [apify.com/kondasviktor/podcast-media-intelligence](https://apify.com/kondasviktor/podcast-media-intelligence)

**PPE:** $0.025 / audio minute + $0.99 content package · min $0.10 · **+ Apify usage**

### What it does

- Direct **media URL** or **podcast RSS** (latest / latest N / filter)
- Smart or verbatim transcription, **speaker diarization**, segment timestamps
- **SRT / WebVTT** in key-value store; structured **dataset JSON**
- **Content package:** summary, chapters, topics, entities, quotes, show notes
- **RSS dedup** (`skipPreviouslyProcessed` + `stateKey`) for scheduled weekly runs
- **Preview mode** (`previewMinutes: 3`) for low-cost trials
- Up to **30 minutes per source** in v1

### Who it's for

- Podcasters and media teams
- Agencies repurposing long-form audio
- Automation builders (Apify schedules → CMS / newsletter)
- Multilingual workflows (e.g. Hungarian audio → English show notes via `targetLanguage: en`)

### What this Actor is — and is not

- **Is:** audio intelligence pipeline with platform-managed Gemini (no API key required from users).
- **Is not:** a YouTube downloader, video clip renderer, or legal/certified court transcription service.
- You must have rights to process the audio you submit.

### Pricing

| Event | Price |
|-------|------:|
| Audio minute | $0.025 |
| Content package (per episode) | $0.99 |
| Minimum | $0.10 |

**28-minute episode with package ≈ $1.69** (+ usage).

**Failed runs are not charged.**

### Limitations (v1)

- **Direct media URLs only** — YouTube / podcast *page* URLs are not supported. Pass a direct `https://…mp3|m4a|wav|mp4|webm|ogg` link (or RSS enclosure).
- **`previewMinutes`** — used for **billing estimate** and to skip the content-package charge. It does **not** yet trim the audio sent to Gemini.
- **Long files (~20+ min)** — full transcript is usually accurate; segment timestamps / SRT can be coarse (often one large segment). Finer segmentation is planned.
- **Max 30 minutes** per source in v1.
- Process only audio you have rights to use.

### Quick start — preview (public-domain sample)

Public-domain FDR “Day of Infamy” speech (Internet Archive). Use `previewMinutes` to keep trial cost low:

```json
{
  "mediaUrl": "https://archive.org/download/FDRDayOfInfamySpeech/President%20Franklin%20Roosevelt%2527s%20%22Day%20of%20Infamy%22%20Speech%2C%2012%3A08%3A1941.mp3",
  "previewMinutes": 3,
  "contentPackage": false,
  "outputs": ["srt", "vtt"]
}
```

### Full episode with intelligence

```json
{
  "mediaUrl": "https://example.com/episode.mp3",
  "language": "auto",
  "targetLanguage": "en",
  "contentPackage": true,
  "customVocabulary": ["Apify", "Számlázz.hu", "Neon"]
}
```

### Put it on a schedule (recurring revenue)

```json
{
  "rssUrl": "https://example.com/feed.xml",
  "episodeMode": "latest_n",
  "episodeLimit": 3,
  "skipPreviouslyProcessed": true,
  "stateKey": "MY_PODCAST_STATE",
  "contentPackage": true
}
```

Create an Apify **schedule** (e.g. weekly). Already-processed episodes are skipped with **0 Gemini cost**.

### Hungarian → English show notes

```json
{
  "mediaUrl": "https://example.com/hu-episode.mp3",
  "language": "hu-HU",
  "targetLanguage": "en",
  "contentPackage": true
}
```

### Local development

```bash
cd apify/gemini-audio-engine && npm install && npm test
cd ../podcast-media-intelligence
cp .env.example .env   # add GEMINI_API_KEY (paid tier)
npm install
npm run dry-run
```

### MCP / automation

Dataset fields are stable: `transcription`, `intelligence`, `files.markdownKey`, `usage.eventsCharged`. Use Apify MCP or dataset webhooks to feed n8n/Make.

### Related actors (suite)

All Actors: [apify.com/kondasviktor](https://apify.com/kondasviktor)

| Actor | Role |
|-------|------|
| **Podcast & Media Intelligence** (this Actor) | Transcripts, show notes, SRT/VTT |
| [Meeting Intelligence](https://apify.com/kondasviktor/meeting-intelligence) | Decisions, tasks, owners |
| [Google Maps CEE Scraper — Supplier Shortlist](https://apify.com/kondasviktor/google-maps-cee-scraper) | CEE supplier shortlists |
| [Website Intelligence + Contact Extractor](https://apify.com/kondasviktor/website-intelligence-contact-extractor) | Contacts, tech stack |
| [Dealer / Distributor Locator Extractor](https://apify.com/kondasviktor/dealer-distributor-locator) | Brand locator pages |
| [PDF Procurement Document Extractor](https://apify.com/kondasviktor/pdf-procurement-document-extractor) | Certs, reports, datasheets |
| [Website Change Monitor — Diff Tracker](https://apify.com/kondasviktor/website-change-monitor) | Hash + diff watch |
| [European Fuel Station Prices API (CEE + DACH)](https://apify.com/kondasviktor/cee-dach-fuel-intelligence) | Fuel by country/point/route |
| [Product Catalog Scraper](https://apify.com/kondasviktor/product-catalog-scraper) | Catalogs → Shopify / Woo CSV |
| [Wildfire Intelligence API](https://apify.com/kondasviktor/wildfire-intelligence) | US + EU wildfire data |

### Feedback

[Contact](https://vibecoderslife.com/contact) · Built by [Vibe Coder's Life](https://vibecoderslife.com)

# Actor input Schema

## `mediaUrl` (type: `string`):

Direct URL to MP3, M4A, WAV, MP4, WebM, or OGG. Provide mediaUrl OR rssUrl, not both.

## `rssUrl` (type: `string`):

Podcast feed URL. Use with episodeMode and skipPreviouslyProcessed for scheduled workflows.

## `episodeMode` (type: `string`):

Which episodes to process from the RSS feed: latest one, latest N, all after a date, or title match.

## `episodeLimit` (type: `integer`):

How many episodes to process when episodeMode is latest\_n (max 25).

## `skipPreviouslyProcessed` (type: `boolean`):

Requires stateKey. Use with Apify schedules for recurring podcast automation.

## `stateKey` (type: `string`):

Named key-value store for processed episode GUIDs.

## `previewMinutes` (type: `integer`):

Transcribe only the first N minutes. Skips content-package charge. Good for trials.

## `language` (type: `string`):

Use Auto-detect when unsure. Select a specific language (e.g. German) when you know the audio language — this improves accuracy vs mis-detection at the start. Gemini supports 85+ languages; any BCP-47 code works via API.

## `targetLanguage` (type: `string`):

Use 'same' to match transcript language, or ISO code e.g. en for English show notes from Hungarian audio.

## `transcriptionMode` (type: `string`):

smart removes fillers; verbatim keeps spoken wording including disfluencies.

## `diarization` (type: `boolean`):

Label speakers as speaker\_1, speaker\_2, etc.

## `timestamps` (type: `string`):

none, segment-level, or word-level timestamps in the transcript JSON.

## `customVocabulary` (type: `array`):

Product names, people, acronyms (max 1000).

## `contentPackage` (type: `boolean`):

Summary, chapters, topics, entities, quotes, show notes ($0.99/episode).

## `outputs` (type: `array`):

SRT/VTT saved to key-value store.

## `maxDurationMinutes` (type: `integer`):

Hard cap per source in v1 (max 30 minutes).

## `maxCostUsd` (type: `number`):

Abort before transcribing if estimate exceeds this cap.

## `concurrency` (type: `integer`):

How many RSS episodes to process in parallel (1–5).

## Actor input object example

```json
{
  "mediaUrl": "https://archive.org/download/FDRDayOfInfamySpeech/President%20Franklin%20Roosevelt%2527s%20%22Day%20of%20Infamy%22%20Speech%2C%2012%3A08%3A1941.mp3",
  "episodeMode": "latest",
  "episodeLimit": 1,
  "skipPreviouslyProcessed": false,
  "language": "auto",
  "targetLanguage": "same",
  "transcriptionMode": "smart",
  "diarization": true,
  "timestamps": "segment",
  "customVocabulary": [
    "Apify",
    "Gemini",
    "Cursor"
  ],
  "contentPackage": true,
  "outputs": [
    "srt",
    "vtt"
  ],
  "maxDurationMinutes": 30,
  "concurrency": 2
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mediaUrl": "https://archive.org/download/FDRDayOfInfamySpeech/President%20Franklin%20Roosevelt%2527s%20%22Day%20of%20Infamy%22%20Speech%2C%2012%3A08%3A1941.mp3",
    "episodeMode": "latest",
    "episodeLimit": 1,
    "language": "auto",
    "targetLanguage": "same",
    "transcriptionMode": "smart",
    "diarization": true,
    "timestamps": "segment",
    "customVocabulary": [
        "Apify",
        "Gemini",
        "Cursor"
    ],
    "contentPackage": true,
    "outputs": [
        "srt",
        "vtt"
    ],
    "maxDurationMinutes": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("kondasviktor/podcast-media-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mediaUrl": "https://archive.org/download/FDRDayOfInfamySpeech/President%20Franklin%20Roosevelt%2527s%20%22Day%20of%20Infamy%22%20Speech%2C%2012%3A08%3A1941.mp3",
    "episodeMode": "latest",
    "episodeLimit": 1,
    "language": "auto",
    "targetLanguage": "same",
    "transcriptionMode": "smart",
    "diarization": True,
    "timestamps": "segment",
    "customVocabulary": [
        "Apify",
        "Gemini",
        "Cursor",
    ],
    "contentPackage": True,
    "outputs": [
        "srt",
        "vtt",
    ],
    "maxDurationMinutes": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("kondasviktor/podcast-media-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mediaUrl": "https://archive.org/download/FDRDayOfInfamySpeech/President%20Franklin%20Roosevelt%2527s%20%22Day%20of%20Infamy%22%20Speech%2C%2012%3A08%3A1941.mp3",
  "episodeMode": "latest",
  "episodeLimit": 1,
  "language": "auto",
  "targetLanguage": "same",
  "transcriptionMode": "smart",
  "diarization": true,
  "timestamps": "segment",
  "customVocabulary": [
    "Apify",
    "Gemini",
    "Cursor"
  ],
  "contentPackage": true,
  "outputs": [
    "srt",
    "vtt"
  ],
  "maxDurationMinutes": 30
}' |
apify call kondasviktor/podcast-media-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kondasviktor/podcast-media-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8auZh8sfgl2ZoHJaV/builds/FHaE13apxwM3WtdH5/openapi.json
