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
An Ideal Customer Profile — the audience a company sells into, captured as buyer persona, firmographics, pain points, triggering events, disqualifiers, and buying-process notes.…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/marketing-icp-artifact
A slide-format presentation exported to PDF — pitch decks, sales decks, conference talks, board decks, training presentations, and customer-facing decks. Slide Decks get a…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/slide-deck-artifact
Edit Drupal content from plain-language instructions. Tell the agent which node to change and what to change about it, and it reads the page,…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/drupal-agent
The system audio player for the Cinatra artifact library. It renders any audio file — MP3, M4A, Ogg, WAV, WebM, FLAC, or AAC —…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/audio-artifact
A finished, publish-ready blog article in Markdown. Blog Posts cover both articles generated by Cinatra's blog pipeline and posts uploaded from an existing CMS…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/blog-post-artifact
Turn a short brief into a batch of distinct blog post ideas you can pick from. Describe the topic, the audience, and the tone,…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/blog-idea-generator-agent
Reviews
There are no reviews yet.