Install
openclaw skills install @conorbronsdon/guest-circuitResearches and maps a guest’s podcast appearance history to identify their last topics, unclaimed angles, and receptiveness for targeted outreach.
openclaw skills install @conorbronsdon/guest-circuitBefore you pitch a prospective guest, answer two questions. Where have they already podcasted? And what has nobody asked them yet?
The first gates the booking decision. Someone on ten shows this quarter is podcast-receptive and easy to book. Someone on zero shows may need a warmer path than a cold email. The second shapes the pitch. Inviting a guest to retell the story they told three shows ago wastes the slot and bores their audience overlap with yours.
This skill maps the circuit and produces a report you can act on: appearance timeline, the "stump speech" they repeat everywhere, the angles no show has claimed, and a one-paragraph pitch built on the gap.
Invocation: deliberately model-invocable — "research X before outreach" is the trigger. It spends web-search calls, so invoke consciously on big sweeps.
(See "When NOT to Use" below for the cases this skill is wrong for.)
Input: $ARGUMENTS (guest name, plus an anchor fact if given).
Names collide. Before any search, confirm one anchor fact: company, role, or a known piece of work (book, project, paper).
Use the anchor to filter every result in later steps. A hit that cannot be tied to the anchor goes in "could not verify."
Three source modalities. Run them as parallel subagents in a single tool-call batch (prompt templates in patterns/subagent-prompts.md). If subagents are unavailable, run the modalities sequentially in the same order. If web access is unavailable entirely, stop and say the sweep cannot run — never populate the timeline from model memory.
Requires the podcastindex-mcp server. Tool names as exposed by that server:
search_by_person with q: "Full Name", max: 50, fulltext: true — episodes across all indexed podcasts where the person appeared.podcast_by_feed_id with id: <feedId> — show metadata for each hit worth keeping: episode count, categories, last update. This is the cheap audience signal.episodes_by_feed_id with id: <feedId> — only if you need surrounding episodes from one show (e.g. to check whether the person appeared more than once).Caveats:
search_by_person matches hosts and description mentions, not just guests. Filter with concrete markers, not vibes. Guest markers: interview framing in the title or description ("with [Name]", "featuring", "[Name] on ...", "joins us", "our guest"). Host marker: the same name across most of the feed's episodes (spot-check with episodes_by_feed_id) or in the feed's author field; exclude those. Mention-only: the name appears but the episode's guest is someone else; exclude. If the markers are ambiguous, fetch the episode page; if it still cannot be settled, it is a lead for the "could not verify" list, not an appearance.datePublished fields are Unix timestamps. Convert before reporting.WebSearch queries, run all of them:
"[name]" podcast interview"[name]" "[company]" podcast episode"[name]" podcast guestsite:youtube.com "[name]" podcast OR interview — many appearances are YouTube-only and never reach podcast indexes.YouTube caveat: a youtu.be/... short link redirects to youtube.com/watch?v=..., and the watch page often returns only the site nav/footer when fetched as plain HTML — no description, no transcript. Do not let that silently drop a real hit. When a YouTube URL is the only evidence, confirm the appearance from the show's own site or show-notes page instead; if no other page exists and the video page won't yield a description, the hit goes in "could not verify," not the timeline.
Guests promote their own appearances. Check:
"[name]" podcast appearances and check their site for a /podcasts, /press, /now, or tag page. When it exists it collapses most of the sweep into one fetch: it gives you dated, linked entries straight from the source. Treat it as the timeline's source of record, then spot-check individual entries against each show's own page rather than re-deriving the whole list."[name]" site:linkedin.com podcast if no direct access).For every appearance, capture: show name, episode title, publish date, link, and an audience signal if it is cheap to get (show episode count, known network, YouTube view count on the episode). Do not deep-research show size. A rough signal is enough.
Dedupe across modalities by episode link or show + title. Keep the best-sourced entry.
Take the 3-5 most recent or most prominent appearances, preferring those from the last 18 months. Older episodes stay in the timeline but say little about the current stump speech; people retire stories. For each, fetch the episode page or show notes. Show notes suffice. Do NOT fetch or summarize full transcripts; that is slow and the notes already list topics.
Extract:
Write the report to circuit/{name-slug}-{YYYY-MM-DD}.md (or the user's stated location) and show the Appearance Timeline and Suggested Pitch Angle inline for review. Use this format:
# Circuit Report: [Name] ([role], [company]) — [date]
## Appearance Timeline
| Date | Show | Episode | Link | Audience signal |
|------|------|---------|------|-----------------|
(newest first; "could not verify" entries in a separate short list below the table)
## Stump Speech (do not re-ask)
- [topic/story they covered on N shows, with which shows]
## Unclaimed Angles
- [expertise area from their recent work/writing that NO show on the circuit
has explored, with the evidence: what they shipped/wrote vs. what the
circuit covered]
## Receptiveness Signal
[cadence: N appearances in the last 6/12 months -> receptive / selective /
no visible circuit (in indexed sources; see honesty rule 4). One sentence
on what that means for outreach.]
## Suggested Pitch Angle
[One paragraph. Specific. Names the unclaimed angle, why this guest is the
right person for it, and why your show is the right venue. Not "discuss AI."]
## Sources
- [URL] (fetched [date]) — what it verified
Derive unclaimed angles by contrast. "Recent work" means, concretely: papers (arXiv, Google Scholar), blog and newsletter posts, conference talks (event sites, YouTube), product launches and changelogs, and substantive social threads, all from roughly the last 12 months. The own-trail sweep gathers most of this. List what that work covers, then subtract what the circuit already covered. The remainder is the pitch material. Cite the specific work item behind each angle. If you cannot find their recent work, say so rather than inventing angles.
Receptiveness cadence is computed from the last 12 months. Treat appearances older than 18 months as weak signal: they prove the person has podcasted, not that they currently say yes.
These are hard requirements, not style preferences:
examples/simon-willison-circuit.md is a real
run of this skill against a fully public figure (Simon Willison — creator of
Datasette, co-creator of Django). It shows the full output shape: a 20-plus-entry
appearance timeline with verified URLs and dates, the repeated stump speech to
avoid, unclaimed angles derived from his current work, a receptiveness read, and a
specific pitch angle for a hypothetical AI-engineering podcast. It also exercises
the Step 2a degradation path — Podcast Index was not configured in that run, so the
sweep fell back to web search and the report says so.
patterns/subagent-prompts.md — paste-ready prompts for the three sweep modalities.examples/simon-willison-circuit.md — a real, fully-cited circuit report.search_by_person and the other Podcast Index tools.