Media Feeds
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/media-feeds-connector
Media Feeds
Pull a structured episode list out of any YouTube channel or podcast website so downstream agents can pick what to transcribe, summarize, or analyse. Hand in a channel URL or a podcast site URL and get back a uniform list of uploads or episodes with titles, links, media URLs, and publish timestamps.
Install — add the connector from the Cinatra marketplace via your workspace Extensions page.
Configuration — YouTube requires an OAuth connection configured at /configuration/llm via Nango before calling the YouTube tool; the connector mints a short-lived bearer on each call and stores no static key. Podcast listing requires no credentials.
Usage — media_feed_youtube_list accepts { "channelUrl": "https://www.youtube.com/@handle" } and returns up to 500 uploads. Accepted: /@handle, /channel/UC…, /user/<name>, /c/<slug>. Rejected: /watch, /shorts, /playlist, youtu.be. media_feed_podcast_list accepts { "websiteUrl": "https://example.com/podcast" } and discovers the RSS/Atom feed automatically. Add "filterMode": "latest" with "latestCount": 5 for the newest five, or "filterMode": "date_range" with "dateFrom" / "dateTo" (YYYY-MM-DD) to bracket by date. Both tools return { id, title, link, mediaUrl, publishedAt?, description?, duration? } per episode.
API contract — media_feed_youtube_list returns { channelTitle, channelUrl, episodes[] }. media_feed_podcast_list accepts latestCount 1–50 (default 10) and returns { podcastTitle, websiteUrl, feedUrl, episodes[] }.
Development — run npm install then npm test (Vitest, TypeScript ESM, no build step). Entry points: ./src/index.ts (public API), ./register (host activation), ./mcp-handlers (MCP primitives).
Troubleshooting — YouTube is not connected: configure OAuth at /configuration/llm. YouTube API 401: token expired — reconnect. YouTube API 403 quota/rate: daily quota exhausted, resets midnight Pacific. Unable to discover a podcast feed: pass the direct .xml URL instead of the homepage. Hostname blocked: only public HTTP/HTTPS is accepted; private and loopback addresses are rejected.
Works with
- YouTube
- Podcast RSS and Atom feeds
Capabilities
- List uploads from a YouTube channel by URL
- List recent episodes from a podcast by its website URL
- Filter podcast episodes to the latest N or to a publish-date range
- Discover a show's feed automatically from its public website
- chore: strip private engineering-tracker refs from public source (#22)
- fix: declare cinatra.vendor identity + bump 0.1.3 for marketplace re-submit (#27)
- docs(readme): expand README to the org standard (#17) (#18)
- fix(feed): block SSRF to private/loopback targets (incl. non-canonical IPv6) and redirects (#19)
- ci: adopt source-leak-gate (#20)
- ci: adopt source-leak-gate (#21)
- release: v0.1.2 (feed.ts) (#23)
- ci: adopt source-leak-gate (#1)
- ci: adopt source-leak-gate (#2)
- chore: add .gitignore (#3)
- ci: adopt org gate suite v0.1.0 + SHA-pin all remote actions (#4)
- chore: keep internal planning notes untracked (#5)
- chore: npm files allowlist + git-archive export-ignore (packaging hygiene) (#6)
- Bind the YouTube token mint through a host deps slot (cinatra#172 Stage H4) (#7)
- chore: Configure Renovate (#8)
- ci(release): grant contents: write + pin reusable workflow to .github HEAD (#10)
- ci: repin reusable release workflow (immutable-safe decoration + corrected build-input provisioning) (#11)
- ci: add truthful-attribution-gate in WARN (advisory) mode (#12)
- ci: adopt the reusable extension->host IoC conformance gate (org-wide rollout) (#13)
- ci: tag-driven GitHub release on v* (#14)
- ci: adopt secret-scan-gate (#15)
- release: v0.1.1 (#16)
- Initial release.
- Unreleased
- chore: strip private tracker references from workflow comments (#28)
- chore: backfill cinatra.sdkAbiRange "^2" for in-instance compat badge (#29)
- ci(release): pin reusable-extension-release to gated v0.1.1 (release-approval wall) (#30)
- chore: add cinatra.displayName connector metadata (#31)
- chore(deps): declare cinatra.consumes for closure-gate enrollment (#32)
- chore(deps): align zod pin to ^4.4.3 (#33)
More from Cinatra
A generic review checkpoint for content produced by another agent. It looks at the content you generated — email drafts, follow-up sequences, a contact…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/reviewer-agent
Edit a post on a connected WordPress site from a plain-language instruction — "tighten the intro", "swap the headline for X", "add a CTA…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/wordpress-agent
Give every running dev instance a deterministic public URL through your tailnet. Once connected, Cinatra mints a tag-scoped Tailscale Funnel URL per instance so…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/tailscale-connector
Adapt a published blog post into a LinkedIn post and ship it from your member profile or company page. The agent drafts the LinkedIn…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/blog-linkedin-publish-agent
The final send step of an outreach campaign. Once recipients have been confirmed and drafts approved upstream, this agent hands the campaign to the…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/email-delivery-agent
Connect one or more WordPress sites so agents can read posts, draft new ones, edit live articles, upload media, and run an in-CMS chat…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/wordpress-mcp-connector
Reviews
There are no reviews yet.