{"id":44839015,"url":"https://github.com/fbac/xmtp-video-summarizer","last_synced_at":"2026-02-17T02:56:23.411Z","repository":{"id":336667203,"uuid":"1150669107","full_name":"fbac/xmtp-video-summarizer","owner":"fbac","description":"XMTP Agent that summarizes videos.","archived":false,"fork":false,"pushed_at":"2026-02-05T15:38:42.000Z","size":1058,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-06T01:26:04.348Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fbac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-05T14:53:37.000Z","updated_at":"2026-02-05T15:39:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fbac/xmtp-video-summarizer","commit_stats":null,"previous_names":["fbac/xmtp-video-summarizer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fbac/xmtp-video-summarizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbac%2Fxmtp-video-summarizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbac%2Fxmtp-video-summarizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbac%2Fxmtp-video-summarizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbac%2Fxmtp-video-summarizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fbac","download_url":"https://codeload.github.com/fbac/xmtp-video-summarizer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbac%2Fxmtp-video-summarizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29531994,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T02:50:17.944Z","status":"ssl_error","status_checked_at":"2026-02-17T02:47:48.112Z","response_time":100,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-17T02:56:22.670Z","updated_at":"2026-02-17T02:56:23.402Z","avatar_url":"https://github.com/fbac.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YouTube SummarAIzer\n\nAn XMTP agent that automatically summarizes YouTube videos using AI. Built with [XMTP Agent SDK](https://www.npmjs.com/package/@xmtp/agent-sdk), it enables decentralized messaging interactions where users can share YouTube links and receive AI-generated summaries.\n\n## Features\n\n- **Automatic Link Detection** - Paste any YouTube URL and get an instant summary\n- **Command Interface** - Use `/summary \u003cURL\u003e` for explicit requests or `/help` for assistance\n- **Multi-Backend AI Support** - Choose from OpenAI, Anthropic (Claude), or Perplexity for summarization\n- **Smart Caching** - Summaries are cached to avoid redundant API calls and reduce latency\n- **Fun Facts** - Displays random facts while processing to keep users engaged\n\n## How It Works\n\n1. User sends a message containing a YouTube link via XMTP\n2. The agent extracts the video ID and fetches the transcript\n3. The transcript is sent to the configured AI backend for summarization\n4. The summary is cached and returned to the user\n\n## Supported AI Backends\n\n| Backend    | Model (Default)                     | Environment Variable |\n| ---------- | ----------------------------------- | -------------------- |\n| OpenAI     | `gpt-4o-mini`                       | `OPENAI_API_KEY`     |\n| Anthropic  | `claude-sonnet-4-20250514`          | `ANTHROPIC_API_KEY`  |\n| Perplexity | `llama-3.1-sonar-small-128k-online` | `PERPLEXITY_API_KEY` |\n\nThe agent auto-detects which backend to use based on available API keys, or you can explicitly set `AI_BACKEND` to `openai`, `anthropic`, or `perplexity`.\n\n## Configuration\n\nCreate a `.env` file in the project root with the following variables:\n\n```bash\n# XMTP Configuration (required)\nXMTP_WALLET_KEY=0x...          # Ethereum wallet private key\nXMTP_DB_ENCRYPTION_KEY=0x...   # Database encryption key\nXMTP_ENV=production            # or 'dev' for testing\n\n# AI Backend (at least one API key required)\nAI_BACKEND=openai              # openai | anthropic | perplexity\nOPENAI_API_KEY=your-key\nANTHROPIC_API_KEY=your-key\nPERPLEXITY_API_KEY=your-key\n\n# Optional: Override default models\nOPENAI_MODEL=gpt-4o-mini\nANTHROPIC_MODEL=claude-sonnet-4-20250514\nPERPLEXITY_MODEL=llama-3.1-sonar-small-128k-online\n\n# Optional: Cache TTL (default: 1 hour)\nYOUTUBE_CACHE_TTL_MS=3600000\n```\n\nIf you don't have XMTP credentials, generate test keys at https://xmtp.github.io/agent-sdk-starter/ (keys are generated locally in your browser).\n\n## Local Development\n\nInstall dependencies and start the agent:\n\n```bash\nnpm install\nnpm start\n```\n\nAfter a successful start, the agent will print its address. Open the test URL in the console and send a direct message with a YouTube link to receive a summary.\n\n### GitHub Codespaces\n\nThis project includes a GitHub Codespaces configuration for development without local setup.\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/xmtp/agent-sdk-starter)\n\nAfter the environment starts:\n\n```bash\nnpm start\n```\n\n## Deploy to Render\n\nRender supports [Persistent Disks](https://render.com/docs/disks) and one-click deployments using the bundled `render.yaml` blueprint:\n\n[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/xmtp/agent-sdk-starter)\n\nSet your environment variables in the Render dashboard after deployment.\n\n## Project Structure\n\n```\nsrc/\n├── index.ts              # Agent entry point and message handlers\n├── backends/             # AI backend implementations\n│   ├── anthropic.ts      # Anthropic/Claude integration\n│   ├── openai.ts         # OpenAI integration\n│   ├── perplexity.ts     # Perplexity integration\n│   └── factory.ts        # Backend auto-detection and creation\n└── youtube/              # YouTube processing modules\n    ├── processor.ts      # Main orchestration (cache → transcript → summarize)\n    ├── transcript.ts     # YouTube transcript fetching\n    ├── summarizer.ts     # Transcript summarization\n    ├── cache.ts          # Summary caching layer\n    ├── validator.ts      # YouTube URL validation and extraction\n    └── facts.ts          # Random facts for loading states\n```\n\n## Usage Examples\n\nOnce the agent is running, interact with it via XMTP:\n\n**Automatic summarization:**\n\n```\nhttps://www.youtube.com/watch?v=dQw4w9WgXcQ\n```\n\n**Explicit command:**\n\n```\n/summary https://youtu.be/dQw4w9WgXcQ\n```\n\n**Get help:**\n\n```\n/help\n```\n\n## Tech Stack\n\n- [XMTP Agent SDK](https://www.npmjs.com/package/@xmtp/agent-sdk) - Decentralized messaging\n- [OpenAI SDK](https://www.npmjs.com/package/openai) - OpenAI/Perplexity API client\n- [Anthropic SDK](https://www.npmjs.com/package/@anthropic-ai/sdk) - Claude API client\n- [youtube-transcript-plus](https://www.npmjs.com/package/youtube-transcript-plus) - YouTube transcript extraction\n- TypeScript + tsx - Development and runtime\n\n## Support\n\nChat with `xmtp-docs.eth` on [XMTP.chat](http://xmtp.chat/production/dm/xmtp-docs.eth) if you need help while developing with XMTP.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbac%2Fxmtp-video-summarizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffbac%2Fxmtp-video-summarizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbac%2Fxmtp-video-summarizer/lists"}