---
title: Taskuhäälingu sisuvoog
description: Teeb taskuhäälingu RSS-voost või transkriptist sisu kõigisse kanalitesse.
category: Marketing
sublabel: Strateegia
author: Eric Siu
tags: 
license: MIT
source: https://github.com/ericosiu/ai-marketing-skills
---

## Sissejuhatus (käivitub oskuse alustamisel)

```bash
# Version check (silent if up to date)
python3 telemetry/version_check.py 2>/dev/null || true

# Telemetry opt-in (first run only, then remembers your choice)
python3 telemetry/telemetry_init.py 2>/dev/null || true
```

> **Privaatsus:** see oskus logib kasutust lokaalselt kausta `~/.ai-marketing-skills/analytics/`. Kaugtelemeetria on ainult vabatahtlik (opt-in). Koodi, failiteid ega repo sisu ei koguta kunagi. Vaata `telemetry/README.md`.

---

# Podcastist-kõigeks konveier

Muudab podcasti episoodid täielikuks sisukalendriks üle kõigi platvormide.
Üks episood sisse, 15–20 sisutükki välja — hinnatud, dubleeringutest puhastatud ja ajastatud.

---

## 1. samm: sissevool — hangi transkript

Määra sisendallikas ja hangi puhas transkript.

### Variant A: RSS-voog (`--rss <url>`)
1. Tõmba RSS-voo XML
2. Võta välja uusima episoodi heli-URL (või kasuta partii jaoks `--episodes N`)
3. Laadi helifail alla
4. Transkribeeri OpenAI Whisper API kaudu (koos ajatemplitega)
5. Salvesta transkript koos episoodi metaandmetega (pealkiri, kuupäev, kirjeldus, kestus)

### Variant B: tooranskript (`--transcript <file>`)
1. Loe transkriptifail (lihttekst, SRT või VTT)
2. Parsi ajatemplid, kui olemas
3. Võta episoodi metaandmed failinimest või küsi kasutajalt

### Variant C: partiirežiim (`--batch <rss_url> --episodes N`)
1. Tõmba RSS-voog
2. Võta välja viimased N episoodi
3. Töötle igaüks kogu konveieri läbi
4. Eemalda dubleeringud kõigi partii episoodide vahel

### Transkripti puhastamine
- Eemalda täitesõnad (um, uh, like, you know) kirjaliku sisu jaoks
- Säilita originaal ajatemplitega videoklipi soovituste jaoks
- Jaga loogilisteks segmentideks teemavahetuse järgi

---

## 2. samm: toimetuslik aju — süvaanalüüs

Söötke kogu transkript LLM-ile selle väljavõtmise raamistikuga:

### Võta välja need sisuaatomid:

1. **Narratiivikaared** — terviklikud looliigud ülesehitusega seadistus → pinge → lahendus.
   Märgi algus-/lõppajatemplitega.

2. **Tsiteeritavad hetked** — löövad, jagatavad väited. Üherealised, mis seisavad omaette.
   Peavad läbima testi „kas keegi teeks sellest ekraanipildi?“.

3. **Vastuolulised seisukohad** — arvamused, mis lähevad vastuollu tavapärase tarkusega.
   Need, mis panevad inimesed vastama „täiesti nõus ei ole“ või „lõpuks keegi ütles välja“.

4. **Andmepunktid** — konkreetsed numbrid, protsendid, dollarisummad, ajavahemikud.
   Konkreetsed tõenduspunktid, mis lisavad usaldusväärsust.

5. **Lood** — isiklikud anekdoodid, juhtumiuuringud, kliendinäited.
   Peavad sisaldama tegelast, probleemi ja tulemust.

6. **Raamistikud** — sammhaaval protsessid, mõttemudelid, otsustusmaatriksid.
   Kõik struktureeritu, mida inimesed salvestaksid või järjehoidjasse paneksid.

7. **Ennustused** — tulevikku suunatud väited trendide, turgude, tehnoloogia kohta.
   Terasvad seisukohad selle kohta, kuhu asjad liiguvad.

### Väljundvorming aatomi kohta:
```
- Type: [narrative_arc | quote | controversial_take | data_point | story | framework | prediction]
- Content: [extracted text]
- Timestamp: [start - end, if available]
- Context: [what was being discussed]
- Viral Score: [0-100, see Step 4]
- Suggested platforms: [where this atom works best]
```

