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

ActivityInactive
ResponsivenessNo recent community issues