AGENT SKILL

SAI-podcast-rag-index

Atomic SAI skill. Index a directory of transcript .md files (YAML frontmatter, one per episode) into an existing ChromaDB RAG store by delegating to a rag-index-updater-style index.py. Pure mechanism — no operator paths or collection baked in; the caller supplies indexer_scripts / manifest_path directly or via a private config_path. Hash-skips unchanged files. Use whenever you need to index transcripts, add transcripts to a RAG, or embed episodes for semantic lookup.

License 许可
Apache-2.0
最近更新
2026-07-17
Stars
★ 30
Forks
14

01 前言 Front Matter

name
SAI-podcast-rag-index
description
Atomic SAI skill. Index a directory of transcript .md files (YAML frontmatter, one per episode) into an existing ChromaDB RAG store by delegating to a rag-index-updater-style index.py. Pure mechanism — no operator paths or collection baked in; the caller supplies indexer_scripts / manifest_path directly or via a private config_path. Hash-skips unchanged files. Use whenever you need to index transcripts, add transcripts to a RAG, or embed episodes for semantic lookup.

02 资源文件 7

03 SKILL.md 正文

Trigger manifest — podcast-rag-index (atomic, autonomous)

Code: skills/podcast-rag-index/ Manifest: skill.yaml (3-tier cascade) Entry point: runner.py → run(inputs)

Cascade plan

1. locate_indexer   (rules) → resolve indexer_scripts (input or config_path); fail-closed if unset
2. scan_inputs      (rules) → diff input_dir vs manifest (new+changed only)
3. run_indexer      (rules) → shell to index.py → ChromaDB upsert

Invocation

.venv/bin/python3.12 \
  skills/podcast-rag-index/runner.py run \
  --inputs-json '{
    "input_dir":   "~/Media/transcripts/<show-slug>",
    "config_path": "<your-private-overlay>/config/podcast_ingest.yaml"
  }'

config_path supplies operator values (indexer_scripts, manifest_path) from the private side. Or pass indexer_scripts directly. "force": true re-indexes even if hash unchanged. Invoke by absolute path (hyphenated folder name).

Why a thin wrapper

The operator's index.py owns embed + chunk + upsert + the ChromaDB collection. This skill only scopes the scan to one directory and reuses that indexer — one source of truth, no second codepath to drift.

Composes with

  • Upstream: SAI-local-transcribe
  • Companion: a general-purpose rag-index-updater (full-tree variant)
  • Downstream consumer: a rag-content-lookup (semantic search over results)

04 同仓库更多 Skills

lutzfinger
lutzfinger/SAI-baseversion

sample-glob

暂无简介

★ 30
lutzfinger
lutzfinger/SAI-baseversion

sample-alpha

Synthetic skill for sai-overlay deploy tests. Not a real skill.

★ 30
lutzfinger
lutzfinger/SAI-baseversion

sample-incoming

Fixture for PR 7 (scaffold-claude-code-skill). Simulates a Claude-Code skill discovered in the plugin-install path with no skill.yaml manifest. The scaffold subcommand reads this dir and emits a starter skill.yaml v2 with a single claude_code profile.

★ 30
lutzfinger
lutzfinger/SAI-baseversion

SAI-podcast-download

Atomic SAI skill. Download podcast episode audio from an RSS feed or a Spotify show URL (resolved to RSS via the iTunes Search API — Spotify itself blocks audio downloads). Resume-safe, retry-aware. Emits a manifest.json that downstream skills (local-transcribe, podcast-rag-index) consume. Use whenever you need to download a podcast, grab episodes of a show, pull audio for a Spotify show URL, or any workflow needs raw podcast MP3s as input.

Skill与智能体开发
★ 30
lutzfinger
lutzfinger/SAI-baseversion

SAI-local-transcribe

Atomic SAI skill. Fully-local audio transcription via Whisper (mlx-whisper on Apple Silicon, faster-whisper fallback elsewhere). No audio leaves the machine; no API keys. Accepts a single audio file, a directory, or a podcast-download manifest.json. Writes one .md per input with YAML frontmatter compatible with a rag-index-updater pipeline. Use whenever you need to transcribe audio, run whisper on a file, transcribe all episodes in a folder, or any workflow needs text from audio.

Skill与智能体开发
★ 30