---

## 3. samm: sisu loomine — üks episood, palju tükke

Iga episoodi puhul loo kõik järgnevad väljavõetud aatomitest:

### 3a. Lühivideoklipid (3–5 episoodi kohta)
```
- Hook: [First 3 seconds — pattern interrupt or bold claim]
- Clip segment: [Timestamp range from transcript]
- Caption overlay: [Text for the screen]
- Platform: [YouTube Shorts / TikTok / Instagram Reels]
- Why it works: [What makes this clippable]
```

Prioriteedi järjekord: vastuolulised seisukohad > lood puändiga > üllatavad andmepunktid

### 3b. Twitteri/X-i lõimed (2–3 episoodi kohta)
```
- Thread hook (tweet 1): [Curiosity gap or bold opener]
- Thread body (5-10 tweets): [Each tweet is one complete thought]
- Thread closer: [CTA — follow, reply, retweet trigger]
- Source atoms: [Which content atoms feed this thread]
```

Reeglid: ükski säuts ei ületa 280 tähemärki. Iga säuts peab seisma omaette. Kasuta andmepunkte tõestusena.

### 3c. LinkedIni artikli mustand (1 episoodi kohta)
```
- Headline: [Specific, benefit-driven]
- Hook paragraph: [Before the "see more" fold — must earn the click]
- Body: [3-5 sections with headers, 800-1200 words]
- CTA: [Engagement driver — question, not link]
- Hashtags: [3-5 relevant, not spammy]
```

Hääl: professionaalne, kuid mitte korporatiivne. Esimeses isikus. Loopõhine.

### 3d. Uudiskirja sektsioon (1 episoodi kohta)
```
- Section headline: [Scannable, specific]
- TL;DR: [One sentence, the core insight]
- Body: [3-5 bullet points, each with a takeaway]
- Pull quote: [The most shareable line from the episode]
- Link: [Back to full episode]
```

### 3e. Tsitaadikaardid (3–5 episoodi kohta)
```
- Quote text: [Max 20 words — must work as text overlay]
- Attribution: [Speaker name]
- Background suggestion: [Color/mood that matches the tone]
- Platform sizing: [1080x1080 for IG, 1200x675 for Twitter, 1080x1920 for Stories]
```

### 3f. Blogipostituse ülevaade (1 episoodi kohta)
```
- Title: [SEO-optimized, includes primary keyword]
- Primary keyword: [Search volume + difficulty estimate]
- Secondary keywords: [3-5 related terms]
- Meta description: [155 chars max]
- H2 sections: [5-7, each maps to a content atom]
- Internal linking opportunities: [Topics that connect to existing content]
- Estimated word count: [1500-2500]
```

### 3g. YouTube Shortsi / TikToki stsenaarium (1 episoodi kohta)
```
- HOOK (0-3s): [Pattern interrupt — question, bold claim, or visual]
- SETUP (3-15s): [Context — why should they care]
- PAYOFF (15-45s): [The insight, data, or story resolution]
- CTA (45-60s): [Follow, comment prompt, or part 2 tease]
- On-screen text: [Key phrases to overlay]
- B-roll suggestions: [Visual ideas if not talking-head]
```

---

## 4. samm: sisu hindamine — viiruslik potentsiaal

Hinda iga loodud tükki kolmel mõõtmel (igaüks 0–100):

| Mõõde | Mida see mõõdab | Signaalid |
|-----------|-----------------|---------|
| **Uudsus** | Kas see on uus või üllatav? | Vastuvoolu seisukohad, ootamatud andmed, esimene, kes ütleb |
| **Vastuolulisus** | Kas inimesed vaidlevad selle üle? | Tugevad arvamused, normide väljakutsumine, poole valimine |
| **Kasulikkus** | Kas keegi saab seda kohe kasutada? | Raamistikud, õpetused, mallid, konkreetsed numbrid |

**Viiruslikkuse skoor = (Uudsus × 0,4) + (Vastuolulisus × 0,3) + (Kasulikkus × 0,3)**

### Skoori künnised:
- **80+** → prioriteetne avaldamine. Ajasta tippaktiivsuse akendesse.
- **60–79** → kindel sisu. Täida kalender.
- **40–59** → täitematerjal. Kasuta ainult siis, kui kalendris on lünki.
- **Alla 40** → viska välja. Avaldamispilu ei vääri.

