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
Connect Google's Gemini API so Cinatra can use Gemini models for transcription, image generation, and general-purpose generation. Once connected, agents and workflows pinned to…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/gemini-connector
Send a test preview of an outreach campaign to a single address before the real launch. Pick which drafts to include — one initial,…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/email-test-delivery-agent
A catalogue of a company's commercial offerings — product lines, SKUs, pricing tiers, feature inventory per tier, and the use cases each offering serves.…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/product-portfolio-artifact
Turn a published blog post into a short, native-feeling LinkedIn promotional post. Give the agent the blog title, excerpt, body, and the company behind…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/blog-linkedin-writer-agent
Set up Google sign-in for your workspace and connect every Google-backed service through a single shared OAuth client. One Google Cloud project, configured once,…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/google-oauth-connector
Let Cinatra agents read, draft, and publish content on your Drupal sites. Connect one or more Drupal instances and your agents can browse recent…
Enter a valid instance URL (https:// is required unless it is localhost).
cinatra install cinatra-ai/drupal-mcp-connector
Reviews
There are no reviews yet.