- Add process 'error' event handler to catch spawn failures (e.g., yt-dlp not installed)
- Separate stdout/stderr to prevent yt-dlp warnings from corrupting parsed output
- Add try-catch for RegExp construction from YTDLP_SANITIZE_ILLEGAL_CHARS env var
- Add NaN validation for YTDLP_MAX_FILENAME_LENGTH env var
- Sync VERSION constant with package.json (0.8.4)
- Update tests for new output format and null handling
- Add version sync guidance to CLAUDE.md
When using cookie authentication, YouTube uses authenticated API endpoints
that require JavaScript challenge solving. Without deno installed, downloads
will fail with "n challenge solving failed" error.
Add optional uploadDateFilter parameter to ytdlp_search_videos tool
that allows filtering search results by upload date using YouTube's
native date filtering (sp parameter).
Options: hour, today, week, month, year
Default: no filter (all dates)
Closes#21
- Use delete for Python env vars instead of empty string assignment
- Make integration tests opt-in via RUN_INTEGRATION_TESTS=1 env var
- Fix regex null coalescing for author matching in tests
Add two new MCP tools for extracting video comments:
- ytdlp_get_video_comments: Extract comments as structured JSON with
author info, likes, timestamps, and reply threading
- ytdlp_get_video_comments_summary: Get human-readable summary of top comments
Features:
- Support for sorting by "top" (most liked) or "new" (newest first)
- Configurable comment limit (1-100 comments)
- Includes author verification status, pinned comments, and uploader replies
- Comprehensive error handling for disabled comments, private videos, etc.
- Comprehensive test suite
- Add .claude/ directory and CLAUDE.md to .gitignore
- Add development guideline to always update CHANGELOG.md
- Update CHANGELOG.md with unreleased changes
Major release with comprehensive MCP best practices implementation:
✨ Added:
- Tool name prefixes (ytdlp_) for all 8 tools to avoid naming conflicts
- Zod schema validation with runtime input validation
- Tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- Response format options (JSON/Markdown) for search tools
- Pagination support with offset parameter
- Character limits (25K standard, 50K for transcripts) with smart truncation
- Actionable error messages with platform-specific guidance
🔧 Improved:
- Comprehensive tool descriptions with usage examples
- Enhanced configuration system with limits
- Better TypeScript type safety
- Professional README with badges and tables
🐛 Fixed:
- JSON parsing issue in metadata truncation
- Maintained valid JSON structure when truncated
🧪 Tested:
- ✅ YouTube platform (Rick Astley video)
- ✅ Bilibili platform (Chinese content)
- ✅ Multi-language support verified
- ✅ All 8 tools tested with real API calls
📖 Documentation:
- Created comprehensive CHANGELOG.md
- Redesigned README.md with professional formatting
- Added migration guide for v0.6.x users
🌍 Platform Support:
- Verified: YouTube, Bilibili
- Theory: 1000+ platforms via yt-dlp