---

## 5. samm: dubleeringute mootor

Enne lõpetamist kontrolli kogu loodud sisu järgneva vastu:
1. **See partii** — kaks tükki ei tohiks katta sama nurka
2. **Hiljutine ajalugu** — võrdle viimase N päeva väljundiga (vaikimisi: 30)
3. **Sarnasuse künnis** — märgi iga paar, millel on >70% semantilist kattuvust

### Dubleeringute reeglid:
- Kui kaks tükki kattuvad >70%: säilita kõrgema skooriga, viska teine välja
- Kui tükk kattub hiljuti avaldatud sisuga: märgi ⚠️-ga ja soovita eristamise nurka
- Jälgi kõiki avaldatud sisu räsisid failis `output/content_history.json`

---

## 6. samm: kalendri loomine (`--calendar`)

Koonda hinnatud, dubleeringutest puhastatud sisu iganädalasse avaldamiskalendrisse.

### Ajastamise reeglid:
- **Twitter/X:** 1–2 päevas, tipptunnid (8–10, 12–13, 17–19 ET)
- **LinkedIn:** max 1 päevas, teisipäevast neljapäevani hommikuti
- **YouTube Shorts/TikTok:** 1 päevas, õhtuti
- **Uudiskiri:** iganädalaselt, sama päev igal nädalal
- **Blogi:** 1–2 nädalas
- **Tsitaadikaardid:** paiguta vähese sisuga päevadele

### Kalendri väljundvorming:
```json
{
  "week_of": "2024-01-15",
  "episode_source": "Episode Title - Guest Name",
  "content_pieces": [
    {
      "date": "2024-01-15",
      "time": "09:00 ET",
      "platform": "twitter",
      "type": "thread",
      "content": "...",
      "viral_score": 85,
      "status": "draft"
    }
  ],
  "total_pieces": 18,
  "avg_viral_score": 72,
  "coverage": {
    "twitter": 6,
    "linkedin": 3,
    "youtube_shorts": 3,
    "newsletter": 1,
    "blog": 1,
    "quote_cards": 4
  }
}
```

---

## 7. samm: väljund

Kogu väljund läheb kausta `output/`:

```
output/
├── episodes/
│   ├── YYYY-MM-DD-episode-slug/
│   │   ├── transcript.txt
│   │   ├── atoms.json          # Extracted content atoms
│   │   ├── content_pieces.json # All generated content
│   │   └── calendar.json       # Scheduled calendar
│   └── ...
├── calendar/
│   └── week-YYYY-WNN.json     # Aggregated weekly calendar
├── content_history.json        # Dedup tracking
└── pipeline_log.json           # Run history and stats
```

---

## CLI viide

```bash
# Process latest episode from RSS feed
python podcast_pipeline.py --rss "https://feeds.example.com/podcast.xml"

# Process a local transcript
python podcast_pipeline.py --transcript episode-42.txt

# Batch process last 5 episodes
python podcast_pipeline.py --batch "https://feeds.example.com/podcast.xml" --episodes 5

# Generate weekly calendar from existing outputs
python podcast_pipeline.py --calendar

# Process with custom dedup window
python podcast_pipeline.py --rss "https://feeds.example.com/podcast.xml" --dedup-days 60

# Process and only keep 80+ viral score content
python podcast_pipeline.py --rss "https://feeds.example.com/podcast.xml" --min-score 80
```

---

## Keskkonnamuutujad

| Muutuja | Nõutav | Kirjeldus |
|----------|----------|-------------|
| `OPENAI_API_KEY` | Jah (Whisperi jaoks) | OpenAI API-võti heli transkribeerimiseks |
| `ANTHROPIC_API_KEY` | Jah (loomise jaoks) | Anthropicu API-võti sisu loomiseks |
| `OPENAI_LLM_KEY` | Valikuline | Eraldi OpenAI võti, kui kasutad loomiseks hoopis GPT-d |

---

## Viitefailid

| Fail | Otstarve |
|------|---------|
| `podcast_pipeline.py` | Peamine konveieri skript |
| `requirements.txt` | Pythoni sõltuvused |
| `README.md` | Seadistus- ja kasutusjuhend |