{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github-joeanamier--xhs-downloader","slug":"joeanamier--xhs-downloader","name":"XHS-Downloader","type":"repo","url":"https://discord.com/invite/ZYtmgKud9Y","page_url":"https://unfragile.ai/joeanamier--xhs-downloader","categories":["data-pipelines"],"tags":["api","docker","download","fastapi","httpx","javascript","json","linux","macos","mcp-server","pyinstaller","python","rednote","server","sqlite","tampermonkey","textual","userscript","windows","xiaohongshu"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github-joeanamier--xhs-downloader__cap_0","uri":"capability://data.processing.analysis.xiaohongshu.work.url.parsing.and.metadata.extraction","name":"xiaohongshu work url parsing and metadata extraction","description":"Parses XiaoHongShu (RedNote) work URLs to extract structured metadata including post ID, author information, caption text, image/video URLs, and engagement metrics. Uses HTTP request interception with cookie-based authentication to bypass platform anti-scraping measures and retrieve JSON API responses from XHS endpoints, then deserializes and normalizes the response into a standardized work object with media asset references.","intents":["Extract post metadata from a single XHS work URL without downloading files","Retrieve all media asset URLs from a post for programmatic processing","Get author profile information and engagement stats from a work link","Batch extract metadata from multiple XHS URLs for analysis or migration"],"best_for":["Developers building content aggregation tools targeting XHS","Data analysts collecting social media metrics from Chinese platforms","Teams migrating content from XHS to other platforms"],"limitations":["Requires valid XHS session cookies; authentication fails if cookies expire or are revoked","Rate-limited by XHS servers; batch extraction of 100+ URLs may trigger temporary IP blocks","Cannot extract private/deleted posts or content from suspended accounts","Metadata structure may change with XHS platform updates, requiring code maintenance"],"requires":["Python 3.9+","Valid XiaoHongShu account with active session cookies","httpx library for async HTTP requests","Network access to XHS API endpoints (not blocked by firewall/VPN restrictions)"],"input_types":["XHS work URL (string, format: https://www.xiaohongshu.com/explore/[work_id])","XHS short URL (format: https://xhs.com/[short_code])"],"output_types":["JSON object with work metadata (title, description, author, media URLs, stats)","Structured Python dict with normalized field names"],"categories":["data-processing-analysis","web-scraping"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_1","uri":"capability://automation.workflow.watermark.free.media.download.with.format.conversion","name":"watermark-free media download with format conversion","description":"Downloads image and video files from XiaoHongShu work URLs and removes platform watermarks by fetching clean media assets directly from XHS CDN endpoints. Supports batch downloading with customizable file naming patterns (template-based: {work_id}_{index}_{timestamp}), automatic format conversion (MP4 video codec normalization, JPEG/PNG image optimization), and resumable downloads with partial file recovery using HTTP range requests.","intents":["Download a single XHS post's images/videos without watermarks to local storage","Batch download all media from multiple XHS URLs with organized folder structure","Convert downloaded videos to standard MP4 format for compatibility","Resume interrupted downloads without re-downloading completed files"],"best_for":["Content creators archiving their own XHS posts","Researchers collecting media datasets from XHS","Teams building content backup/migration pipelines"],"limitations":["Video codec conversion adds 30-120 seconds per video depending on resolution and duration","XHS CDN may serve region-locked content; downloads may fail from certain geographic locations","Large batch downloads (1000+ files) require careful rate-limiting to avoid IP blocking","File naming templates have limited variable support; complex naming logic requires custom code"],"requires":["Python 3.9+","FFmpeg installed and in system PATH (for video codec conversion)","Sufficient disk space for media files (videos: 50-500MB each, images: 2-10MB each)","Valid XHS session cookies with download permissions"],"input_types":["XHS work URL (string)","List of XHS URLs (JSON array or newline-delimited text)","Download configuration object (output directory, naming template, format preferences)"],"output_types":["Downloaded image files (JPEG, PNG)","Downloaded video files (MP4, WebM)","Download manifest JSON (metadata about downloaded files, timestamps, file paths)"],"categories":["automation-workflow","image-visual"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_10","uri":"capability://memory.knowledge.sqlite.based.download.history.and.work.metadata.persistence","name":"sqlite-based download history and work metadata persistence","description":"Stores all downloaded works, extracted links, and search results in a SQLite database with tables for works (work_id, title, author, media_urls, download_status), downloads (download_id, work_id, timestamp, file_paths), and searches (search_query, result_count, timestamp). Implements deduplication logic to prevent re-downloading the same work, tracks download status (pending, completed, failed), and enables querying download history by date range, author, or content type. Database schema includes indexes on frequently-queried columns (work_id, timestamp) for performance.","intents":["Track which XHS works have been downloaded to avoid duplicates","Query download history by date range, author, or search query","Analyze download patterns and content preferences over time","Resume interrupted downloads by checking database for partial completion"],"best_for":["Content creators maintaining a personal archive of their own posts","Researchers analyzing download patterns and content trends","Teams building content management systems with XHS integration"],"limitations":["SQLite is single-writer; concurrent downloads from multiple processes may cause database locks","Database file grows over time; 10,000+ download records may impact query performance without maintenance","No built-in data export; exporting to CSV/JSON requires custom queries","Database schema changes require migration scripts; schema updates may break existing databases"],"requires":["Python 3.9+ (SQLite3 included in standard library)","Writable directory for database file (default: ./data/xhs.db)","Sufficient disk space for database (typically <100MB for 10,000 records)"],"input_types":["Work metadata (work_id, title, author, media_urls)","Download completion events (work_id, file_paths, timestamp)","Search queries and results"],"output_types":["SQLite database tables with structured data","Query results (JSON, Python dict, or raw SQL rows)","Download history reports (CSV export, JSON export)"],"categories":["memory-knowledge","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_11","uri":"capability://safety.moderation.cookie.based.authentication.with.automatic.session.refresh","name":"cookie-based authentication with automatic session refresh","description":"Manages XiaoHongShu session authentication by storing and refreshing cookies in a persistent cookie jar. Reads cookies from browser storage (via browser extension or manual export) or accepts cookies as configuration input. Implements automatic cookie refresh logic that detects expired sessions (HTTP 401 responses) and attempts to refresh cookies using stored refresh tokens or re-authentication flow. Validates cookie freshness before each request and logs authentication failures for debugging.","intents":["Authenticate with XHS using stored session cookies from browser","Automatically refresh expired cookies without user intervention","Handle authentication failures gracefully and provide clear error messages","Support multiple XHS accounts by switching cookie sets"],"best_for":["Users who want to automate XHS downloads without manual re-authentication","Teams running long-running download jobs that span multiple days","Developers building XHS integration tools that need reliable authentication"],"limitations":["Cookies expire after 30-90 days; long-running processes may require periodic manual cookie refresh","Cookie refresh logic is XHS-specific; changes to XHS authentication flow may break refresh mechanism","Storing cookies in configuration files is a security risk; cookies should be protected with file permissions","Multi-account support requires manual cookie switching; no built-in account manager"],"requires":["Python 3.9+","Valid XHS session cookies (exported from browser or provided manually)","Secure storage for cookies (file permissions, encryption recommended)","Network access to XHS authentication endpoints"],"input_types":["Cookie string (format: 'cookie_name=value; cookie_name2=value2')","Cookie file (Netscape format, exported from browser)","Configuration file (settings.json with cookies field)"],"output_types":["Authenticated HTTP requests with cookie headers","Authentication status messages (success, expired, refresh failed)","Updated cookie jar with refreshed cookies"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_12","uri":"capability://automation.workflow.customizable.file.naming.and.folder.organization.with.template.variables","name":"customizable file naming and folder organization with template variables","description":"Supports template-based file naming and folder organization using variable substitution. Naming templates can include variables like {work_id}, {author}, {title}, {timestamp}, {index} which are replaced with actual values from work metadata. Implements folder structure templates (e.g., {author}/{timestamp}/{work_id}) for organizing downloads into hierarchical directories. Validates template syntax and provides default templates for common use cases (flat structure, author-based organization, date-based organization).","intents":["Organize downloaded files by author, date, or custom folder structure","Use meaningful file names that include work ID, author, or title for easy identification","Implement consistent naming conventions across all downloads","Organize downloads into date-based folders (e.g., 2024-01-15/work_123.mp4)"],"best_for":["Content creators organizing large archives of downloaded posts","Researchers organizing datasets by metadata (author, date, topic)","Teams implementing consistent file organization standards"],"limitations":["Template variables are limited to work metadata; custom variables require code modification","File name length is limited by OS (255 chars on most systems); long titles may be truncated","Special characters in titles may cause file system errors; sanitization is automatic but may produce unexpected names","Folder depth is unlimited; deeply nested structures may cause issues on some file systems"],"requires":["Python 3.9+","Configuration file (settings.json) with naming_template and folder_template fields","Valid work metadata (work_id, author, title, timestamp)"],"input_types":["Naming template string (e.g., '{work_id}_{author}_{timestamp}')","Folder template string (e.g., '{author}/{timestamp}')","Work metadata (work_id, author, title, timestamp, index)"],"output_types":["Generated file names (string)","Generated folder paths (string)","Downloaded files organized in specified folder structure"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_13","uri":"capability://automation.workflow.batch.processing.with.rate.limiting.and.error.recovery","name":"batch processing with rate limiting and error recovery","description":"Supports batch downloading of multiple XHS URLs with configurable rate limiting to avoid triggering XHS anti-scraping measures. Implements exponential backoff retry logic for failed downloads (retry up to 3 times with increasing delays), tracks download progress across the batch, and provides detailed error reports for failed items. Rate limiting is configurable (requests per second, delay between downloads) and can be adjusted based on observed XHS response patterns.","intents":["Download 100+ XHS posts in a single batch operation","Automatically retry failed downloads without manual intervention","Avoid IP blocking by implementing rate limiting and backoff","Get detailed reports on which downloads succeeded and which failed"],"best_for":["Content creators backing up large numbers of posts","Researchers collecting large datasets from XHS","Teams running scheduled batch download jobs"],"limitations":["Rate limiting is conservative; very aggressive settings may trigger IP blocking","Exponential backoff can make batch processing very slow for large batches with high failure rates","Error recovery is automatic but may not work for all error types (e.g., account suspension)","Progress tracking is in-memory; batch interruption loses progress (no checkpoint system)"],"requires":["Python 3.9+","List of XHS URLs (file or array)","Configuration for rate limiting (requests_per_second, retry_count, backoff_factor)","Sufficient time for batch processing (100 URLs at 1 req/sec = 100+ seconds)"],"input_types":["List of XHS URLs (JSON array, newline-delimited text, or CSV file)","Rate limiting configuration (requests_per_second, retry_count, backoff_factor)","Error handling preferences (fail_fast vs continue_on_error)"],"output_types":["Downloaded files organized in output directory","Batch processing report (JSON or CSV with success/failure status for each URL)","Error log with details on failed downloads"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_14","uri":"capability://automation.workflow.configuration.management.with.settings.json.persistence.and.validation","name":"configuration management with settings.json persistence and validation","description":"Manages all user-configurable parameters through a settings.json file with schema validation and default values. Supports configuration hierarchy: command-line arguments override settings.json, which overrides built-in defaults. Implements configuration validation (type checking, range validation for numeric fields, enum validation for choice fields) and provides clear error messages for invalid configurations. Automatically migrates settings.json schema when application version changes, preserving user settings while adding new fields.","intents":["Configure XHS-Downloader without modifying code (output directory, naming template, rate limiting)","Override settings for individual downloads via command-line arguments","Migrate settings to new application versions without losing configuration","Validate configuration before starting downloads to catch errors early"],"best_for":["Non-technical users who want to configure settings through a file","DevOps teams deploying XHS-Downloader with environment-specific configuration","Developers building tools that wrap XHS-Downloader and need to pass configuration"],"limitations":["JSON format is not user-friendly for complex configurations; YAML or TOML might be better","Configuration validation is basic; complex validation rules require custom code","Schema migration is manual; breaking changes in settings.json require user intervention","No configuration UI; users must edit JSON files manually or use command-line arguments"],"requires":["Python 3.9+","settings.json file in application directory or specified via --config argument","Valid JSON syntax (common source of errors)"],"input_types":["settings.json file (JSON format)","Command-line arguments (--output-dir, --naming-template, etc.)","Environment variables (optional, for containerized deployment)"],"output_types":["Validated configuration object (Python dict)","Error messages for invalid configuration","Updated settings.json file (after schema migration)"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_2","uri":"capability://data.processing.analysis.user.profile.link.extraction.and.work.collection.aggregation","name":"user profile link extraction and work collection aggregation","description":"Extracts and aggregates work links from XiaoHongShu user profiles across multiple collection types: published works, bookmarked/saved posts, liked posts, and custom albums. Uses paginated API requests to the XHS user profile endpoint with cursor-based pagination, iterating through all available pages to build a complete inventory of work URLs. Stores extracted links in SQLite database with metadata (collection type, extraction timestamp, user ID) for deduplication and tracking.","intents":["Extract all published works from a specific XHS user profile","Get all bookmarked/saved posts from a user's collection","Retrieve all liked posts from a user's activity history","Export a user's entire work portfolio as a list of URLs for backup or analysis"],"best_for":["Content creators backing up their own profile data","Researchers analyzing user posting patterns and content preferences","Teams building content discovery tools for XHS"],"limitations":["Pagination may be limited by XHS; profiles with 10,000+ works may not expose all links through API","Bookmarked/liked collections are only accessible if the authenticated user has permission (private profiles blocked)","Cursor-based pagination requires maintaining state across requests; session interruption requires restart","Album extraction only works for public albums; private albums require additional authentication"],"requires":["Python 3.9+","Valid XHS session cookies with profile viewing permissions","SQLite3 (included in Python standard library)","Target user profile must be public or authenticated user must have access"],"input_types":["XHS user profile URL (string, format: https://www.xiaohongshu.com/user/[user_id])","XHS user ID (string)","Collection type filter (enum: 'published', 'bookmarked', 'liked', 'albums')"],"output_types":["List of XHS work URLs (JSON array or newline-delimited text)","SQLite database table with extracted links and metadata","CSV export of work links with collection type and extraction timestamp"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_3","uri":"capability://search.retrieval.search.result.link.extraction.and.filtering","name":"search result link extraction and filtering","description":"Executes XiaoHongShu search queries and extracts work and user links from paginated search results. Sends search requests to XHS search API endpoint with query parameters (keyword, filters, sort order), processes paginated JSON responses containing work and user cards, and extracts URLs with optional filtering by content type, engagement metrics, or publication date. Results are stored in SQLite with search metadata for reproducibility.","intents":["Extract all work links matching a specific search keyword from XHS","Find user profiles related to a search topic","Filter search results by engagement metrics (likes, comments) before extraction","Build a dataset of trending content around a specific topic"],"best_for":["Market researchers analyzing trending topics on XHS","Content creators finding inspiration and competitive content","Teams building content recommendation systems"],"limitations":["Search results are ranked by XHS algorithm; extraction order does not guarantee completeness or representativeness","XHS search API may return different results based on user profile, location, and time; results are not reproducible across different accounts","Search filters (date range, engagement metrics) are limited to what XHS API exposes; custom filtering requires post-processing","Pagination depth is limited; searching for very common keywords may only return top 1000-5000 results"],"requires":["Python 3.9+","Valid XHS session cookies","Search query string (Chinese or English, depending on XHS language setting)","Network access to XHS search API endpoints"],"input_types":["Search query string (text, e.g., '小红书美妆教程')","Search filter parameters (JSON object with optional: sort_order, content_type, date_range)","Pagination limit (integer, default 50 results per page)"],"output_types":["List of work URLs from search results (JSON array)","List of user profile URLs from search results (JSON array)","SQLite database table with search results, query metadata, and extraction timestamp"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_4","uri":"capability://automation.workflow.multi.interface.request.routing.and.execution.mode.dispatch","name":"multi-interface request routing and execution mode dispatch","description":"Implements a single entry point (main.py) that dispatches execution to five distinct user interfaces based on command-line arguments and configuration: Terminal UI (TUI) for interactive use, CLI for single-command automation, Browser UserScript for in-browser convenience, REST API Server for programmatic integration, and MCP Server for AI assistant integration. Each interface converges on the core XHS class, which coordinates content extraction, download, and storage operations through a shared processing pipeline.","intents":["Run XHS-Downloader interactively with a terminal UI for manual downloads","Execute single-command downloads via CLI for scripting and automation","Integrate XHS-Downloader with browser workflows using Tampermonkey UserScript","Build custom applications using REST API endpoints","Connect XHS-Downloader to AI assistants via Model Context Protocol"],"best_for":["Solo developers building LLM agents that need XHS content access","DevOps teams deploying XHS-Downloader as a containerized microservice","Non-technical users who prefer interactive terminal UI","Teams integrating XHS content extraction into existing REST API architectures"],"limitations":["TUI requires terminal with ANSI color support; may not work in some CI/CD environments","CLI mode processes one URL at a time; batch processing requires external shell scripting","Browser UserScript requires Tampermonkey/Greasemonkey extension; not compatible with all browsers","API Server and MCP Server modes require separate process management; no built-in process supervisor"],"requires":["Python 3.9+","Command-line arguments or configuration file (settings.json)","For TUI: Terminal with 80x24 minimum dimensions","For Browser UserScript: Firefox/Chrome with Tampermonkey extension","For API/MCP Server: Port 5556 available and not blocked by firewall"],"input_types":["Command-line arguments (--url, --mode, --config)","Configuration file (settings.json with JSON structure)","HTTP requests (for API Server mode)","MCP protocol messages (for MCP Server mode)"],"output_types":["Downloaded files (images, videos)","Terminal UI interactive prompts and status updates","REST API JSON responses","MCP protocol responses"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_5","uri":"capability://automation.workflow.terminal.user.interface.tui.with.clipboard.monitoring.and.interactive.settings","name":"terminal user interface (tui) with clipboard monitoring and interactive settings","description":"Provides an interactive terminal-based UI built with the Textual framework that monitors system clipboard for XHS URLs, displays real-time download progress, and allows users to configure settings without editing JSON files. Implements a multi-panel layout with URL input field, download queue display, progress bars, and settings editor. Clipboard monitoring runs in a background thread that detects new XHS URLs and automatically queues them for download when enabled.","intents":["Monitor clipboard and automatically download XHS content as URLs are copied","View real-time download progress with visual progress bars and status messages","Configure download settings (output directory, naming template, format preferences) through interactive UI","Manage download queue (pause, resume, cancel individual downloads)"],"best_for":["Non-technical users who prefer graphical interfaces over command-line","Content creators who frequently download XHS posts and want clipboard automation","Users who want to configure settings without manually editing JSON"],"limitations":["Requires terminal with ANSI color support; may not render correctly in older terminals or CI/CD environments","Clipboard monitoring is OS-specific; implementation differs for Windows (pyperclip), macOS (pbpaste), Linux (xclip/xsel)","TUI performance degrades with very large download queues (100+ items); UI responsiveness may lag","Settings changes in TUI are not persisted to settings.json automatically; requires explicit save action"],"requires":["Python 3.9+","Textual library (Python TUI framework)","OS-specific clipboard access tool (pyperclip for cross-platform, or native tools)","Terminal with minimum 80x24 character dimensions"],"input_types":["User keyboard input (URL paste, menu navigation, settings input)","System clipboard content (XHS URLs)","Configuration file (settings.json for initial state)"],"output_types":["Terminal UI display (text, progress bars, status messages)","Downloaded files (images, videos)","Updated settings.json file (when user saves settings)"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_6","uri":"capability://automation.workflow.command.line.interface.cli.with.selective.media.index.specification","name":"command-line interface (cli) with selective media index specification","description":"Provides a command-line interface for single-command downloads with support for specifying which images/videos to download from a multi-media post. Accepts XHS URL as argument, optional image index range (e.g., --images 1-3 to download only images 1-3), and configuration overrides (--output-dir, --naming-template). Executes download synchronously and exits with status code indicating success/failure, suitable for shell scripts and CI/CD pipelines.","intents":["Download a single XHS post from command line without interactive UI","Specify which images from a multi-image post to download (e.g., only first 3 images)","Integrate XHS downloads into shell scripts and automation workflows","Override configuration settings for a single download without modifying settings.json"],"best_for":["DevOps engineers building CI/CD pipelines that need XHS content","System administrators automating content backup tasks","Developers integrating XHS downloads into shell scripts"],"limitations":["CLI processes one URL at a time; batch processing requires external loop (for, xargs, etc.)","Image index specification only works for multi-image posts; single-image posts ignore index parameter","No progress feedback during download; long downloads appear to hang without output","Configuration overrides are command-line only; cannot be saved for future use"],"requires":["Python 3.9+","XHS URL as command-line argument","Valid XHS session cookies configured in settings.json","Output directory must be writable"],"input_types":["XHS URL (positional argument)","Image index range (--images flag, format: '1-3' or '1,2,3')","Configuration overrides (--output-dir, --naming-template, etc.)"],"output_types":["Downloaded image/video files","Exit status code (0 for success, non-zero for failure)","Stdout/stderr messages (optional, if --verbose flag enabled)"],"categories":["automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_7","uri":"capability://tool.use.integration.browser.userscript.integration.with.dual.mode.operation","name":"browser userscript integration with dual-mode operation","description":"Provides a Tampermonkey/Greasemonkey UserScript that runs in the browser and enables in-browser downloads or server-push mode. In standalone mode, the script uses browser APIs (Fetch API, Blob) to download files directly to the user's Downloads folder. In server-push mode (script_server=true in config), the script detects XHS URLs on the page, extracts work IDs, and sends download requests to a running XHS-Downloader instance via HTTP POST, offloading processing to the server while providing browser-side convenience.","intents":["Download XHS posts directly from the browser without leaving the page","Extract XHS work links from search results and profile pages for batch processing","Push download tasks to a running XHS-Downloader server from the browser","Integrate XHS downloads into browser workflows without CLI or TUI"],"best_for":["Content creators who frequently browse XHS and want one-click downloads","Teams running a centralized XHS-Downloader server and want browser-based task submission","Users who prefer browser-based workflows over command-line tools"],"limitations":["Standalone mode downloads are limited by browser security (CORS, same-origin policy); may fail for some media URLs","Server-push mode requires a running XHS-Downloader instance on localhost:5556; network connectivity issues cause failures","UserScript is browser-specific; Firefox and Chrome implementations may differ slightly","Watermark removal in standalone mode depends on XHS CDN serving clean media; if CDN serves watermarked files, script cannot remove them"],"requires":["Firefox or Chrome browser","Tampermonkey or Greasemonkey extension installed","Valid XHS session cookies in browser","For server-push mode: Running XHS-Downloader instance with API Server enabled (main.py api)"],"input_types":["XHS work URLs (detected from page content or user-selected links)","Configuration (script_server flag, server URL, download preferences)"],"output_types":["Downloaded files in browser Downloads folder (standalone mode)","HTTP POST requests to XHS-Downloader server (server-push mode)","Extracted work links for manual processing"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_8","uri":"capability://tool.use.integration.rest.api.server.with.json.request.response.protocol","name":"rest api server with json request/response protocol","description":"Exposes XHS-Downloader functionality as a REST API server running on port 5556 with FastAPI framework. Provides endpoints for work detail retrieval (/xhs/detail), download submission (/xhs/download), and download status polling (/xhs/status). Accepts JSON request bodies with XHS URLs and configuration parameters, processes requests asynchronously using a task queue, and returns JSON responses with download status, file paths, and error messages. Supports CORS for cross-origin requests from web applications.","intents":["Build custom web applications that integrate XHS content extraction","Submit download tasks from external applications and poll for completion","Retrieve work metadata via REST API for integration with other services","Deploy XHS-Downloader as a microservice in a larger application architecture"],"best_for":["Full-stack developers building web applications that need XHS integration","Teams deploying XHS-Downloader as a containerized microservice","Developers building custom dashboards or management interfaces"],"limitations":["API Server requires separate process management; no built-in process supervisor or auto-restart","Task queue is in-memory; download tasks are lost if the server crashes (no persistence)","No authentication/authorization; anyone with network access can submit download requests","Polling-based status checking is inefficient for large numbers of concurrent downloads; no WebSocket support"],"requires":["Python 3.9+","FastAPI library","Port 5556 available and not blocked by firewall","Process manager (systemd, supervisor, Docker) for production deployment"],"input_types":["JSON request body with XHS URL and optional configuration (output_dir, naming_template, image_indices)","HTTP GET/POST parameters"],"output_types":["JSON response with download status, file paths, and metadata","HTTP status codes (200 for success, 400 for invalid input, 500 for server errors)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-joeanamier--xhs-downloader__cap_9","uri":"capability://tool.use.integration.model.context.protocol.mcp.server.integration.for.ai.assistants","name":"model context protocol (mcp) server integration for ai assistants","description":"Exposes XHS-Downloader as an MCP Server running on port 5556, enabling AI assistants (Claude, ChatGPT with plugins, etc.) to call XHS-Downloader functions as tools. Implements MCP protocol handlers for work extraction, download submission, and status checking. AI assistants can invoke these tools within their reasoning loops, enabling autonomous content extraction and download workflows orchestrated by the AI model.","intents":["Enable AI assistants to autonomously extract and download XHS content as part of larger tasks","Build AI-powered content analysis workflows that fetch XHS posts and analyze them","Allow AI assistants to help users download XHS content through natural language commands","Integrate XHS content extraction into AI agent reasoning loops"],"best_for":["Solo developers building LLM agents that need XHS content access","Teams building AI-powered content analysis platforms","Researchers exploring AI agent capabilities for social media content extraction"],"limitations":["MCP Server requires AI assistant with MCP plugin support; not all AI platforms support MCP","Tool invocation is limited by AI model's context window; large download batches may exceed token limits","No built-in rate limiting; AI models may submit excessive requests and trigger XHS IP blocking","Error handling depends on AI model's ability to interpret error messages; unclear errors may cause agent loops"],"requires":["Python 3.9+","MCP protocol library (implementation details in DeepWiki)","AI assistant with MCP plugin support (Claude with MCP, etc.)","Port 5556 available for MCP Server"],"input_types":["MCP tool call requests from AI assistant (work_url, download_config parameters)","Natural language commands from user (processed by AI assistant into MCP calls)"],"output_types":["MCP tool response messages (download status, file paths, metadata)","Structured data for AI assistant to process and respond to user"],"categories":["tool-use-integration","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":51,"verified":false,"data_access_risk":"high","permissions":["Python 3.9+","Valid XiaoHongShu account with active session cookies","httpx library for async HTTP requests","Network access to XHS API endpoints (not blocked by firewall/VPN restrictions)","FFmpeg installed and in system PATH (for video codec conversion)","Sufficient disk space for media files (videos: 50-500MB each, images: 2-10MB each)","Valid XHS session cookies with download permissions","Python 3.9+ (SQLite3 included in standard library)","Writable directory for database file (default: ./data/xhs.db)","Sufficient disk space for database (typically <100MB for 10,000 records)"],"failure_modes":["Requires valid XHS session cookies; authentication fails if cookies expire or are revoked","Rate-limited by XHS servers; batch extraction of 100+ URLs may trigger temporary IP blocks","Cannot extract private/deleted posts or content from suspended accounts","Metadata structure may change with XHS platform updates, requiring code maintenance","Video codec conversion adds 30-120 seconds per video depending on resolution and duration","XHS CDN may serve region-locked content; downloads may fail from certain geographic locations","Large batch downloads (1000+ files) require careful rate-limiting to avoid IP blocking","File naming templates have limited variable support; complex naming logic requires custom code","SQLite is single-writer; concurrent downloads from multiple processes may cause database locks","Database file grows over time; 10,000+ download records may impact query performance without maintenance","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.6845561008518177,"quality":0.5,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:21.550Z","last_scraped_at":"2026-05-03T13:56:56.344Z","last_commit":"2026-04-28T14:15:57Z"},"community":{"stars":11032,"forks":1674,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=joeanamier--xhs-downloader","compare_url":"https://unfragile.ai/compare?artifact=joeanamier--xhs-downloader"}},"signature":"uQdlXFYy0dumuYEOcoW/n61Rl55tLsmJlSsqNmLIQ15Qu3UcxGxD73/zTdxU2npIkwvHSFIUPa8qfzEyChtpCQ==","signedAt":"2026-06-23T00:36:11.068Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/joeanamier--xhs-downloader","artifact":"https://unfragile.ai/joeanamier--xhs-downloader","verify":"https://unfragile.ai/api/v1/verify?slug=joeanamier--xhs-downloader","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}