semantic_search), by exact phrase (keyword_search), or both at once (hybrid ranking). This is THE way to retrieve relevant dialogue, segments, and clips: each result is one segment of one episode with bounded transcript windows pinpointing the highest-relevance lines, plus any highlight clips that overlap the segment, inline on the match.
This tool replaces the old
search_dialogue and list_clips tools. There is no separate clip-search tool — relevant clips arrive on these matches. A known episode’s full clip list is particle_podcast_get_episode with include: ["clips"].Segments vs clips
- Segments tile an episode end-to-end — every minute belongs to exactly one segment. Search ranks segments and returns the matching ones.
- Clips are sparse, engagement-ranked highlights that overlap some segments. When a clip overlaps a ranked segment, it appears under an
Overlapping clips:line on that match.
particle_podcast_find_mentions instead — person_slug and company_slug here narrow ranked results, they don’t drive the ranking.
What semantic_search is not good at:
Inputs
At least one ofsemantic_search or keyword_search is required.
Output
A markdown document with## Dialogue matches (N) and one ### Segment title section per match. Each section carries bulleted KV rows: - **Episode:**, - **Podcast:**, - **Podcast slug:**, - **Published:**, - **Episode slug:**, - **Segment type:**, - **Match:** (the source: semantic, keyword, or hybrid), then one or more bullets formatted Window @ start–end (or Preview @ … for truncated windows) followed by indented dialogue lines. Every line that matched the query is rendered with the entire Speaker: text wrapped in bold (a window can contain several matched lines); surrounding context renders as **Speaker:** text. When highlight clips overlap the segment, they appear under an Overlapping clips: line as bullets formatted Title (TYPE, score N) @ start–end — clip ID: <id>. When more pages exist, a horizontal rule and a **Cursor:** <value> line are appended.
Bolded lines mark the lines that ranked for the current query (a window can contain several). This is a different signal from the bolding in particle_podcast_find_mentions, where a bolded line means “this line names the resolved entity” — they answer different questions and can both be true within the same episode for different reasons.
Sample (semantic_search="how AI affects the labor market", limit=2):
- **Episode slug:** is what you can feed into particle_podcast_get_episode for the full transcript or clip list, or into particle_podcast_find_mentions (format=detail, episode_slug) for mention windows around a specific person.
Example
semantic_search and keyword_search:
Related
- REST equivalent:
GET /v1/podcasts/episodes/search. - For “every line naming X” use
particle_podcast_find_mentions. - For a known episode’s full clip list, use
particle_podcast_get_episodewithinclude: ["clips"]. - For metadata-only episode discovery (no dialogue), use
particle_podcast_list_episodes.