npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rippr-mcp

v1.2.1

Published

MCP server for ripping YouTube transcripts. Saves each transcript to disk and returns a resource link — persistent artifacts, not ephemeral context. Built for AI agents, RAG pipelines, and LLM workflows.

Downloads

700

Readme

rippr-mcp

MCP Badge rippr MCP server

YouTube transcript extraction for AI agents. MCP server for Claude, Cursor, and any MCP-compatible client.

Saves each transcript as a file and returns the path. Model context stays clean.

No API keys. No signup. Runs locally.

Website · Chrome Extension · npm

Requires a desktop client

rippr runs as a local stdio process. Works with Claude Desktop, Claude Code CLI, Cursor, and any client that can spawn local processes.

It does not work with cloud-hosted clients: claude.ai on the web, the Claude mobile app, or Claude Code on phone / web. Those environments can't launch local Node processes, so stdio MCPs like rippr can't be reached from them. Run it from a desktop.

Install

npx rippr-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "rippr": {
      "command": "npx",
      "args": ["-y", "rippr-mcp"]
    }
  }
}

Claude Code

claude mcp add rippr -- npx -y rippr-mcp

How it behaves

When you ask Claude to rip a YouTube video:

  1. Claude calls rip_transcript with the URL.
  2. rippr writes the transcript to ~/rippr/transcripts/<slug>_<videoId>.md and returns a resource_link plus metadata (title, channel, language, duration, word count, saved path, preview). The full transcript text is not returned by default.
  3. Claude tells you where the file was saved.
  4. Follow-ups ("summarize it", "find the part about X") read the saved resource instead of re-ripping.

Tools

rip_transcript

Extract and save a YouTube transcript.

| Parameter | Type | Required | Default | Description | |---|---|---|---|---| | url | string | yes | — | Any YouTube URL format | | format | string | no | "text" | "text" → Markdown with frontmatter. "segments" → JSON with timestamped segments. | | save_path | string | no | ~/rippr/transcripts/ | Override save location. Accepts absolute paths, ~/-relative paths, directories, or full file paths. | | return_text | boolean | no | false | Include the full transcript text inline in the tool response. Use for short clips or when the text is needed inline. |

Response shape:

  • A resource_link pointing at the saved file (file://…), with mime type text/markdown or application/json.
  • A text summary: title, channel, language, duration, word count, segment count, URL, 240-char preview, and the saved path.
  • Optionally, the full transcript text (when return_text: true).

Saved Markdown file:

---
title: "Video Title"
channel: "Channel Name"
language: en (auto-generated)
videoId: abc123XYZ45
videoUrl: https://www.youtube.com/watch?v=abc123XYZ45
durationSeconds: 1289
rippedAt: 2026-04-17T14:22:00.000Z
---

# Video Title

> by Channel Name

Full transcript text as a single continuous block…

Saved JSON file (when format: "segments"):

{
  "title": "Video Title",
  "channel": "Channel Name",
  "language": "en",
  "isAutoGenerated": true,
  "videoId": "abc123XYZ45",
  "videoUrl": "https://www.youtube.com/watch?v=abc123XYZ45",
  "segmentCount": 142,
  "segments": [
    { "start": 0.5, "duration": 2.1, "text": "Hello world" }
  ],
  "rippedAt": "2026-04-17T14:22:00.000Z"
}

Prompts

| Prompt | Description | |---|---| | get_transcript | Rip a video. Saves to disk. | | summarize_video | Rip, read the saved file, summarize. | | extract_quotes | Rip, read the saved file, pull quotes. Optional topic. | | compare_videos | Rip two videos, compare. | | research_topic | Rip and extract info about a specific topic. |

Resources

| Resource | URI | Description | |---|---|---| | Output Formats | rippr://formats | Format reference (text vs segments) and the default save dir | | Saved transcripts | file:// URIs under ~/rippr/transcripts/ | Every previously ripped transcript, surfaced as a readable resource |

Saved transcripts are listed dynamically. The client can enumerate them via resources/list and read any one via resources/read without re-ripping the video.

Example queries

Rip this video: https://www.youtube.com/watch?v=fpETS6q1Hww
Summarize the key points from this talk: https://youtu.be/abc123
What does this video say about machine learning? https://www.youtube.com/watch?v=xyz
Compare these two videos: [url1] [url2]

How it works

  1. Tries YouTube's InnerTube API (Android client) first
  2. Falls back to HTML scraping if InnerTube fails
  3. Parses caption XML in multiple formats (srv3, timedtext, classic)
  4. Retries with exponential backoff on transient failures
  5. Writes Markdown or JSON to ~/rippr/transcripts/ (or the path you pass)

No API keys required. Runs entirely on your machine.

Privacy

Runs locally. Talks to YouTube's own APIs to fetch caption data, and writes transcript files to your filesystem. No telemetry, no analytics, no tracking. Resource reads are restricted to the default save directory.

Disclaimer

Rippr accesses publicly available YouTube transcript data through endpoints that YouTube's own apps use. It is not affiliated with, endorsed by, or sponsored by YouTube or Google LLC. YouTube is a trademark of Google LLC.

Use is subject to YouTube's Terms of Service. Use at your own risk. The author accepts no liability for takedowns, rate limits, account actions, or any other consequences of use.

If YouTube adjusts their internal APIs in ways that break extraction, the tool may stop working without notice. For long-term production use, consider the official YouTube Data API v3 with an API key (not currently supported in this package).

License

MIT