Skip to main content
Glama
README.md
# yt-summarizer

An MCP (Model Context Protocol) server that lets Claude Desktop watch YouTube
videos and take notes for you — it fetches a video's transcript and saves a
summary as a new page in Notion.

Based on [this Enkrypt AI writeup](https://medium.com/enkrypt-ai/teach-claude-to-watch-youtube-videos-and-take-notes-in-notion-ac8f5491d58e).

## How it works

1. You give Claude Desktop a YouTube URL and ask for a summary.
2. Claude calls the `get_transcript` tool, which fetches the video's transcript.
3. Claude summarizes the transcript itself.
4. Claude calls the `create_notion_page` tool with a structured page payload.
5. The server creates the page in your Notion workspace and returns its URL.

## Prerequisites

- [uv](https://docs.astral.sh/uv/) (Python package/project manager)
- [Claude Desktop](https://claude.ai/download)
- A Notion account and workspace

## 1. Set up a Notion integration

1. Go to <https://www.notion.so/profile/integrations> and create a new
   internal integration. Name it (e.g. "YT Summarizer") and pick your
   workspace.
2. Copy the **Internal Integration Secret** — this is your `NOTION_TOKEN`.
3. In Notion, create (or pick) a page that will act as the parent page for
   generated summaries.
4. Open that page, click **Connections** (or `•••` → *Connect to*), and
   connect your new integration so it has access.
5. Copy the page ID from the page URL — it's the 32-character hex string at
   the end (dashes optional):
   `https://www.notion.so/My-Page-1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d`
   → `1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d` is your `PARENT_PAGE_ID`.

## 2. Configure environment variables

```bash
cp .env.example .env
```

Edit `.env` and fill in the two values from step 1:

```
NOTION_TOKEN=YOUR_NOTION_INTEGRATION_SECRET
PARENT_PAGE_ID=YOUR_NOTION_PARENT_PAGE_ID
```

## 3. Install dependencies

```bash
uv sync
```

## 4. Register the server with Claude Desktop

Add an entry to your Claude Desktop config file:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "Youtube Summarizer": {
      "command": "uv",
      "args": [
        "--directory",
        "FULL/PATH/TO/yt-summarizer",
        "run",
        "server.py"
      ]
    }
  }
}
```

Replace the path with the absolute path to this project directory, then
restart Claude Desktop. A hammer/tools icon should appear in the chat input,
confirming the server connected.

## 5. Use it

In Claude Desktop, paste a YouTube URL and ask for a summary saved to Notion,
e.g.:

> Summarize this video and save it to Notion: https://www.youtube.com/watch?v=dQw4w9WgXcQ

Claude will fetch the transcript, write a summary, create the Notion page,
and give you the link.

## Tools exposed by this server

| Tool | Description |
| --- | --- |
| `get_transcript(video_id)` | Fetches a YouTube video's transcript. Accepts a raw video ID or a full URL (watch/youtu.be/shorts/embed/live). |
| `create_notion_page(notion_page_content)` | Creates a page under `PARENT_PAGE_ID` from a Notion "create page" API payload (properties + children blocks). |

## Ideas for extending this

- Add timestamp markers linking back to key moments in the video
- Auto-categorize videos by topic/content type
- Generate actionable to-do lists from educational content
- Support non-English transcripts / auto-translation

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are completely distinct: one fetches a transcript and the other creates a Notion page. There is no overlap or chance of misselection.

Naming Consistency5/5

Both tools follow a clear verb_noun naming pattern: get_transcript and create_notion_page. The style is consistent and predictable.

Tool Count3/5

With only two tools, the server feels minimal for its stated purpose as a summarizer. Two is borderline, not excessive, but the scope suggests more tools would be expected.

Completeness1/5

The server name implies summarization, but no summarization tool exists. It only retrieves transcripts and creates Notion pages, leaving the core summarization functionality completely absent.

Maintenance

ActivitySlowing
ResponsivenessNo issues