{"id":"32782047-02b7-4b5d-84fa-fdb07a0a0903","entityType":"agent","slug":"clawhub-mnbplus-resource-hunter","name":"Resource Hunter","canonicalUrl":"https://www.xpersona.co/agent/clawhub-mnbplus-resource-hunter","canonicalPath":"/agent/clawhub-mnbplus-resource-hunter","generatedAt":"2026-10-12T15:34:02.517Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":null},"description":"Find the best public route to pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books. Uses layered success-fir...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 974 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17450smagb39nptvhrdze7yqx83h1a0:resource-hunter","sourceUrl":"https://clawhub.ai/mnbplus/resource-hunter","homepage":"https://clawhub.ai/mnbplus/skills/resource-hunter","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/mnbplus/resource-hunter","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/mnbplus/skills/resource-hunter","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Resource Hunter technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":null},"stars":null,"forks":null,"downloads":974,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"2.1.1","tractionLabel":"974 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:43:00.778Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T23:43:00.935Z","lastCrawledAt":"2026-10-11T23:43:00.778Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T23:43:00.778Z","lastVerifiedAt":null,"highlights":[{"version":"2.1.1","createdAt":"2026-03-24T01:31:44.437Z","changelog":"Polish the GitHub and ClawHub presentation: clearer hero copy, tighter capability summary, cleaner Dalipan/Bing/Brave limitation wording, and refreshed release-facing validation language.","fileCount":124,"zipByteSize":809844},{"version":"2.1.0","createdAt":"2026-03-24T01:23:51.092Z","changelog":"x","fileCount":122,"zipByteSize":808848},{"version":"3.0.1","createdAt":"2026-03-19T17:55:08.838Z","changelog":"Polish the ClawHub presentation: stronger hero copy, cleaner structure, clearer runtime requirements, and tighter agent-facing positioning.","fileCount":32,"zipByteSize":55036},{"version":"3.0.0","createdAt":"2026-03-19T17:46:03.558Z","changelog":"v3 refactor: tiered ranking, benchmark gate, deterministic video manifests, source health diagnostics, and JSON v3 contract.","fileCount":32,"zipByteSize":54680},{"version":"2.0.0","createdAt":"2026-03-19T16:38:28.515Z","changelog":"Resource Hunter 2.0.0 is a major overhaul with unified architecture, enhanced search, and improved output modes. - Unified search interface via hunt.py with clear subcommands and JSON output. - Internal codebase modularized under scripts/resource_hunter/ with better caching, CLI, and search model separation. - Added comprehensive tests for hunt, CLI, intent detection, precision search, result formatting, and video handling. - Major SKILL.md update: now documents modes, intent routing, expected outputs, and agent usage. - Expanded control for channels (pan/torrent), 4K, and subtitle preferences; legacy scripts remain supported. - Adds full reference documentation for usage, architecture, and source coverage.","fileCount":25,"zipByteSize":41023},{"version":"1.7.6","createdAt":"2026-03-18T08:11:51.274Z","changelog":"- Revamped and expanded the skill description for improved clarity and details. - Highlighted new features: intelligent resource type recognition, quality-first sorting, and concurrent searches. - Updated quick start guide and parameter table for clearer usage instructions. - Added explicit dependency instructions and detailed data sources overview. - Modernized formatting with clear sections and improved ease of reading.","fileCount":7,"zipByteSize":20150},{"version":"1.7.5","createdAt":"2026-03-18T08:09:50.437Z","changelog":"- Improved cloud drive support: now aggregates results from 10+ drives, including 阿里云盘, 夸克, 百度, 115, UC, PikPak, and more. - Enhanced search options: added --sub for prioritized subtitle results and --4k for 4K content preference. - Updated usage instructions for clarity and expanded examples; simplified recommended keyword strategies. - Expanded \"AI 使用指南\" and search trigger examples for better integration with smart agents. - Improved documentation for filtering, picking versions, and specifying content quality. - No API Key required; all APIs remain free and public.","fileCount":7,"zipByteSize":19917},{"version":"1.7.4","createdAt":"2026-03-18T08:08:53.956Z","changelog":"resource-hunter 1.7.4 - Updated scripts/pansou.py (details not specified). - No changes to features or documentation.","fileCount":7,"zipByteSize":20017}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17450smagb39nptvhrdze7yqx83h1a0:resource-hunter","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17450smagb39nptvhrdze7yqx83h1a0:resource-hunter` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/mnbplus/resource-hunter before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T15:34:02.515Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mnbplus-resource-hunter/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":null},"readme":"Skill: Resource Hunter\n\nOwner: mnbplus\n\nSummary: Find the best public route to pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books. Uses layered success-fir...\n\nTags: latest:2.1.1\n\nVersion history:\n\nv2.1.1 | 2026-03-24T01:31:44.437Z | user\n\nPolish the GitHub and ClawHub presentation: clearer hero copy, tighter capability summary, cleaner Dalipan/Bing/Brave limitation wording, and refreshed release-facing validation language.\n\nv2.1.0 | 2026-03-24T01:23:51.092Z | user\n\nx\n\nv3.0.1 | 2026-03-19T17:55:08.838Z | user\n\nPolish the ClawHub presentation: stronger hero copy, cleaner structure, clearer runtime requirements, and tighter agent-facing positioning.\n\nv3.0.0 | 2026-03-19T17:46:03.558Z | user\n\nv3 refactor: tiered ranking, benchmark gate, deterministic video manifests, source health diagnostics, and JSON v3 contract.\n\nv2.0.0 | 2026-03-19T16:38:28.515Z | auto\n\nResource Hunter 2.0.0 is a major overhaul with unified architecture, enhanced search, and improved output modes.\n\n- Unified search interface via hunt.py with clear subcommands and JSON output.\n- Internal codebase modularized under scripts/resource_hunter/ with better caching, CLI, and search model separation.\n- Added comprehensive tests for hunt, CLI, intent detection, precision search, result formatting, and video handling.\n- Major SKILL.md update: now documents modes, intent routing, expected outputs, and agent usage.\n- Expanded control for channels (pan/torrent), 4K, and subtitle preferences; legacy scripts remain supported.\n- Adds full reference documentation for usage, architecture, and source coverage.\n\nv1.7.6 | 2026-03-18T08:11:51.274Z | auto\n\n- Revamped and expanded the skill description for improved clarity and details.\n- Highlighted new features: intelligent resource type recognition, quality-first sorting, and concurrent searches.\n- Updated quick start guide and parameter table for clearer usage instructions.\n- Added explicit dependency instructions and detailed data sources overview.\n- Modernized formatting with clear sections and improved ease of reading.\n\nv1.7.5 | 2026-03-18T08:09:50.437Z | auto\n\n- Improved cloud drive support: now aggregates results from 10+ drives, including 阿里云盘, 夸克, 百度, 115, UC, PikPak, and more.\n- Enhanced search options: added --sub for prioritized subtitle results and --4k for 4K content preference.\n- Updated usage instructions for clarity and expanded examples; simplified recommended keyword strategies.\n- Expanded \"AI 使用指南\" and search trigger examples for better integration with smart agents.\n- Improved documentation for filtering, picking versions, and specifying content quality.\n- No API Key required; all APIs remain free and public.\n\nv1.7.4 | 2026-03-18T08:08:53.956Z | auto\n\nresource-hunter 1.7.4\n\n- Updated scripts/pansou.py (details not specified).\n- No changes to features or documentation.\n\nv1.7.3 | 2026-03-18T08:06:36.923Z | auto\n\n- Improved the PanSou (2fun.live) script logic in scripts/pansou.py for enhanced resource searching.\n- No changes were made to documentation, features, or usage instructions.\n\nv1.7.2 | 2026-03-18T08:05:11.871Z | auto\n\n- Updated scripts/pansou.py with unspecified changes.\n- No user-facing documentation changes in SKILL.md.\n\nv1.7.1 | 2026-03-18T08:04:15.567Z | auto\n\n- Improved pansou.py script for enhanced search functionality.\n- No changes to usage or documentation. \n- Minor update; no user-facing changes.\n\nv1.7.0 | 2026-03-18T08:02:48.636Z | auto\n\n- Improved code structure and readability in hunt.py, pansou.py, and torrent.py\n- Enhanced error handling and resource search reliability\n- Minor bug fixes and optimizations across search scripts\n\nv1.6.8 | 2026-03-18T07:36:46.027Z | auto\n\n- Updated scripts/torrent.py (details not shown).\n- No user-facing documentation changes in SKILL.md.\n\nv1.6.7 | 2026-03-18T07:36:06.447Z | auto\n\n- Updated scripts/hunt.py.\n- No user-facing changes documented in SKILL.md or general usage updated.\n\nv1.6.6 | 2026-03-18T07:35:29.804Z | auto\n\n- Minor update to scripts/torrent.py.\n- No user-facing changes documented.\n\nv1.6.5 | 2026-03-18T07:33:58.690Z | auto\n\n- Minor update to scripts/hunt.py.\n- No user-facing changes documented.\n- All usage instructions and features remain the same.\n\nv1.6.4 | 2026-03-18T07:33:11.170Z | auto\n\n- Improved error handling and result parsing in hunt.py for more robust resource searching.\n- Updated pansou.py to enhance compatibility with changes in the 2fun.live PanSou API.\n- No changes to usage or command-line interface; all existing features retained.\n\nv1.6.3 | 2026-03-18T07:29:32.015Z | auto\n\nResource Hunter 1.6.3\n\n- 移除了 API Key 依赖，现全部接口均为免费公开，无需配置密钥\n- 优化文档结构，新增“三条搜索路径”分区，简化快速使用说明\n- 新增 hunt.py --quick 参数，支持只返回最佳结果\n- 明确说明视频直链下载需单独安装 yt-dlp\n- 精简并更新常用命令及用法示例\n\nv1.6.2 | 2026-03-18T07:27:34.438Z | auto\n\n- Improved scripts/pansou.py with code updates.\n- No changes to functionality or usage instructions documented.\n- All commands and usage remain as before.\n\nv1.6.1 | 2026-03-18T06:50:18.606Z | auto\n\nresource-hunter 1.6.1\n\n- Updated scripts/pansou.py (details of the specific changes are not provided).\n- No changes to usage instructions or user-facing features.\n\nv1.6.0 | 2026-03-18T06:48:16.243Z | auto\n\nresource-hunter v1.6.0\n\n- Updated scripts/hunt.py (details not specified).\n- No changes to documentation or user-facing commands.\n- Core features and usage remain the same as previous version.\n\nv1.5.6 | 2026-03-18T06:46:49.237Z | auto\n\n- Documentation update in SKILL.md for clarity; command usage and explanations refined.\n- No functional or behavioral changes to the codebase.\n\nv1.5.5 | 2026-03-18T06:46:02.614Z | auto\n\n- Minor update to scripts/hunt.py with no changes to documentation or core usage.\n- No user-facing features or command changes in this release.\n\nv1.5.4 | 2026-03-18T06:45:02.990Z | auto\n\nresource-hunter v1.5.4\n\n- Updated scripts/hunt.py (details not specified).\n- No changes to user-facing usage or documentation.\n- Minor or maintenance update.\n\nv1.5.3 | 2026-03-18T06:42:46.620Z | auto\n\nVersion 1.5.3\n\n- Expanded usage instructions with detailed AI operation guidelines for when and how to trigger searches.\n- Clarified mode selection rules (e.g., anime, TV, music, software) based on keyword analysis.\n- Added result-handling instructions and optimization tips for best search results.\n- Updated trigger words in the description to include \"帮我找\".\n- Improved documentation clarity and provided more practical examples.\n\nv1.5.2 | 2026-03-18T06:41:41.512Z | auto\n\n- Updated scripts/hunt.py (details of code changes not specified).\n- No user-facing documentation changes in SKILL.md.\n- Functionality and usage remain as before.\n\nv1.5.1 | 2026-03-18T05:55:07.396Z | auto\n\n- Minor update to scripts/hunt.py.\n- No changes to documentation or user-facing features.\n- Version bump to 1.5.1.\n\nv1.5.0 | 2026-03-18T05:42:01.030Z | auto\n\n- Updated scripts/hunt.py with new features or improvements.\n- SKILL.md documentation remains unchanged.\n- No user-facing changes documented beyond code updates.\n\nv1.4.2 | 2026-03-18T05:41:03.586Z | auto\n\nresource-hunter v1.4.2\n\n- Update: Modified scripts/torrent.py.\n- No changes to user-facing features or documentation.\n\nv1.4.1 | 2026-03-18T05:40:28.063Z | auto\n\n- Minor update to scripts/torrent.py.\n- No changes to usage or documentation.\n- Version bump to 1.4.1.\n\nv1.4.0 | 2026-03-18T05:33:01.863Z | auto\n\n- No file changes detected in this release.\n- Documentation in SKILL.md remains unchanged.\n\nv1.3.4 | 2026-03-18T05:32:17.973Z | auto\n\n- Updated scripts/hunt.py (details not provided).\n- No changes to usage, features, or interface described in SKILL.md.\n- Documentation remains consistent with previous version.\n\nv1.3.3 | 2026-03-18T05:28:26.672Z | auto\n\n- Updated scripts/hunt.py (details not specified).\n- No changes to feature set or documentation.\n\nv1.3.2 | 2026-03-18T05:26:29.094Z | auto\n\n- No user-facing changes.\n- Internal code updated (scripts/hunt.py), but documentation and skill interface remain unchanged.\n\nv1.3.1 | 2026-03-18T05:24:35.113Z | auto\n\nNo changes detected in this version.\n\nv1.3.0 | 2026-03-18T05:23:01.416Z | auto\n\n**Improved instructions, platform details, and trigger words for a more user-friendly experience.**\n\n- Updated description with clearer trigger words and supported resource types.\n- Rewrote usage examples for simplicity and easier following.\n- Organized the three resource search paths into clear sections with unique features.\n- Added a table explaining the “smart” mode trigger strategy by resource type.\n- Provided concise parameter explanations for key scripts.\n- Removed outdated details and clarified dependency installation notes.\n\nv1.2.6 | 2026-03-18T05:22:18.461Z | auto\n\n- Improved scripts/hunt.py and scripts/torrent.py with minor updates or fixes.\n- No changes to user instructions or documentation.\n\nv1.2.5 | 2026-03-18T05:18:05.375Z | auto\n\n- Improved: Updated scripts/torrent.py (details not shown).\n- No user-facing changes to documentation or usage instructions.\n- Version bump to 1.2.5.\n\nv1.2.4 | 2026-03-18T05:14:28.491Z | auto\n\n- Minor updates in scripts/pansou.py.\n- No user-facing changes documented.\n- Overall functionality, usage, and documentation remain the same.\n\nv1.2.3 | 2026-03-18T04:27:19.927Z | auto\n\nresource-hunter 1.2.3\n\n- Updated scripts/torrent.py (details not specified).\n- No changes to usage or documentation.\n\nv1.2.2 | 2026-03-18T04:26:16.764Z | auto\n\n- Updated scripts/hunt.py (details not shown).\n- No changes to usage instructions or documentation in SKILL.md.\n\nv1.2.1 | 2026-03-18T04:24:30.687Z | auto\n\nresource-hunter 1.2.1\n\n- Updated scripts/pansou.py (details not specified)\n- No user-facing documentation changes\n- No changes to usage instructions or supported features\n\nv1.2.0 | 2026-03-18T04:23:38.384Z | auto\n\n- Updated scripts/pansou.py (details not specified).\n- No user-facing changes to documentation or interface.\n\nv1.1.2 | 2026-03-18T04:21:57.806Z | auto\n\n- Improved scripts/pansou.py implementation.\n- No changes to usage or documentation.\n- Internal updates only; user-facing features remain unchanged.\n\nv1.1.1 | 2026-03-18T04:17:37.843Z | auto\n\n- Improved: Refactored hunt.py and pansou.py scripts for better modularity and maintainability.\n- Fixed: Minor code cleanups and possible bug fixes in netdisk and resource search modules.\n\nv1.1.0 | 2026-03-18T04:11:59.843Z | auto\n\nResource-hunter 1.1.0 introduces a unified smart entry and expands support for more platforms and engines.\n\n- 新增 hunt.py 智能主入口脚本，可自动判断资源类型，一键全路径搜索\n- tops: 网盘支持 10+ 云盘，磁力/种子新增 YTS、EZTV 支持（共四引擎）\n- 支持更细致的搜索类型参数（--anime / --movie / --tv）提升精准度\n- SKILL.md 文档升级，新增智能用法、推荐调用方式和结果优化建议\n- 各子模块参数与用法统一调整，便于直接独立调用\n\nv1.0.0 | 2026-03-18T04:03:27.227Z | auto\n\nInitial release of resource-hunter.\n\n- Supports aggregated cloud drive search (Aliyun, Quark, Baidu, 115, PikPak, etc.).\n- Provides torrent search (TPB, Nyaa, 1337x) and anime-specialized search.\n- Enables video downloads from 1000+ sites (YouTube, Bilibili, TikTok, etc.).\n- Offers subtitle extraction and audio-only download.\n- Follows an agent decision flow to select the optimal resource path based on user needs.\n- Requires yt-dlp for video downloads; other features work with standard Python.\n\nArchive index:\n\nArchive v2.1.1: 124 files, 809844 bytes\n\nFiles: _meta.json (134b), agents/openai.yaml (262b), artifacts/live-tests/bing-attack-on-titan.html (114424b), artifacts/live-tests/brave-attack-on-titan.html (226848b), artifacts/live-tests/candidate-source-probe.json (13774b), artifacts/live-tests/dalipan-app-bundle.js (72121b), artifacts/live-tests/dig_pansearch_dalipan_bundles.py (1219b), artifacts/live-tests/inspect_bing_candidate_queries.py (878b), artifacts/live-tests/inspect_brave_for_lanzou.py (925b), artifacts/live-tests/inspect_brave_links.py (525b), artifacts/live-tests/inspect_dalipan_bundle.py (666b), artifacts/live-tests/inspect_pansearch_bundle.py (605b), artifacts/live-tests/inspect_pansearch_results.py (1208b), artifacts/live-tests/inspect_search_pages.py (1066b), artifacts/live-tests/inspect_the_merry_widow_1952.py (1364b), artifacts/live-tests/inspect_znds_queries.py (893b), artifacts/live-tests/inspect_znds_search.py (638b), artifacts/live-tests/limetorrents-attack-on-titan.html (513b), artifacts/live-tests/limetorrents-home.html (482b), artifacts/live-tests/next-batch/probe-summary.md (1908b), artifacts/live-tests/pansearch-attack-on-titan.html (8772b), artifacts/live-tests/pansearch-search-bundle.js (11179b), artifacts/live-tests/probe_candidate_sources.py (5278b), artifacts/live-tests/probe_lanzou_domains.py (686b), artifacts/live-tests/probe_next_batch.py (901b), artifacts/live-tests/probe_pansearch_dalipan_queries.py (2259b), artifacts/live-tests/probe_pansearch_search.py (747b), artifacts/live-tests/probe_torlock_lime.py (908b), artifacts/live-tests/probe_znds_threads.py (2139b), artifacts/live-tests/README.md (1084b), artifacts/live-tests/the-merry-widow-1952.json (428358b), artifacts/live-tests/torlock-attack-on-titan.html (709804b), artifacts/live-tests/torlock-home.html (627574b), artifacts/RELEASE-NOTES-2.1.0.md (1648b), artifacts/RELEASE-NOTES-2.1.1.md (1577b), artifacts/SYNC-CHECKLIST-2.1.0.md (1539b), build/lib/resource_hunter/__init__.py (91b), build/lib/resource_hunter/__main__.py (80b), build/lib/resource_hunter/_version.py (22b), build/lib/resource_hunter/adapters.py (46920b), build/lib/resource_hunter/cache.py (9957b), build/lib/resource_hunter/cli.py (81924b), build/lib/resource_hunter/common.py (14210b), build/lib/resource_hunter/config.py (2306b), build/lib/resource_hunter/core.py (1963b), build/lib/resource_hunter/engine.py (17875b), build/lib/resource_hunter/errors.py (881b), build/lib/resource_hunter/intent.py (12365b), build/lib/resource_hunter/models.py (4983b), build/lib/resource_hunter/packaging_gate.py (72513b), build/lib/resource_hunter/packaging_report.py (74045b), build/lib/resource_hunter/packaging_smoke.py (32333b), build/lib/resource_hunter/packaging_verify.py (35042b), build/lib/resource_hunter/precision_core.py (2625b), build/lib/resource_hunter/ranking.py (18272b), build/lib/resource_hunter/rendering.py (6680b), build/lib/resource_hunter/retrieval_layers.py (9171b), build/lib/resource_hunter/video_core.py (10271b), NEXT_ACTION.md (1061b), pyproject.toml (1213b), README.md (3292b), references/architecture.md (5751b), references/sources.md (3686b), references/usage.md (4355b), scripts/_bootstrap.py (407b), scripts/hunt.py (187b), scripts/packaging_gate.py (265b), scripts/packaging_report.py (271b), scripts/packaging_verify.py (271b), scripts/pansou.py (215b), scripts/resource_hunter/__init__.py (42b), scripts/resource_hunter/cache.py (9810b), scripts/resource_hunter/cli.py (11046b), scripts/resource_hunter/common.py (14446b), scripts/resource_hunter/core.py (49b), scripts/resource_hunter/models.py (3595b), scripts/resource_hunter/precision_core.py (60758b), scripts/resource_hunter/video_core.py (10208b), scripts/test_hunt.py (1102b), scripts/torrent.py (217b)\n\nFile v2.1.1:SKILL.md\n\n---\nname: resource-hunter\nversion: 2.1.1\ndescription: \"Find the best public route to pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books. Uses layered success-first retrieval, public HTML/RSS/no-API sources, and direct/actionable/clue result ranking.\"\nmetadata: {\"openclaw\":{\"emoji\":\"🔎\"}}\n---\n\n# Resource Hunter\n\nA success-first public resource retrieval skill for:\n- movies\n- TV\n- anime\n- music\n- software\n- books\n- public pan links\n- magnets\n- torrents\n- public video URLs\n\n## What makes it useful\n\n### Stronger real-source coverage\n- Pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n- Torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- Indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n\n### Layered retrieval\n- `direct-structured-pan`\n- `direct-structured-torrent`\n- `community-clue`\n- `indexed-discovery`\n- `authenticated-connector` (reserved)\n\n### Better result semantics\nResults are ranked into:\n- `direct`\n- `actionable`\n- `clue`\n\nThat makes it easier to distinguish:\n- immediately usable links/magnets\n- results that still need light follow-up\n- clue-only records that point you in the right direction\n\n## Important limitations\n\n### Dalipan\n`dalipan` is currently a **token-only clue source** in release semantics.\n\n- anonymous search is confirmed\n- runtime emits `dalipan://provider/eu-token`\n- these records are structured clue output\n- they are **not guaranteed final share URLs** yet\n\n### Bing / Brave\n- public HTML fallback only\n- useful for recall and indexed discovery\n- still best-effort providers, not stable structured direct sources\n\n## Main entrypoint\n\n```bash\nSKILL_ROOT=\"$(openclaw skills path resource-hunter)\"\nSKILL_DIR=\"$SKILL_ROOT/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\n## Common commands\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" sources --probe --json\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\n```\n\n## Validation snapshot\n\n- focused runtime/source regression set: `96 passed, 1 skipped`\n- `ruff check skills/resource-hunter`: passed\n- latest GitHub `resource-hunter-ci`: green\n\n## Notes for agent behavior\n\n- Prefer the main `hunt.py` entrypoint\n- Use `--quick` for short chat answers\n- Use `--json` for machine-consumable output\n- Do not oversell Dalipan as a fully direct final-link source in the current release\n- Do not oversell Bing/Brave as stable structured providers\n\nFile v2.1.1:artifacts/live-tests/README.md\n\n# Live Test Artifacts\r\n\r\nThis directory contains probe-time evidence and temporary research material collected during source expansion.\r\n\r\n## What should be considered durable evidence\r\n\r\nKeep only files that help explain or reproduce an important retrieval decision, for example:\r\n\r\n- `next-batch/probe-summary.md`\r\n- `the-merry-widow-1952.json`\r\n- `inspect_the_merry_widow_1952.py`\r\n- selected HTML/JS captures that document why a source was or was not integrated\r\n\r\n## What should be considered temporary probe material\r\n\r\nMany files here are one-off probe scripts or raw page captures used during investigation.\r\nThey are useful for local research, but they are **not** the primary public contract of the skill.\r\n\r\nExamples include:\r\n- ad hoc probe scripts\r\n- raw search-result page captures\r\n- downloaded frontend bundles used only for reverse engineering\r\n\r\n## Sync guidance\r\n\r\nBefore external sync/review, treat this directory as:\r\n- evidence/supporting material\r\n- not the main runtime deliverable\r\n- something that may be trimmed further if a cleaner sync package is needed\n\nFile v2.1.1:README.md\n\n# Resource Hunter\n\nFind the best public route to public pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books.\n\n`resource-hunter` is a success-first retrieval skill focused on **real public no-API sources** and **usable result quality**, not just broad source counting.\n\n## Highlights\n\n- **Broader real-source coverage**\n  - Pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n  - Torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n  - Indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- **Layered retrieval**\n  - direct structured pan\n  - direct structured torrent\n  - community clue mining\n  - indexed discovery fallback\n- **Better precision for tricky titles**\n  - year-conflict downgrade\n  - evidence fusion and corroboration\n  - actionability split into `direct`, `actionable`, and `clue`\n- **No API keys required**\n  - public HTML, RSS, magnet, and public page flows only\n- **Installable and scriptable**\n  - `resource-hunter`\n  - `python -m resource_hunter`\n  - `scripts/hunt.py`\n\n## What changed in 2.1.1\n\n- polished the GitHub / ClawHub surface copy for a clearer first impression\n- kept the success-first source expansion release intact\n- improved release-facing wording around:\n  - AnimeTosho / DMHY / Torlock integration\n  - Dalipan token-only clue semantics\n  - Bing / Brave indexed-discovery fallback role\n  - current validation and known limits\n\n## Important semantics and limits\n\n### Dalipan\nDalipan is currently integrated as a **public anonymous search clue source**.\n\n- anonymous search is confirmed\n- current runtime emits `dalipan://provider/eu-token`\n- those records are structured clue outputs, **not guaranteed final share URLs**\n- anonymous `detail/url` completion is still incomplete\n\n### Bing / Brave\n- public HTML fallback only\n- useful for recall\n- still best-effort indexed-discovery providers, not the same stability class as structured direct sources\n\n## Validation snapshot\n\n- focused runtime/source regression set: `96 passed, 1 skipped`\n- `ruff check skills/resource-hunter`: passed\n- GitHub `resource-hunter-ci`: green after Python 3.12 packaging-probe test stabilization\n\n## Common commands\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\n```\n\n## Current known limits\n\n- public HTML/RSS sources can drift, throttle, or region-block without notice\n- same-title different-year disambiguation is improved but still not perfect\n- `The Merry Widow 1952` remains a known hard live case\n- `PanSearch` looks promising but is not yet integrated because content-card link extraction is still unfinished\n\n## References\n\n- Skill-focused usage: [SKILL.md](./SKILL.md)\n- Source matrix: [references/sources.md](./references/sources.md)\n- Architecture: [references/architecture.md](./references/architecture.md)\n- Usage notes: [references/usage.md](./references/usage.md)\n\nFile v2.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"2.1.1\",\n  \"publishedAt\": 1774315904437\n}\n\nFile v2.1.1:references/architecture.md\n\n# Resource Hunter v2 Architecture\n\n## Layout\n\n- `src/resource_hunter/`: installable Python package\n- `src/resource_hunter/config.py`: path and environment resolution\n- `src/resource_hunter/errors.py`: shared error types\n- `src/resource_hunter/intent.py`: intent parsing, alias enrichment, query graphs, source-aware budgets\n- `src/resource_hunter/adapters.py`: source adapters and runtime profiles\n- `src/resource_hunter/ranking.py`: ranking, validation, evidence fusion, and success-first ordering\n- `src/resource_hunter/rendering.py`: text and JSON rendering exports\n- `src/resource_hunter/retrieval_layers.py`: layered retrieval model and indexed discovery fallback\n- `src/resource_hunter/engine.py`: main search engine\n- `src/resource_hunter/precision_core.py`: compatibility implementation layer for the current v2 core\n- `src/resource_hunter/video_core.py`: yt-dlp workflow and manifest handling\n- `src/resource_hunter/cli.py`: unified CLI surface\n- `scripts/hunt.py`: primary legacy CLI wrapper\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Resolve aliases for movie-like Chinese queries when applicable\n3. Build a `SearchPlan`\n4. Expand source-aware query graphs and budgets\n5. Route to pan/torrent pipelines\n6. Query registered direct sources\n7. If no confident result is found, run indexed discovery fallback\n8. Normalize all results into `SearchResult`\n9. Deduplicate\n10. Score, validate, and fuse corroborating evidence\n11. Render text output or JSON\n12. Cache response and source health\n\n## Retrieval model\n\n### Retrieval layers\n- `direct-structured-pan`\n  - `2fun`, `dalipan`, `hunhepan`, `pansou.vip`\n- `direct-structured-torrent`\n  - `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- `community-clue`\n  - `tieba`\n- `indexed-discovery`\n  - `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- `authenticated-connector`\n  - reserved\n\n### Layer roles\n- `direct`: sources intended to produce immediately usable or near-usable structured results\n- `clue`: sources intended to produce thread-level or follow-up hints\n- `discovery`: search-engine fallback used when direct retrieval does not produce confident matches\n- `auth`: reserved for future authenticated connectors\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Important release semantics\n\n- `AnimeTosho`, `DMHY`, and most torrent adapters produce direct magnet-ready results\n- `Bing` and `Brave` are indexed-discovery fallback providers, not the same stability class as structured direct sources\n- `DaliPan` is currently a **structured token-only clue source** in runtime semantics:\n  - anonymous search is confirmed via the public search API\n  - final anonymous detail/url resolution is still incomplete\n  - runtime therefore exposes `dalipan://provider/eu-token` placeholders and marks them as clue/follow-up results rather than guaranteed final share URLs\n\n## Cache\n\nSQLite database stores:\n\n- `search_cache`: short-TTL normalized responses\n- `source_status`: rolling source health results and circuit-breaker input\n- `video_manifest`: recent download artifacts\n\nThe circuit breaker skips sources that have failed repeatedly in the recent cooldown window.\n\n## JSON schema\n\nTop level search payload:\n\n```json\n{\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}\n```\n\n### Important search `meta` fields\n\n- `query_attempts`\n- `layer_attempts`\n- `query_budgets`\n- `source_query_plan`\n- `retrieval_layers`\n- `best_direct_results`\n- `best_actionable_results`\n- `best_clues`\n- `success_estimate`\n- `timings_ms`\n\n### Search result notes\n\nEach `SearchResult` can carry:\n\n- `validation_status`\n- `actionability`\n- `validation_signals`\n- `corroboration_count`\n- `supporting_results`\n- `raw`\n\nThe runtime uses these fields to separate:\n\n- direct matches\n- actionable but not fully direct matches\n- clue-only results that still require manual follow-up\n\n### Dalipan-specific note\n\nDalipan results currently preserve follow-up data in `raw`, including:\n\n- `dalipan_id`\n- `dalipan_eu`\n- `filelist`\n- `delivery=token_only`\n- `retrieval_role=clue`\n- `requires_follow_up=true`\n\nThis makes current behavior explicit to downstream consumers.\n\n## Top level doctor payload\n\n```json\n{\n  \"version\": \"...\",\n  \"python\": \"...\",\n  \"packaging_python\": \"...\",\n  \"packaging_python_source\": \"current\",\n  \"packaging_python_candidates\": [],\n  \"packaging_python_auto_selected\": false,\n  \"stdout_encoding\": \"...\",\n  \"cache_db\": \"...\",\n  \"storage_root\": \"...\",\n  \"project_root\": \"...\",\n  \"project_root_source\": \"discovered\",\n  \"binaries\": {},\n  \"packaging\": {\n    \"project_root\": \"...\",\n    \"project_root_source\": \"discovered\",\n    \"pip\": true,\n    \"venv\": true,\n    \"setuptools_build_meta\": true,\n    \"wheel\": true,\n    \"wheel_build_ready\": true,\n    \"python_module_smoke_ready\": true,\n    \"console_script_smoke_ready\": true,\n    \"full_packaging_smoke_ready\": true,\n    \"blockers\": [],\n    \"optional_gaps\": [],\n    \"console_script_strategy\": \"venv\"\n  },\n  \"recent_sources\": {},\n  \"recent_manifests\": [],\n  \"advice\": []\n}\n```\n\n## Packaging / installability notes\n\nPackaging, report, gate, and verify flows remain part of the project and are still available, but they are not the focus of the current sync-prep wave. The current sync-prep effort is mainly about making the retrieval/runtime state, source matrix, and release limitations match reality.\n\nFile v2.1.1:references/sources.md\n\n# Resource Hunter Sources\n\n## Current source roles\n\n### Direct structured pan\n- `2fun`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: primary structured pan aggregator\n- `dalipan`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: API-backed structured search source\n  - Current limitation: runtime currently exposes Dalipan as **token-only clue output** (`dalipan://provider/eu-token`) because anonymous `detail/url` resolution is not fully open yet\n- `hunhepan`\n  - Channel: `pan`\n  - Priority: `2`\n  - Role: fallback pan source\n- `pansou.vip`\n  - Channel: `pan`\n  - Priority: `3`\n  - Role: extra fallback pan source\n\n### Community clue\n- `tieba`\n  - Channel: `pan`\n  - Priority: `4`\n  - Role: public thread clue mining for pan links, passwords, magnets, and manual follow-up hints\n\n### Direct structured torrent\n- `nyaa`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for anime\n- `animetosho`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Role: RSS-style torrent/magnet discovery, especially useful for anime\n- `dmhy`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Role: public HTML torrent/magnet source, especially useful for anime and Chinese-tagged releases\n- `eztv`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for TV episodes\n- `tpb`\n  - Channel: `torrent`\n  - Priority: `2`\n  - General fallback\n- `torlock`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Role: HTML search + detail magnet extraction fallback\n- `yts`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Best for movies\n- `1337x`\n  - Channel: `torrent`\n  - Priority: `3`\n  - General supplementary source\n\n### Indexed discovery fallback\n- `search-index:ddg`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public DuckDuckGo HTML\n- `search-index:bing`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public Bing HTML\n  - Stability note: best-effort only; HTML structure and region behavior may drift\n- `search-index:brave`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public Brave Search HTML\n  - Stability note: best-effort only; HTML structure and rate limits may drift\n\n## Retrieval layers\n\n- `direct-structured-pan`\n  - Sources: `2fun -> dalipan -> hunhepan -> pansou.vip`\n  - Goal: first-pass structured pan results\n- `direct-structured-torrent`\n  - Sources: `nyaa -> animetosho -> dmhy -> eztv -> tpb -> torlock -> yts -> 1337x`\n  - Goal: first-pass structured torrent and magnet results\n- `community-clue`\n  - Sources: `tieba`\n  - Goal: public-thread clue extraction and follow-up hints\n- `indexed-discovery`\n  - Sources: `search-index:ddg -> search-index:bing -> search-index:brave`\n  - Goal: best-effort fallback when structured retrieval does not surface a confident result\n- `authenticated-connector`\n  - Reserved for future work\n\n## Default routing matrix\n\n- Movie: prefer pan sources first, then movie/general torrent sources\n- TV: prefer TV-capable torrent sources first, then pan supplement\n- Anime: prefer `nyaa -> animetosho -> dmhy -> torlock`, then pan supplement\n- Music/software/book/general: pan sources first, torrent second\n- Public video URL: no pan/torrent search; route directly to the video workflow\n\n## Health and caveats\n\n- Every active search stores `source_status` snapshots for direct sources\n- `sources --probe` actively tests registered pan/torrent adapters\n- Indexed discovery providers are fallback providers and are not equivalent to stable structured direct-source guarantees\n- External public sources may throttle, change formats, break without notice, or vary by region\n- `dalipan` is currently a release with an explicit limitation: anonymous search works, but final detail/url resolution is not yet fully anonymous in current runtime\n\nFile v2.1.1:references/usage.md\n\n# Resource Hunter Usage\n\n## Search\n\nMain command:\n\n```bash\npython3 scripts/hunt.py search \"<query>\" [options]\n```\n\nKey options:\n\n- `--kind movie|tv|anime|music|software|book|general`\n- `--channel both|pan|torrent`\n- `--quick`\n- `--sub`\n- `--4k`\n- `--json`\n- `--page`\n- `--limit`\n\nExamples:\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"三体 epub\" --book --channel pan\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\n```\n\n## Current retrieval behavior\n\n- Movie: pan first, torrents as supplement\n- TV: TV-capable torrents first, pan as supplement\n- Anime: prefer `nyaa -> animetosho -> dmhy -> torlock`, then pan sources\n- Music/software/book/general: pan first\n- When direct retrieval does not surface a confident result, indexed discovery fallback may run through `search-index:ddg`, `search-index:bing`, and `search-index:brave`\n\n## Important result semantics\n\n- `direct`: intended to be immediately usable\n- `actionable`: likely useful but may still need small follow-up\n- `clue`: pointer or structured hint that still requires manual follow-up\n\n### Dalipan-specific note\n\nDalipan is currently integrated as a **public anonymous search clue source**.\n\n- Anonymous search is confirmed via the public search API\n- Final anonymous `detail/url` resolution is still incomplete\n- Runtime currently outputs Dalipan records as `dalipan://provider/eu-token`\n- Treat those as structured clue records, not guaranteed final share URLs\n\n### Bing / Brave note\n\n`search-index:bing` and `search-index:brave` are best-effort indexed-discovery fallbacks.\n\n- They are useful for recall\n- They are not the same stability class as structured direct adapters\n- HTML layout, throttling, or regional differences may affect them\n\n## Video\n\nPublic video URLs go through the `video` subcommands:\n\n```bash\npython3 scripts/hunt.py video info \"https://youtu.be/...\"\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\npython3 scripts/hunt.py video download \"https://youtu.be/...\" best\npython3 scripts/hunt.py video download \"https://youtu.be/...\" balanced\npython3 scripts/hunt.py video download \"https://youtu.be/...\" small\npython3 scripts/hunt.py video download \"https://youtu.be/...\" audio\npython3 scripts/hunt.py video subtitle \"https://youtu.be/...\" --lang zh-Hans,zh,en\n```\n\n## Legacy wrappers\n\nThese remain available for one compatibility cycle:\n\n```bash\npython3 scripts/pansou.py \"Oppenheimer 2023\" --max 5\npython3 scripts/torrent.py \"Breaking Bad S01E01\" --tv --limit 8\npython3 scripts/video.py info \"https://youtu.be/...\"\n```\n\n## Source and health inspection\n\n```bash\npython3 scripts/hunt.py sources\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py doctor --json\n```\n\nNotes:\n\n- `sources --probe` actively probes registered pan/torrent adapters\n- indexed discovery providers are shown through retrieval-layer metadata, but they should still be understood as fallback providers\n\n## Packaging smoke\n\nPackaging/report/gate/verify commands are still supported for installability and CI workflows.\n\nCommon examples:\n\n```bash\npython3 scripts/hunt.py doctor --json --require-packaging-ready\npython3 scripts/hunt.py packaging-smoke --json\npython3 scripts/hunt.py packaging-baseline --project-root /path/to/repo --python auto --bootstrap-build-deps --output-dir artifacts/packaging-baseline --require-expected-outcomes\npython3 scripts/hunt.py packaging-baseline-report artifacts/packaging-baseline/packaging-baseline.json\npython3 scripts/packaging_report.py --json artifacts/downloaded-gh-artifacts\npython3 scripts/packaging_gate.py artifacts/downloaded-gh-artifacts --json\npython3 scripts/packaging_verify.py --github-run latest --output-dir artifacts/packaging-baseline-gh-verify --require-artifact-count 6\n```\n\n## Operational notes\n\n- The engine caches recent normalized responses and source health in SQLite\n- Public HTML/RSS sources may throttle, block, or change structure without notice\n- Hard cases such as same-title different-year films are improved but not fully solved yet\n- `The Merry Widow 1952` remains a known difficult live case\n\nFile v2.1.1:artifacts/live-tests/next-batch/probe-summary.md\n\n# Next Batch Probe Summary\r\n\r\n## Added to runtime so far\r\n- AnimeTosho\r\n- DMHY\r\n- Torlock\r\n- DaliPan\r\n- search-index:bing\r\n- search-index:brave\r\n\r\n## This wave findings\r\n\r\n### Newly integrated this wave\r\n- DaliPan\r\n  - dug from Dalipan frontend bundle\r\n  - confirmed public search API shape at `https://api.dalipan.com/api/v1/pan/search`\r\n  - requires unverified SSL context in current environment because upstream certificate is expired\r\n  - detail endpoint is still login-gated / incomplete for anonymous use, so runtime integration currently uses public search payload as actionable clue/direct placeholder records (`dalipan://provider/eu-token`), preserving dalipan ids/tokens in raw metadata for future follow-up\r\n\r\n### Probed and not integrated this wave\r\n- ZNDS: reachable, but current search entry keeps returning generic site/distribution pages instead of useful resource/forum clues.\r\n- quark.so: homepage timed out in current environment.\r\n- EXT.to: 403 Forbidden.\r\n- Zooqle: returns error JSON (`{\"status\":\"error\",\"message\":\"Hatalı Deneme\"}`).\r\n- SolidTorrents: SSL EOF.\r\n- TorrentGalaxy: SSL EOF.\r\n- LimeTorrents: JS redirect works, redirected request currently returns 502.\r\n- Lanzou family domains: homepages reachable, but no direct public HTML search endpoint found this wave.\r\n- iLanzou: reachable, but JS SPA shell only.\r\n- PanSearch: page and `_next/data` endpoint reachable. Real results appear when using `keyword=` instead of `q=`, but current runtime output is rendered content cards without stable canonical share fields, so not integrated yet.\r\n- Dalipan detail endpoint (`/api/v1/pan/detail`) appears login-gated for anonymous access.\r\n- Dalipan url endpoint (`/api/v1/pan/url`) currently returns `-1` for anonymous probes.\r\n\r\n## Rule followed\r\n- tested one by one\r\n- only integrate sources that work end-to-end enough for current environment\r\n- do not add login/API-key sources\n\nFile v2.1.1:artifacts/RELEASE-NOTES-2.1.0.md\n\n# Resource Hunter 2.1.0\r\n\r\n## Summary\r\n\r\nThis release prepares `skills/resource-hunter` for sync after a success-first source-expansion wave focused on real public no-API retrieval.\r\n\r\n## Added / integrated\r\n\r\n### Structured torrent sources\r\n- `animetosho`\r\n- `dmhy`\r\n- `torlock`\r\n\r\n### Structured pan / clue source\r\n- `dalipan`\r\n\r\n### Indexed discovery fallback\r\n- `search-index:bing`\r\n- `search-index:brave`\r\n\r\n## Retrieval changes\r\n\r\n- layered retrieval is now explicit in runtime metadata\r\n- query planning, source-aware budgets, validation, and evidence fusion are active\r\n- indexed discovery fallback is part of the search flow when direct retrieval is weak\r\n- wrong-year same-title results are downgraded more aggressively\r\n\r\n## Important semantics and limits\r\n\r\n### Dalipan\r\n- anonymous search is confirmed through the public search API\r\n- runtime currently emits `dalipan://provider/eu-token` placeholders\r\n- these are structured clue records, not guaranteed final share URLs\r\n- anonymous `detail/url` completion is still not fully open in current runtime behavior\r\n\r\n### Bing / Brave\r\n- public HTML search fallback only\r\n- best-effort discovery providers\r\n- subject to layout drift, throttling, and regional variation\r\n\r\n### Torlock\r\n- detail-page fetches are now isolated so a single broken detail page does not fail the whole source batch\r\n\r\n## Validation\r\n\r\n- `95 passed, 1 skipped`\r\n- `ruff` all green\r\n\r\n## Known follow-up items\r\n\r\n- finish PanSearch content-card link extraction before integration\r\n- revisit Dalipan detail/url completion and transport hardening\r\n- continue one-by-one probing for additional public no-API sources\n\nFile v2.1.1:artifacts/RELEASE-NOTES-2.1.1.md\n\n# Resource Hunter 2.1.1\r\n\r\n## Summary\r\n\r\nThis is a presentation-polish release on top of the success-first source-expansion work.\r\n\r\nIt keeps the expanded runtime intact while making the GitHub / ClawHub first impression clearer and more accurate.\r\n\r\n## Highlighted capabilities\r\n\r\n- structured torrent support through `animetosho`, `dmhy`, and `torlock`\r\n- structured pan/clue support through `dalipan`\r\n- indexed discovery fallback through `search-index:bing` and `search-index:brave`\r\n- layered retrieval with direct / actionable / clue semantics\r\n- stronger title/year validation and evidence fusion\r\n\r\n## Important semantics\r\n\r\n### Dalipan\r\n- anonymous search is confirmed\r\n- runtime emits `dalipan://provider/eu-token`\r\n- current Dalipan results are structured clue outputs, not guaranteed final share URLs\r\n\r\n### Bing / Brave\r\n- public HTML fallback only\r\n- useful for indexed discovery and recall\r\n- still best-effort fallback providers\r\n\r\n## Presentation improvements\r\n\r\n- clearer README hero copy\r\n- tighter ClawHub-facing SKILL description\r\n- cleaner release-facing phrasing around current strengths and limits\r\n- validation snapshot updated for the current synchronized state\r\n\r\n## Validation\r\n\r\n- focused runtime/source regression set: `96 passed, 1 skipped`\r\n- `ruff check skills/resource-hunter`: passed\r\n- GitHub `resource-hunter-ci`: green\r\n\r\n## Follow-up\r\n\r\n- finish PanSearch content-card link extraction before integration\r\n- revisit Dalipan detail/url completion and transport hardening\r\n- continue one-by-one probing for additional public no-API sources\n\nFile v2.1.1:artifacts/SYNC-CHECKLIST-2.1.0.md\n\n# Sync Checklist for 2.1.0\r\n\r\n## Must-sync runtime files\r\n- `src/resource_hunter/_version.py`\r\n- `src/resource_hunter/adapters.py`\r\n- `src/resource_hunter/common.py`\r\n- `src/resource_hunter/core.py`\r\n- `src/resource_hunter/engine.py`\r\n- `src/resource_hunter/intent.py`\r\n- `src/resource_hunter/precision_core.py`\r\n- `src/resource_hunter/ranking.py`\r\n- `src/resource_hunter/rendering.py`\r\n- `src/resource_hunter/retrieval_layers.py`\r\n- `_meta.json`\r\n- `pyproject.toml`\r\n\r\n## Must-sync tests\r\n- `tests/test_source_expansion.py`\r\n- any already-modified existing regression files that belong to the same release wave\r\n\r\n## Must-sync release/docs files\r\n- `README.md`\r\n- `SKILL.md`\r\n- `STATUS.md`\r\n- `NEXT_ACTION.md`\r\n- `references/sources.md`\r\n- `references/architecture.md`\r\n- `references/usage.md`\r\n- `artifacts/RELEASE-NOTES-2.1.0.md`\r\n- `artifacts/live-tests/README.md`\r\n\r\n## Evidence files worth keeping\r\n- `artifacts/live-tests/next-batch/probe-summary.md`\r\n- `artifacts/live-tests/the-merry-widow-1952.json`\r\n- selected probe scripts/raw captures only if you want research traceability in the sync\r\n\r\n## Final gate snapshot\r\n- targeted pytest regression set: passed\r\n- broader runtime/source regression set: `96 passed, 1 skipped`\r\n- `ruff check skills/resource-hunter`: passed\r\n\r\n## Important release caveats\r\n- `dalipan` is currently token-only clue output, not guaranteed final share URL output\r\n- `search-index:bing` and `search-index:brave` are best-effort indexed-discovery fallback providers\r\n- `PanSearch` is not yet integrated\n\nFile v2.1.1:NEXT_ACTION.md\n\n# Next Action\n\nPrepare and sync a source-expansion release of `resource-hunter` with clear capability boundaries.\n\n- Update release-facing docs so they match the current runtime:\n  - source matrix\n  - retrieval layers\n  - indexed-discovery fallback behavior\n  - Dalipan token-only limitation\n- Clean sync boundaries before publishing:\n  - exclude cache/build noise\n  - keep only meaningful live-test evidence\n  - avoid treating temporary probe scripts/pages as primary deliverables\n- Keep the release note honest:\n  - `AnimeTosho`, `DMHY`, `Torlock`, `DaliPan`, `search-index:bing`, and `search-index:brave` are now integrated\n  - `DaliPan` currently provides structured clue records from anonymous search, not guaranteed final share URLs\n  - `Bing` and `Brave` are best-effort indexed-discovery fallbacks\n- After sync, continue the next implementation wave in this order:\n  1. finish PanSearch content-card link extraction\n  2. revisit Dalipan detail/url completion and transport hardening\n  3. continue one-by-one probing for additional public no-API sources\n\nArchive v2.1.0: 122 files, 808848 bytes\n\nFiles: _meta.json (134b), agents/openai.yaml (262b), artifacts/live-tests/bing-attack-on-titan.html (114424b), artifacts/live-tests/brave-attack-on-titan.html (226848b), artifacts/live-tests/candidate-source-probe.json (13774b), artifacts/live-tests/dalipan-app-bundle.js (72121b), artifacts/live-tests/dig_pansearch_dalipan_bundles.py (1219b), artifacts/live-tests/inspect_bing_candidate_queries.py (878b), artifacts/live-tests/inspect_brave_for_lanzou.py (925b), artifacts/live-tests/inspect_brave_links.py (525b), artifacts/live-tests/inspect_dalipan_bundle.py (666b), artifacts/live-tests/inspect_pansearch_bundle.py (605b), artifacts/live-tests/inspect_pansearch_results.py (1208b), artifacts/live-tests/inspect_search_pages.py (1066b), artifacts/live-tests/inspect_the_merry_widow_1952.py (1364b), artifacts/live-tests/inspect_znds_queries.py (893b), artifacts/live-tests/inspect_znds_search.py (638b), artifacts/live-tests/limetorrents-attack-on-titan.html (513b), artifacts/live-tests/limetorrents-home.html (482b), artifacts/live-tests/next-batch/probe-summary.md (1908b), artifacts/live-tests/pansearch-attack-on-titan.html (8772b), artifacts/live-tests/pansearch-search-bundle.js (11179b), artifacts/live-tests/probe_candidate_sources.py (5278b), artifacts/live-tests/probe_lanzou_domains.py (686b), artifacts/live-tests/probe_next_batch.py (901b), artifacts/live-tests/probe_pansearch_dalipan_queries.py (2259b), artifacts/live-tests/probe_pansearch_search.py (747b), artifacts/live-tests/probe_torlock_lime.py (908b), artifacts/live-tests/probe_znds_threads.py (2139b), artifacts/live-tests/README.md (1084b), artifacts/live-tests/the-merry-widow-1952.json (428358b), artifacts/live-tests/torlock-attack-on-titan.html (709804b), artifacts/live-tests/torlock-home.html (627574b), artifacts/RELEASE-NOTES-2.1.0.md (1648b), artifacts/SYNC-CHECKLIST-2.1.0.md (1539b), build/lib/resource_hunter/__init__.py (91b), build/lib/resource_hunter/__main__.py (80b), build/lib/resource_hunter/_version.py (22b), build/lib/resource_hunter/adapters.py (46920b), build/lib/resource_hunter/cache.py (9957b), build/lib/resource_hunter/cli.py (81924b), build/lib/resource_hunter/common.py (14210b), build/lib/resource_hunter/config.py (2306b), build/lib/resource_hunter/core.py (1963b), build/lib/resource_hunter/engine.py (17875b), build/lib/resource_hunter/errors.py (881b), build/lib/resource_hunter/intent.py (12365b), build/lib/resource_hunter/models.py (4983b), build/lib/resource_hunter/packaging_gate.py (72513b), build/lib/resource_hunter/packaging_report.py (74045b), build/lib/resource_hunter/packaging_smoke.py (32333b), build/lib/resource_hunter/packaging_verify.py (35042b), build/lib/resource_hunter/precision_core.py (2625b), build/lib/resource_hunter/ranking.py (18272b), build/lib/resource_hunter/rendering.py (6680b), build/lib/resource_hunter/retrieval_layers.py (9171b), build/lib/resource_hunter/video_core.py (10271b), NEXT_ACTION.md (1061b), pyproject.toml (1213b), README.md (5141b), references/architecture.md (5751b), references/sources.md (3686b), references/usage.md (4355b), scripts/_bootstrap.py (407b), scripts/hunt.py (187b), scripts/packaging_gate.py (265b), scripts/packaging_report.py (271b), scripts/packaging_verify.py (271b), scripts/pansou.py (215b), scripts/resource_hunter/__init__.py (42b), scripts/resource_hunter/cache.py (9810b), scripts/resource_hunter/cli.py (11046b), scripts/resource_hunter/common.py (14446b), scripts/resource_hunter/core.py (49b), scripts/resource_hunter/models.py (3595b), scripts/resource_hunter/precision_core.py (60758b), scripts/resource_hunter/video_core.py (10208b), scripts/test_hunt.py (1102b), scripts/torrent.py (217b), scripts/video.py (213b)\n\nFile v2.1.0:SKILL.md\n\n---\nname: resource-hunter\ndescription: Public resource hunter for movies, TV, anime, music, software, books, pan links, magnets, and public video URLs. Uses layered success-first retrieval, public HTML/RSS/no-API sources, dual text/JSON output, and yt-dlp video workflows without login, API keys, or DRM bypass.\nmetadata: {\"openclaw\":{\"emoji\":\"🔎\"}}\n---\n\n# Resource Hunter\n\nUse this skill when the user wants to:\n\n- Find public pan links, magnets, or torrent results\n- Search movies, TV, anime, music, software, or books\n- Handle a public video URL with `yt-dlp`\n- Get compact chat-ready results or structured JSON\n\nDo not use this skill for:\n\n- Private accounts, cookies, login-only sites, invite-only trackers\n- DRM, captchas, bypassing access controls, or restricted content\n- Legality guarantees or long-term availability guarantees\n- API-key-only search products when a public no-key path is required\n\n## Current retrieval posture\n\nThis skill is currently in a success-first source-expansion phase.\n\n### Active runtime sources\n- Pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n- Torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- Indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n\n### Retrieval layers\n- `direct-structured-pan`\n- `direct-structured-torrent`\n- `community-clue`\n- `indexed-discovery`\n- `authenticated-connector` (reserved)\n\n### Important limitations\n- `search-index:bing` and `search-index:brave` are best-effort HTML fallback discovery providers\n- `dalipan` currently exposes **token-only clue output** from anonymous search; it is not yet a fully direct-ready final-share source in release semantics\n\n## Main entrypoint\n\n```bash\nSKILL_ROOT=\"$(openclaw skills path resource-hunter)\"\nSKILL_DIR=\"$SKILL_ROOT/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\nLegacy entrypoints still work:\n\n```bash\npython3 \"$SKILL_DIR/pansou.py\" \"<query>\"\npython3 \"$SKILL_DIR/torrent.py\" \"<query>\"\npython3 \"$SKILL_DIR/video.py\" info \"<url>\"\n```\n\nStandard package entrypoints are also supported after installation:\n\n```bash\npython -m resource_hunter search \"<query>\"\nresource-hunter search \"<query>\"\n```\n\n## Default routing\n\n- Movie: pan first, torrent as supplement\n- TV: TV-capable torrents first, pan as supplement\n- Anime: `nyaa -> animetosho -> dmhy -> torlock` first, pan as supplement\n- Music, software, book: pan first\n- Public video URL: route directly to `video probe` / `video info`\n- If direct retrieval is weak, indexed discovery may run through DDG/Bing/Brave\n\n## Common commands\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" search \"Adobe Photoshop 2024\" --software --channel pan\npython3 \"$SKILL_DIR/hunt.py\" sources --probe --json\npython3 \"$SKILL_DIR/hunt.py\" doctor --json\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\npython3 \"$SKILL_DIR/hunt.py\" video download \"https://youtu.be/...\" balanced\n```\n\n## Output modes\n\n- Default: short human-readable recommendations with reasons\n- `--json`: stable machine-readable payload with `query`, `intent`, `plan`, `results`, `warnings`, `source_status`, and `meta`\n\n### Current result semantics\n- `direct`: intended to be immediately usable\n- `actionable`: likely useful, but may still need a small amount of follow-up\n- `clue`: structured or community hint that still requires manual follow-up\n\n### Dalipan release note\nWhen the result source is `dalipan`, current runtime output should be interpreted as:\n\n- anonymous-search hit confirmed\n- token-only structured clue preserved in JSON/text output\n- not guaranteed to already be the final share URL\n\n## Notes for agent behavior\n\n- Prefer the main `hunt.py` entrypoint over directly composing lower-level scripts\n- Use `--quick` in chat when the user wants a short answer\n- Use `--json` when another tool or script will consume the output\n- If the user provides a public video URL, do not search pan/torrent first; go straight to the video pipeline\n- If the user explicitly wants only pan or only torrent, set `--channel pan` or `--channel torrent`\n- When discussing source support, distinguish:\n  - structured direct sources\n  - clue/community sources\n  - indexed-discovery fallback providers\n- Do not oversell Dalipan as a fully direct final-link source in the current release\n- Do not oversell Bing/Brave as stable structured providers; they are public HTML discovery fallback only\n\n## Validation snapshot\n\n- Local regression set used for current sync-prep state:\n  - `95 passed, 1 skipped`\n  - `ruff` all green\n\n## References\n\n- Detailed usage: `references/usage.md`\n- Internal structure and JSON schema: `references/architecture.md`\n- Source coverage and routing: `references/sources.md`\n\nFile v2.1.0:artifacts/live-tests/README.md\n\n# Live Test Artifacts\r\n\r\nThis directory contains probe-time evidence and temporary research material collected during source expansion.\r\n\r\n## What should be considered durable evidence\r\n\r\nKeep only files that help explain or reproduce an important retrieval decision, for example:\r\n\r\n- `next-batch/probe-summary.md`\r\n- `the-merry-widow-1952.json`\r\n- `inspect_the_merry_widow_1952.py`\r\n- selected HTML/JS captures that document why a source was or was not integrated\r\n\r\n## What should be considered temporary probe material\r\n\r\nMany files here are one-off probe scripts or raw page captures used during investigation.\r\nThey are useful for local research, but they are **not** the primary public contract of the skill.\r\n\r\nExamples include:\r\n- ad hoc probe scripts\r\n- raw search-result page captures\r\n- downloaded frontend bundles used only for reverse engineering\r\n\r\n## Sync guidance\r\n\r\nBefore external sync/review, treat this directory as:\r\n- evidence/supporting material\r\n- not the main runtime deliverable\r\n- something that may be trimmed further if a cleaner sync package is needed\n\nFile v2.1.0:README.md\n\n# Resource Hunter\n\nInstallable Python package and OpenClaw/ClawHub skill for public pan, torrent, magnet, and public video URL discovery.\n\n## What it does now\n\n`resource-hunter` is currently in a success-first retrieval phase focused on real public-source usefulness inside `skills/resource-hunter`.\n\n### Currently integrated source expansion\n\n#### Structured pan and clue sources\n- `2fun`\n- `dalipan`\n- `hunhepan`\n- `pansou.vip`\n- `tieba`\n\n#### Structured torrent sources\n- `nyaa`\n- `animetosho`\n- `dmhy`\n- `eztv`\n- `tpb`\n- `torlock`\n- `yts`\n- `1337x`\n\n#### Indexed discovery fallback\n- `search-index:ddg`\n- `search-index:bing`\n- `search-index:brave`\n\n### Retrieval layers\n- `direct-structured-pan`\n- `direct-structured-torrent`\n- `community-clue`\n- `indexed-discovery`\n- `authenticated-connector` (reserved)\n\n## Important release notes\n\n- `AnimeTosho`, `DMHY`, `Torlock`, `DaliPan`, `search-index:bing`, and `search-index:brave` are now integrated in the runtime path\n- `search-index:bing` and `search-index:brave` are best-effort fallback discovery providers, not the same stability class as structured direct adapters\n- `DaliPan` currently exposes **structured clue records** from anonymous search, not guaranteed final share URLs\n  - anonymous search is confirmed\n  - anonymous detail/url resolution is still incomplete\n  - runtime currently emits `dalipan://provider/eu-token` placeholders and marks them as clue/follow-up style output\n\n## Validation snapshot\n\n- `E:/DevTools/python/python.exe -m pytest tests/test_intent.py tests/test_results.py tests/test_precision.py tests/test_source_expansion.py tests/test_cli.py tests/test_runtime.py -q`\n  - `95 passed, 1 skipped`\n- `E:/DevTools/python/Scripts/ruff.exe check src/resource_hunter/adapters.py src/resource_hunter/intent.py src/resource_hunter/engine.py src/resource_hunter/retrieval_layers.py src/resource_hunter/core.py src/resource_hunter/precision_core.py src/resource_hunter/common.py tests/test_source_expansion.py`\n  - `All checks passed!`\n\n## Main entrypoints\n\n- Standard entrypoints: `resource-hunter`, `python -m resource_hunter`\n- Source checkout wrappers: `scripts/hunt.py`, `scripts/packaging_report.py`, `scripts/packaging_gate.py`, `scripts/packaging_verify.py`\n- Legacy compatibility wrappers: `scripts/pansou.py`, `scripts/torrent.py`, `scripts/video.py`\n\n## Common commands\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py doctor --json\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\n```\n\n## Search behavior summary\n\n- Movie: pan first, torrents as supplement\n- TV: TV-capable torrents first, pan as supplement\n- Anime: `nyaa -> animetosho -> dmhy -> torlock` first, pan as supplement\n- Music/software/book/general: pan first\n- If direct retrieval is weak, indexed discovery may run through DDG/Bing/Brave\n\n## Result semantics\n\nSearch results are ranked and validated into practical buckets:\n\n- `direct`\n- `actionable`\n- `clue`\n\nThis distinction matters for current source coverage:\n\n- direct torrent sources often return immediately usable magnet results\n- public thread and indexed-discovery sources may return clue-like results\n- Dalipan is currently intentionally treated as a clue-style source in release semantics because final anonymous URL resolution is not yet complete\n\n## Current known limits\n\n- Public HTML/RSS sources may throttle, block, or change layout without notice\n- Indexed discovery may vary by region or anti-bot behavior\n- Same-title different-year film disambiguation is improved but still not perfect\n- `The Merry Widow 1952` remains a known hard live case\n- `PanSearch` has shown promising real payloads but is not yet integrated because content-card link extraction is still unfinished\n\n## Packaging / installability tooling\n\nPackaging, report, gate, and verify flows remain available for installability and CI workflows, for example:\n\n```bash\npython3 scripts/hunt.py doctor --json --require-packaging-ready\npython3 scripts/hunt.py packaging-smoke --json\npython3 scripts/hunt.py packaging-baseline --project-root /path/to/repo --python auto --bootstrap-build-deps --output-dir artifacts/packaging-baseline --require-expected-outcomes\npython3 scripts/hunt.py packaging-baseline-report artifacts/packaging-baseline/packaging-baseline.json\npython3 scripts/packaging_gate.py artifacts/downloaded-gh-artifacts --json\npython3 scripts/packaging_verify.py --github-run latest --output-dir artifacts/packaging-baseline-gh-verify --require-artifact-count 6\n```\n\n## References\n\n- Skill-focused usage: [SKILL.md](./SKILL.md)\n- Detailed source matrix: [references/sources.md](./references/sources.md)\n- Internal architecture: [references/architecture.md](./references/architecture.md)\n- Usage notes: [references/usage.md](./references/usage.md)\n\nFile v2.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"2.1.0\",\n  \"publishedAt\": 1774315431092\n}\n\nFile v2.1.0:references/architecture.md\n\n# Resource Hunter v2 Architecture\n\n## Layout\n\n- `src/resource_hunter/`: installable Python package\n- `src/resource_hunter/config.py`: path and environment resolution\n- `src/resource_hunter/errors.py`: shared error types\n- `src/resource_hunter/intent.py`: intent parsing, alias enrichment, query graphs, source-aware budgets\n- `src/resource_hunter/adapters.py`: source adapters and runtime profiles\n- `src/resource_hunter/ranking.py`: ranking, validation, evidence fusion, and success-first ordering\n- `src/resource_hunter/rendering.py`: text and JSON rendering exports\n- `src/resource_hunter/retrieval_layers.py`: layered retrieval model and indexed discovery fallback\n- `src/resource_hunter/engine.py`: main search engine\n- `src/resource_hunter/precision_core.py`: compatibility implementation layer for the current v2 core\n- `src/resource_hunter/video_core.py`: yt-dlp workflow and manifest handling\n- `src/resource_hunter/cli.py`: unified CLI surface\n- `scripts/hunt.py`: primary legacy CLI wrapper\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Resolve aliases for movie-like Chinese queries when applicable\n3. Build a `SearchPlan`\n4. Expand source-aware query graphs and budgets\n5. Route to pan/torrent pipelines\n6. Query registered direct sources\n7. If no confident result is found, run indexed discovery fallback\n8. Normalize all results into `SearchResult`\n9. Deduplicate\n10. Score, validate, and fuse corroborating evidence\n11. Render text output or JSON\n12. Cache response and source health\n\n## Retrieval model\n\n### Retrieval layers\n- `direct-structured-pan`\n  - `2fun`, `dalipan`, `hunhepan`, `pansou.vip`\n- `direct-structured-torrent`\n  - `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- `community-clue`\n  - `tieba`\n- `indexed-discovery`\n  - `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- `authenticated-connector`\n  - reserved\n\n### Layer roles\n- `direct`: sources intended to produce immediately usable or near-usable structured results\n- `clue`: sources intended to produce thread-level or follow-up hints\n- `discovery`: search-engine fallback used when direct retrieval does not produce confident matches\n- `auth`: reserved for future authenticated connectors\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Important release semantics\n\n- `AnimeTosho`, `DMHY`, and most torrent adapters produce direct magnet-ready results\n- `Bing` and `Brave` are indexed-discovery fallback providers, not the same stability class as structured direct sources\n- `DaliPan` is currently a **structured token-only clue source** in runtime semantics:\n  - anonymous search is confirmed via the public search API\n  - final anonymous detail/url resolution is still incomplete\n  - runtime therefore exposes `dalipan://provider/eu-token` placeholders and marks them as clue/follow-up results rather than guaranteed final share URLs\n\n## Cache\n\nSQLite database stores:\n\n- `search_cache`: short-TTL normalized responses\n- `source_status`: rolling source health results and circuit-breaker input\n- `video_manifest`: recent download artifacts\n\nThe circuit breaker skips sources that have failed repeatedly in the recent cooldown window.\n\n## JSON schema\n\nTop level search payload:\n\n```json\n{\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}\n```\n\n### Important search `meta` fields\n\n- `query_attempts`\n- `layer_attempts`\n- `query_budgets`\n- `source_query_plan`\n- `retrieval_layers`\n- `best_direct_results`\n- `best_actionable_results`\n- `best_clues`\n- `success_estimate`\n- `timings_ms`\n\n### Search result notes\n\nEach `SearchResult` can carry:\n\n- `validation_status`\n- `actionability`\n- `validation_signals`\n- `corroboration_count`\n- `supporting_results`\n- `raw`\n\nThe runtime uses these fields to separate:\n\n- direct matches\n- actionable but not fully direct matches\n- clue-only results that still require manual follow-up\n\n### Dalipan-specific note\n\nDalipan results currently preserve follow-up data in `raw`, including:\n\n- `dalipan_id`\n- `dalipan_eu`\n- `filelist`\n- `delivery=token_only`\n- `retrieval_role=clue`\n- `requires_follow_up=true`\n\nThis makes current behavior explicit to downstream consumers.\n\n## Top level doctor payload\n\n```json\n{\n  \"version\": \"...\",\n  \"python\": \"...\",\n  \"packaging_python\": \"...\",\n  \"packaging_python_source\": \"current\",\n  \"packaging_python_candidates\": [],\n  \"packaging_python_auto_selected\": false,\n  \"stdout_encoding\": \"...\",\n  \"cache_db\": \"...\",\n  \"storage_root\": \"...\",\n  \"project_root\": \"...\",\n  \"project_root_source\": \"discovered\",\n  \"binaries\": {},\n  \"packaging\": {\n    \"project_root\": \"...\",\n    \"project_root_source\": \"discovered\",\n    \"pip\": true,\n    \"venv\": true,\n    \"setuptools_build_meta\": true,\n    \"wheel\": true,\n    \"wheel_build_ready\": true,\n    \"python_module_smoke_ready\": true,\n    \"console_script_smoke_ready\": true,\n    \"full_packaging_smoke_ready\": true,\n    \"blockers\": [],\n    \"optional_gaps\": [],\n    \"console_script_strategy\": \"venv\"\n  },\n  \"recent_sources\": {},\n  \"recent_manifests\": [],\n  \"advice\": []\n}\n```\n\n## Packaging / installability notes\n\nPackaging, report, gate, and verify flows remain part of the project and are still available, but they are not the focus of the current sync-prep wave. The current sync-prep effort is mainly about making the retrieval/runtime state, source matrix, and release limitations match reality.\n\nFile v2.1.0:references/sources.md\n\n# Resource Hunter Sources\n\n## Current source roles\n\n### Direct structured pan\n- `2fun`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: primary structured pan aggregator\n- `dalipan`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: API-backed structured search source\n  - Current limitation: runtime currently exposes Dalipan as **token-only clue output** (`dalipan://provider/eu-token`) because anonymous `detail/url` resolution is not fully open yet\n- `hunhepan`\n  - Channel: `pan`\n  - Priority: `2`\n  - Role: fallback pan source\n- `pansou.vip`\n  - Channel: `pan`\n  - Priority: `3`\n  - Role: extra fallback pan source\n\n### Community clue\n- `tieba`\n  - Channel: `pan`\n  - Priority: `4`\n  - Role: public thread clue mining for pan links, passwords, magnets, and manual follow-up hints\n\n### Direct structured torrent\n- `nyaa`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for anime\n- `animetosho`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Role: RSS-style torrent/magnet discovery, especially useful for anime\n- `dmhy`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Role: public HTML torrent/magnet source, especially useful for anime and Chinese-tagged releases\n- `eztv`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for TV episodes\n- `tpb`\n  - Channel: `torrent`\n  - Priority: `2`\n  - General fallback\n- `torlock`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Role: HTML search + detail magnet extraction fallback\n- `yts`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Best for movies\n- `1337x`\n  - Channel: `torrent`\n  - Priority: `3`\n  - General supplementary source\n\n### Indexed discovery fallback\n- `search-index:ddg`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public DuckDuckGo HTML\n- `search-index:bing`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public Bing HTML\n  - Stability note: best-effort only; HTML structure and region behavior may drift\n- `search-index:brave`\n  - Channel: `mixed`\n  - Role: indexed discovery fallback via public Brave Search HTML\n  - Stability note: best-effort only; HTML structure and rate limits may drift\n\n## Retrieval layers\n\n- `direct-structured-pan`\n  - Sources: `2fun -> dalipan -> hunhepan -> pansou.vip`\n  - Goal: first-pass structured pan results\n- `direct-structured-torrent`\n  - Sources: `nyaa -> animetosho -> dmhy -> eztv -> tpb -> torlock -> yts -> 1337x`\n  - Goal: first-pass structured torrent and magnet results\n- `community-clue`\n  - Sources: `tieba`\n  - Goal: public-thread clue extraction and follow-up hints\n- `indexed-discovery`\n  - Sources: `search-index:ddg -> search-index:bing -> search-index:brave`\n  - Goal: best-effort fallback when structured retrieval does not surface a confident result\n- `authenticated-connector`\n  - Reserved for future work\n\n## Default routing matrix\n\n- Movie: prefer pan sources first, then movie/general torrent sources\n- TV: prefer TV-capable torrent sources first, then pan supplement\n- Anime: prefer `nyaa -> animetosho -> dmhy -> torlock`, then pan supplement\n- Music/software/book/general: pan sources first, torrent second\n- Public video URL: no pan/torrent search; route directly to the video workflow\n\n## Health and caveats\n\n- Every active search stores `source_status` snapshots for direct sources\n- `sources --probe` actively tests registered pan/torrent adapters\n- Indexed discovery providers are fallback providers and are not equivalent to stable structured direct-source guarantees\n- External public sources may throttle, change formats, break without notice, or vary by region\n- `dalipan` is currently a release with an explicit limitation: anonymous search works, but final detail/url resolution is not yet fully anonymous in current runtime\n\nFile v2.1.0:references/usage.md\n\n# Resource Hunter Usage\n\n## Search\n\nMain command:\n\n```bash\npython3 scripts/hunt.py search \"<query>\" [options]\n```\n\nKey options:\n\n- `--kind movie|tv|anime|music|software|book|general`\n- `--channel both|pan|torrent`\n- `--quick`\n- `--sub`\n- `--4k`\n- `--json`\n- `--page`\n- `--limit`\n\nExamples:\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"三体 epub\" --book --channel pan\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\n```\n\n## Current retrieval behavior\n\n- Movie: pan first, torrents as supplement\n- TV: TV-capable torrents first, pan as supplement\n- Anime: prefer `nyaa -> animetosho -> dmhy -> torlock`, then pan sources\n- Music/software/book/general: pan first\n- When direct retrieval does not surface a confident result, indexed discovery fallback may run through `search-index:ddg`, `search-index:bing`, and `search-index:brave`\n\n## Important result semantics\n\n- `direct`: intended to be immediately usable\n- `actionable`: likely useful but may still need small follow-up\n- `clue`: pointer or structured hint that still requires manual follow-up\n\n### Dalipan-specific note\n\nDalipan is currently integrated as a **public anonymous search clue source**.\n\n- Anonymous search is confirmed via the public search API\n- Final anonymous `detail/url` resolution is still incomplete\n- Runtime currently outputs Dalipan records as `dalipan://provider/eu-token`\n- Treat those as structured clue records, not guaranteed final share URLs\n\n### Bing / Brave note\n\n`search-index:bing` and `search-index:brave` are best-effort indexed-discovery fallbacks.\n\n- They are useful for recall\n- They are not the same stability class as structured direct adapters\n- HTML layout, throttling, or regional differences may affect them\n\n## Video\n\nPublic video URLs go through the `video` subcommands:\n\n```bash\npython3 scripts/hunt.py video info \"https://youtu.be/...\"\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\npython3 scripts/hunt.py video download \"https://youtu.be/...\" best\npython3 scripts/hunt.py video download \"https://youtu.be/...\" balanced\npython3 scripts/hunt.py video download \"https://youtu.be/...\" small\npython3 scripts/hunt.py video download \"https://youtu.be/...\" audio\npython3 scripts/hunt.py video subtitle \"https://youtu.be/...\" --lang zh-Hans,zh,en\n```\n\n## Legacy wrappers\n\nThese remain available for one compatibility cycle:\n\n```bash\npython3 scripts/pansou.py \"Oppenheimer 2023\" --max 5\npython3 scripts/torrent.py \"Breaking Bad S01E01\" --tv --limit 8\npython3 scripts/video.py info \"https://youtu.be/...\"\n```\n\n## Source and health inspection\n\n```bash\npython3 scripts/hunt.py sources\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py doctor --json\n```\n\nNotes:\n\n- `sources --probe` actively probes registered pan/torrent adapters\n- indexed discovery providers are shown through retrieval-layer metadata, but they should still be understood as fallback providers\n\n## Packaging smoke\n\nPackaging/report/gate/verify commands are still supported for installability and CI workflows.\n\nCommon examples:\n\n```bash\npython3 scripts/hunt.py doctor --json --require-packaging-ready\npython3 scripts/hunt.py packaging-smoke --json\npython3 scripts/hunt.py packaging-baseline --project-root /path/to/repo --python auto --bootstrap-build-deps --output-dir artifacts/packaging-baseline --require-expected-outcomes\npython3 scripts/hunt.py packaging-baseline-report artifacts/packaging-baseline/packaging-baseline.json\npython3 scripts/packaging_report.py --json artifacts/downloaded-gh-artifacts\npython3 scripts/packaging_gate.py artifacts/downloaded-gh-artifacts --json\npython3 scripts/packaging_verify.py --github-run latest --output-dir artifacts/packaging-baseline-gh-verify --require-artifact-count 6\n```\n\n## Operational notes\n\n- The engine caches recent normalized responses and source health in SQLite\n- Public HTML/RSS sources may throttle, block, or change structure without notice\n- Hard cases such as same-title different-year films are improved but not fully solved yet\n- `The Merry Widow 1952` remains a known difficult live case\n\nFile v2.1.0:artifacts/live-tests/next-batch/probe-summary.md\n\n# Next Batch Probe Summary\r\n\r\n## Added to runtime so far\r\n- AnimeTosho\r\n- DMHY\r\n- Torlock\r\n- DaliPan\r\n- search-index:bing\r\n- search-index:brave\r\n\r\n## This wave findings\r\n\r\n### Newly integrated this wave\r\n- DaliPan\r\n  - dug from Dalipan frontend bundle\r\n  - confirmed public search API shape at `https://api.dalipan.com/api/v1/pan/search`\r\n  - requires unverified SSL context in current environment because upstream certificate is expired\r\n  - detail endpoint is still login-gated / incomplete for anonymous use, so runtime integration currently uses public search payload as actionable clue/direct placeholder records (`dalipan://provider/eu-token`), preserving dalipan ids/tokens in raw metadata for future follow-up\r\n\r\n### Probed and not integrated this wave\r\n- ZNDS: reachable, but current search entry keeps returning generic site/distribution pages instead of useful resource/forum clues.\r\n- quark.so: homepage timed out in current environment.\r\n- EXT.to: 403 Forbidden.\r\n- Zooqle: returns error JSON (`{\"status\":\"error\",\"message\":\"Hatalı Deneme\"}`).\r\n- SolidTorrents: SSL EOF.\r\n- TorrentGalaxy: SSL EOF.\r\n- LimeTorrents: JS redirect works, redirected request currently returns 502.\r\n- Lanzou family domains: homepages reachable, but no direct public HTML search endpoint found this wave.\r\n- iLanzou: reachable, but JS SPA shell only.\r\n- PanSearch: page and `_next/data` endpoint reachable. Real results appear when using `keyword=` instead of `q=`, but current runtime output is rendered content cards without stable canonical share fields, so not integrated yet.\r\n- Dalipan detail endpoint (`/api/v1/pan/detail`) appears login-gated for anonymous access.\r\n- Dalipan url endpoint (`/api/v1/pan/url`) currently returns `-1` for anonymous probes.\r\n\r\n## Rule followed\r\n- tested one by one\r\n- only integrate sources that work end-to-end enough for current environment\r\n- do not add login/API-key sources\n\nFile v2.1.0:artifacts/RELEASE-NOTES-2.1.0.md\n\n# Resource Hunter 2.1.0\r\n\r\n## Summary\r\n\r\nThis release prepares `skills/resource-hunter` for sync after a success-first source-expansion wave focused on real public no-API retrieval.\r\n\r\n## Added / integrated\r\n\r\n### Structured torrent sources\r\n- `animetosho`\r\n- `dmhy`\r\n- `torlock`\r\n\r\n### Structured pan / clue source\r\n- `dalipan`\r\n\r\n### Indexed discovery fallback\r\n- `search-index:bing`\r\n- `search-index:brave`\r\n\r\n## Retrieval changes\r\n\r\n- layered retrieval is now explicit in runtime metadata\r\n- query planning, source-aware budgets, validation, and evidence fusion are active\r\n- indexed discovery fallback is part of the search flow when direct retrieval is weak\r\n- wrong-year same-title results are downgraded more aggressively\r\n\r\n## Important semantics and limits\r\n\r\n### Dalipan\r\n- anonymous search is confirmed through the public search API\r\n- runtime currently emits `dalipan://provider/eu-token` placeholders\r\n- these are structured clue records, not guaranteed final share URLs\r\n- anonymous `detail/url` completion is still not fully open in current runtime behavior\r\n\r\n### Bing / Brave\r\n- public HTML search fallback only\r\n- best-effort discovery providers\r\n- subject to layout drift, throttling, and regional variation\r\n\r\n### Torlock\r\n- detail-page fetches are now isolated so a single broken detail page does not fail the whole source batch\r\n\r\n## Validation\r\n\r\n- `95 passed, 1 skipped`\r\n- `ruff` all green\r\n\r\n## Known follow-up items\r\n\r\n- finish PanSearch content-card link extraction before integration\r\n- revisit Dalipan detail/url completion and transport hardening\r\n- continue one-by-one probing for additional public no-API sources\n\nFile v2.1.0:artifacts/SYNC-CHECKLIST-2.1.0.md\n\n# Sync Checklist for 2.1.0\r\n\r\n## Must-sync runtime files\r\n- `src/resource_hunter/_version.py`\r\n- `src/resource_hunter/adapters.py`\r\n- `src/resource_hunter/common.py`\r\n- `src/resource_hunter/core.py`\r\n- `src/resource_hunter/engine.py`\r\n- `src/resource_hunter/intent.py`\r\n- `src/resource_hunter/precision_core.py`\r\n- `src/resource_hunter/ranking.py`\r\n- `src/resource_hunter/rendering.py`\r\n- `src/resource_hunter/retrieval_layers.py`\r\n- `_meta.json`\r\n- `pyproject.toml`\r\n\r\n## Must-sync tests\r\n- `tests/test_source_expansion.py`\r\n- any already-modified existing regression files that belong to the same release wave\r\n\r\n## Must-sync release/docs files\r\n- `README.md`\r\n- `SKILL.md`\r\n- `STATUS.md`\r\n- `NEXT_ACTION.md`\r\n- `references/sources.md`\r\n- `references/architecture.md`\r\n- `references/usage.md`\r\n- `artifacts/RELEASE-NOTES-2.1.0.md`\r\n- `artifacts/live-tests/README.md`\r\n\r\n## Evidence files worth keeping\r\n- `artifacts/live-tests/next-batch/probe-summary.md`\r\n- `artifacts/live-tests/the-merry-widow-1952.json`\r\n- selected probe scripts/raw captures only if you want research traceability in the sync\r\n\r\n## Final gate snapshot\r\n- targeted pytest regression set: passed\r\n- broader runtime/source regression set: `96 passed, 1 skipped`\r\n- `ruff check skills/resource-hunter`: passed\r\n\r\n## Important release caveats\r\n- `dalipan` is currently token-only clue output, not guaranteed final share URL output\r\n- `search-index:bing` and `search-index:brave` are best-effort indexed-discovery fallback providers\r\n- `PanSearch` is not yet integrated\n\nFile v2.1.0:NEXT_ACTION.md\n\n# Next Action\n\nPrepare and sync a source-expansion release of `resource-hunter` with clear capability boundaries.\n\n- Update release-facing docs so they match the current runtime:\n  - source matrix\n  - retrieval layers\n  - indexed-discovery fallback behavior\n  - Dalipan token-only limitation\n- Clean sync boundaries before publishing:\n  - exclude cache/build noise\n  - keep only meaningful live-test evidence\n  - avoid treating temporary probe scripts/pages as primary deliverables\n- Keep the release note honest:\n  - `AnimeTosho`, `DMHY`, `Torlock`, `DaliPan`, `search-index:bing`, and `search-index:brave` are now integrated\n  - `DaliPan` currently provides structured clue records from anonymous search, not guaranteed final share URLs\n  - `Bing` and `Brave` are best-effort indexed-discovery fallbacks\n- After sync, continue the next implementation wave in this order:\n  1. finish PanSearch content-card link extraction\n  2. revisit Dalipan detail/url completion and transport hardening\n  3. continue one-by-one probing for additional public no-API sources\n\nFile v2.1.0:STATUS.md\n\n# Status\n\n- Date: 2026-03-23\n- Focus: `skills/resource-hunter` is being prepared for a syncable success-first retrieval release centered on real source expansion, not monorepo-wide cleanup.\n- Current retrieval posture:\n  - success-first layered retrieval is active\n  - query graph planning, source-aware budgets, validation, and evidence fusion are active\n  - indexed-discovery fallback is active through `search-index:ddg`, `search-index:bing`, and `search-index:brave`\n- Newly integrated and locally validated sources:\n  - `animetosho`\n  - `dmhy`\n  - `torlock`\n  - `dalipan`\n  - `search-index:bing`\n  - `search-index:brave`\n- Current active/result-producing source set:\n  - pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n  - torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n  - indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- Retrieval layers:\n  - `direct-structured-pan`\n  - `direct-structured-torrent`\n  - `community-clue`\n  - `indexed-discovery`\n  - `authenticated-connector` (reserved)\n- Important release boundary:\n  - `dalipan` is currently **search-public but token-only** in runtime output\n  - anonymous search via `https://api.dalipan.com/api/v1/pan/search` is confirmed\n  - `detail/url` is still not fully usable anonymously\n  - runtime therefore exposes Dalipan results as structured clue records (`dalipan://provider/eu-token`), not as guaranteed final share URLs\n  - `search-index:bing` and `search-index:brave` are best-effort indexed discovery fallbacks, not the same stability class as structured direct sources\n- Code changes in the current expansion wave:\n  - source/runtime integration across `src/resource_hunter/adapters.py`, `engine.py`, `intent.py`, `retrieval_layers.py`, `common.py`, `core.py`, and `precision_core.py`\n  - ranking/validation changes to downgrade year-conflict results and mark Dalipan token-only records as clue-only\n  - Torlock detail-fetch hardening so a single broken detail page does not fail the whole source batch\n- Validation:\n  - `E:/DevTools/python/python.exe -m pytest tests/test_intent.py tests/test_results.py tests/test_precision.py tests/test_source_expansion.py tests/test_cli.py tests/test_runtime.py -q` -> `95 passed, 1 skipped`\n  - `E:/DevTools/python/Scripts/ruff.exe check src/resource_hunter/adapters.py src/resource_hunter/intent.py src/resource_hunter/engine.py src/resource_hunter/retrieval_layers.py src/resource_hunter/core.py src/resource_hunter/precision_core.py src/resource_hunter/common.py tests/test_source_expansion.py` -> `All checks passed!`\n- Known limits still open:\n  - `The Merry Widow 1952` remains improved but not solved end-to-end\n  - `dalipan` still needs a future follow-up on detail/url completion and transport hardening\n  - `PanSearch` has real results when queried correctly, but still needs content-card link extraction before runtime integration\n  - public HTML discovery sources remain subject to blocking, layout drift, and rate limits\n- Saturation:\n  - source expansion is now meaningful enough to prepare a syncable version\n  - the remaining work before sync is mainly release hygiene: document alignment, sync-boundary cleanup, and explicit release-note wording for current limitations\n\nArchive v3.0.1: 32 files, 55036 bytes\n\nFiles: _meta.json (134b), agents/openai.yaml (368b), references/architecture.md (2914b), references/sources.md (1964b), references/usage.md (2803b), scripts/hunt.py (277b), scripts/pansou.py (305b), scripts/resource_hunter/__init__.py (79b), scripts/resource_hunter/benchmark.py (16385b), scripts/resource_hunter/cache.py (10877b), scripts/resource_hunter/cli.py (11224b), scripts/resource_hunter/common.py (17755b), scripts/resource_hunter/core.py (1444b), scripts/resource_hunter/engine.py (12878b), scripts/resource_hunter/intent.py (15713b), scripts/resource_hunter/models.py (4405b), scripts/resource_hunter/precision_core.py (39b), scripts/resource_hunter/ranking.py (19395b), scripts/resource_hunter/rendering.py (8651b), scripts/resource_hunter/sources.py (22138b), scripts/resource_hunter/video_core.py (12049b), scripts/test_hunt.py (1178b), scripts/torrent.py (307b), scripts/video.py (303b), SKILL.md (4026b), tests/conftest.py (214b), tests/test_benchmark.py (1521b), tests/test_cli.py (2063b), tests/test_intent.py (1378b), tests/test_precision.py (11071b), tests/test_results.py (1353b), tests/test_video.py (2342b)\n\nFile v3.0.1:SKILL.md\n\n---\nname: resource-hunter\ndescription: Find the best public download route for movies, TV, anime, music, software, books, pan links, magnets, and public video URLs. Uses high-recall routing, quality-aware ranking, source health, and stable JSON output without login, cookies, or API keys.\n---\n\n# Resource Hunter\n\nPublic resource discovery for agents.  \nUse it to find the best public download route, not to bypass access controls.\n\n## Use this skill when the user wants to\n\n- Find public pan links, torrent results, or magnets\n- Compare releases for quality, confidence, and source health\n- Search movies, TV, anime, music, software, or books\n- Inspect a public video URL and optionally download it if the machine is ready\n- Get compact chat output or structured JSON for downstream tools\n\n## Do not use this skill for\n\n- Login-only sites, private accounts, cookies, invite-only trackers, or private libraries\n- DRM, captchas, bypassing access controls, or restricted content\n- Guarantees about legality, permanence, or long-term availability\n\n## What this skill gives the agent\n\n- High-recall multi-source search across pan and torrent channels\n- Tiered ranking: `top`, `related`, and suppressed risky recall\n- Quality-aware sorting with title-family matching, season/episode checks, and release parsing\n- Live source health, degraded-source penalties, and circuit breaking\n- JSON v3 output with `canonical_identity`, `evidence`, `source_health`, and `upstream_source`\n\n## Main entrypoint\n\n```bash\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\n## Quick start\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"Jay Chou Fantasy lossless\" --music\npython3 \"$SKILL_DIR/hunt.py\" search \"Adobe Photoshop 2024\" --software --channel pan\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\npython3 \"$SKILL_DIR/hunt.py\" benchmark\n```\n\n## Default routing\n\n- Movie: pan first, torrent second\n- TV: EZTV/TPB first, then pan supplements\n- Anime: Nyaa first, then pan supplements\n- Music, software, book: pan first, torrent fallback\n- Public video URL: skip search and route directly to `video probe` / `video info`\n\n## Output contract\n\n- Default text: only `top` and `related` results are shown\n- Risky recall stays suppressed in text and is still available in JSON\n- `--json`: JSON v3 with `schema_version`, `query`, `intent`, `plan`, `results`, `suppressed`, `warnings`, `source_status`, and `meta`\n- `--json-version 2`: temporary compatibility mode for older consumers\n\n## Runtime requirements\n\n- Search, ranking, and source diagnostics: no API keys required\n- Public video inspect/probe: `yt-dlp` optional but recommended\n- Public video download/subtitle: requires both `yt-dlp` and `ffmpeg`\n\n## Agent rules\n\n- Prefer the main `hunt.py` entrypoint over lower-level wrappers\n- Use `--quick` when the user wants a short answer\n- Use `--json` when another tool or script will consume the output\n- If the input is a public video URL, do not search pan/torrent first; go straight to the video pipeline\n- If the user asks to actually download a public video URL, first verify `yt-dlp` and `ffmpeg` are installed; otherwise return the route plus the missing dependency requirement\n- If the user wants only pan or only torrent, set `--channel pan` or `--channel torrent`\n- Prefer benchmark-backed changes over heuristic tweaks without regression coverage\n\n## Legacy compatibility\n\nLegacy wrappers still exist for one compatibility cycle:\n\n```bash\npython3 \"$SKILL_DIR/pansou.py\" \"<query>\"\npython3 \"$SKILL_DIR/torrent.py\" \"<query>\"\npython3 \"$SKILL_DIR/video.py\" info \"<url>\"\n```\n\n## References\n\n- Detailed usage: `references/usage.md`\n- Internal architecture and JSON schema: `references/architecture.md`\n- Source coverage and routing notes: `references/sources.md`\n\nFile v3.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"3.0.1\",\n  \"publishedAt\": 1773942908838\n}\n\nFile v3.0.1:references/architecture.md\n\n# Resource Hunter v3 Architecture\n\n## Layout\n\n- `scripts/hunt.py`: primary CLI entrypoint\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n- `scripts/resource_hunter/models.py`: public data models\n- `scripts/resource_hunter/common.py`: parsing, normalization, release tags, and filesystem helpers\n- `scripts/resource_hunter/cache.py`: SQLite-backed cache and manifest storage\n- `scripts/resource_hunter/intent.py`: query parsing, alias resolution, and query-family generation\n- `scripts/resource_hunter/sources.py`: source adapters, HTTP client, capability profiles\n- `scripts/resource_hunter/ranking.py`: identity, scoring, tiers, dedupe, diversity reorder\n- `scripts/resource_hunter/rendering.py`: text renderers and compatibility transforms\n- `scripts/resource_hunter/engine.py`: orchestration, cache integration, source health, benchmark entrypoint\n- `scripts/resource_hunter/benchmark.py`: offline deterministic benchmark suite\n- `scripts/resource_hunter/video_core.py`: deterministic yt-dlp workflow and manifest handling\n- `scripts/resource_hunter/cli.py`: unified CLI surface\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Resolve public alias metadata when eligible\n3. Build a category-specific `SearchPlan`\n4. Route to pan/torrent/video pipeline\n5. Query source adapters with fixed query families and per-source query budgets\n6. Normalize all results into `SearchResult`\n7. Score, tier, deduplicate, and diversify\n8. Render text output or JSON\n9. Cache response, source health, and video manifests\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Cache\n\nSQLite database stores:\n\n- `search_cache`: short-TTL normalized responses\n- `source_status`: rolling source health results, degraded reasons, and recovery state\n- `video_manifest`: deterministic download/subtitle artifacts keyed by task id\n- `alias_resolution`: cached public alias expansion for multilingual movie queries\n\nThe circuit breaker skips sources that have failed repeatedly in the recent cooldown window.\n\n## JSON schema\n\nTop level search payload:\n\n```json\n{\n  \"schema_version\": \"3\",\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"suppressed\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}\n```\n\nTop level video payload:\n\n```json\n{\n  \"url\": \"...\",\n  \"platform\": \"...\",\n  \"title\": \"...\",\n  \"duration\": 0,\n  \"formats\": [],\n  \"recommended\": [],\n  \"artifacts\": [],\n  \"meta\": {}\n}\n```\n\n## Benchmark\n\n- `benchmark` runs 180 offline search fixtures and 20 video fixtures\n- gates: overall Top1/Top3, per-kind Top1/Top3, high-confidence error rate, adversarial top-failure rate, video URL classification\n\nFile v3.0.1:references/sources.md\n\n# Resource Hunter v3 Sources\n\n## Pan sources\n\n- `2fun`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: primary aggregator\n- `hunhepan`\n  - Channel: `pan`\n  - Priority: `2`\n  - Role: fallback pan source\n- `pansou.vip`\n  - Channel: `pan`\n  - Priority: `3`\n  - Role: extra fallback pan source\n\n## Torrent sources\n\n- `nyaa`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for anime\n- `eztv`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for TV episodes\n- `tpb`\n  - Channel: `torrent`\n  - Priority: `2`\n  - General fallback\n- `yts`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Best for movies\n- `1337x`\n  - Channel: `torrent`\n  - Priority: `3`\n  - General supplementary source\n\n## Default routing matrix\n\n- Movie: `2fun -> hunhepan -> pansou.vip`, then `yts -> tpb -> 1337x`\n- TV: `eztv -> tpb -> 1337x`, then pan sources\n- Anime: `nyaa -> tpb -> 1337x`, then pan sources\n- Music/software/book/general: pan sources first, torrent sources second\n- Public video URL: no pan/torrent search; route directly to video workflow\n\n## Capability profile notes\n\n- Every source has a fixed timeout, retry count, query budget, and cooldown threshold\n- Default-degraded sources require repeated success evidence before they are treated as healthy again\n- `2fun` may return upstream magnets; these are preserved with `upstream_source` while `normalized_channel` is rewritten to `torrent`\n\n## Health and circuit breaking\n\n- Every active search stores a `source_status` record with `degraded_reason`, `recovery_state`, and `last_success_epoch`\n- Repeated recent failures can temporarily open a circuit for that source\n- `sources --probe` actively tests current reachability\n- `doctor` reports cached recent source state\n\n## Caveats\n\n- External public sources may throttle, change formats, or break without notice\n- Coverage quality varies by query and source index freshness\n- `pansou.vip` endpoint shape is handled conservatively with fallbacks because the public API is unstable\n\nFile v3.0.1:references/usage.md\n\n# Resource Hunter Usage\n\n## Search\n\nMain command:\n\n```bash\npython3 scripts/hunt.py search \"<query>\" [options]\n```\n\nKey options:\n\n- `--kind movie|tv|anime|music|software|book|general`\n- `--channel both|pan|torrent`\n- `--quick`\n- `--sub`\n- `--4k`\n- `--json`\n- `--json-version 2|3`\n- `--page`\n- `--limit`\n\nExamples:\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"Three Body Problem epub\" --book --channel pan\npython3 scripts/hunt.py search \"Jay Chou Fantasy lossless\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\npython3 scripts/hunt.py benchmark\n```\n\n## Video\n\nPublic video URLs go through the `video` subcommands:\n\n```bash\npython3 scripts/hunt.py video info \"https://youtu.be/...\"\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\npython3 scripts/hunt.py video download \"https://youtu.be/...\" best\npython3 scripts/hunt.py video download \"https://youtu.be/...\" balanced\npython3 scripts/hunt.py video download \"https://youtu.be/...\" small\npython3 scripts/hunt.py video download \"https://youtu.be/...\" audio\npython3 scripts/hunt.py video subtitle \"https://youtu.be/...\" --lang zh-Hans,zh,en\n```\n\nDownload presets:\n\n- `best`: highest quality available\n- `balanced`: prefer <=1080p\n- `small`: prefer <=720p\n- `audio`: audio only\n\n## Legacy wrappers\n\nThese remain available for one compatibility cycle:\n\n```bash\npython3 scripts/pansou.py \"Oppenheimer 2023\" --max 5\npython3 scripts/torrent.py \"Breaking Bad S01E01\" --tv --limit 8\npython3 scripts/video.py info \"https://youtu.be/...\"\n```\n\n## JSON\n\n`search --json` returns JSON v3 by default:\n\n- `schema_version`\n- `query`\n- `intent`\n- `plan`\n- `results`\n- `suppressed`\n- `warnings`\n- `source_status`\n- `meta`\n\nEach item in `results` includes:\n\n- `channel`\n- `normalized_channel`\n- `source`\n- `upstream_source`\n- `provider`\n- `title`\n- `link_or_magnet`\n- `password`\n- `share_id_or_info_hash`\n- `canonical_identity`\n- `size`\n- `seeders`\n- `quality`\n- `tier`\n- `score`\n- `reasons`\n- `penalties`\n- `evidence`\n- `source_health`\n- `raw`\n\nUse `--json-version 2` only for temporary compatibility with legacy consumers.\n\n## Benchmark\n\nRun the offline regression gate:\n\n```bash\npython3 scripts/hunt.py benchmark\npython3 scripts/hunt.py benchmark --json\n```\n\n## Operational notes\n\n- The engine caches normalized responses, source health, alias resolution, and recent video manifests in SQLite\n- `sources` shows recent health snapshots; `sources --probe` actively checks sources\n- `doctor` reports binaries, cache paths, recent source state, and deterministic video manifests\n- No login, no cookie injection, no DRM bypass\n\nFile v3.0.1:agents/openai.yaml\n\nversion: 1\ndisplay_name: Resource Hunter\nshort_description: Find the best public download route for pan links, torrents, magnets, and public video URLs with quality-aware ranking and JSON output.\ndefault_prompt: Use resource-hunter when the user wants public download routes, release comparison, source health, or a public video URL workflow without login or cookies.\n\nArchive v3.0.0: 32 files, 54680 bytes\n\nFiles: _meta.json (134b), agents/openai.yaml (262b), references/architecture.md (2914b), references/sources.md (1964b), references/usage.md (2803b), scripts/hunt.py (277b), scripts/pansou.py (305b), scripts/resource_hunter/__init__.py (79b), scripts/resource_hunter/benchmark.py (16385b), scripts/resource_hunter/cache.py (10877b), scripts/resource_hunter/cli.py (11224b), scripts/resource_hunter/common.py (17755b), scripts/resource_hunter/core.py (1444b), scripts/resource_hunter/engine.py (12878b), scripts/resource_hunter/intent.py (15713b), scripts/resource_hunter/models.py (4405b), scripts/resource_hunter/precision_core.py (39b), scripts/resource_hunter/ranking.py (19395b), scripts/resource_hunter/rendering.py (8651b), scripts/resource_hunter/sources.py (22138b), scripts/resource_hunter/video_core.py (12049b), scripts/test_hunt.py (1178b), scripts/torrent.py (307b), scripts/video.py (303b), SKILL.md (3214b), tests/conftest.py (214b), tests/test_benchmark.py (1521b), tests/test_cli.py (2063b), tests/test_intent.py (1378b), tests/test_precision.py (11071b), tests/test_results.py (1353b), tests/test_video.py (2342b)\n\nFile v3.0.0:SKILL.md\n\n---\nname: resource-hunter\ndescription: Public resource hunter for movies, TV, anime, music, software, books, pan links, magnets, and public video URLs. Uses unified search routing, dual text/JSON output, and yt-dlp video workflows without login, API keys, or DRM bypass.\n---\n\n# Resource Hunter v3\n\nUse this skill when the user wants to:\n\n- Find public pan links, magnets, or torrent results\n- Search movies, TV, anime, music, software, or books\n- Handle a public video URL with `yt-dlp`\n- Get compact chat-ready results or structured JSON\n\nDo not use this skill for:\n\n- Private accounts, cookies, login-only sites, invite-only trackers\n- DRM, captchas, bypassing access controls, or restricted content\n- Legality guarantees or long-term availability guarantees\n\n## Main entrypoint\n\n```bash\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\nLegacy entrypoints still work:\n\n```bash\npython3 \"$SKILL_DIR/pansou.py\" \"<query>\"\npython3 \"$SKILL_DIR/torrent.py\" \"<query>\"\npython3 \"$SKILL_DIR/video.py\" info \"<url>\"\n```\n\n## Default routing\n\n- Movie: pan first, torrent as supplement\n- TV: EZTV/TPB first, pan as supplement\n- Anime: Nyaa first, pan as supplement\n- Music, software, book: pan first\n- Public video URL: route to `video probe` / `video info`\n\n## Common commands\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" search \"Adobe Photoshop 2024\" --software --channel pan\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\npython3 \"$SKILL_DIR/hunt.py\" video download \"https://youtu.be/...\" balanced\npython3 \"$SKILL_DIR/hunt.py\" sources\npython3 \"$SKILL_DIR/hunt.py\" doctor\npython3 \"$SKILL_DIR/hunt.py\" benchmark\n```\n\n## Output modes\n\n- Default: text shows `top` and `related` matches; `risky` recall stays in JSON only\n- `--json`: JSON v3 by default with `schema_version`, `query`, `intent`, `plan`, `results`, `suppressed`, `warnings`, `source_status`, and `meta`\n- `--json-version 2`: temporary compatibility mode for legacy consumers\n\n## Notes for agent behavior\n\n- Prefer the main `hunt.py` entrypoint over directly composing lower-level scripts\n- Use `--quick` in chat when the user wants a short answer\n- Use `--json` when another tool or script will consume the output\n- If the user provides a public video URL, do not search pan/torrent first; go straight to the video pipeline\n- If the user asks to actually download a public video URL, first verify `yt-dlp` and `ffmpeg` are installed; otherwise return the download route plus the missing dependency requirement instead of attempting the download\n- If the user explicitly wants only pan or only torrent, set `--channel pan` or `--channel torrent`\n- Prefer benchmark-driven changes over heuristic tweaks without regression coverage\n\n## References\n\n- Detailed usage: `references/usage.md`\n- Internal structure and JSON schema: `references/architecture.md`\n- Source coverage and routing: `references/sources.md`\n\nFile v3.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"3.0.0\",\n  \"publishedAt\": 1773942363558\n}\n\nFile v3.0.0:references/architecture.md\n\n# Resource Hunter v3 Architecture\n\n## Layout\n\n- `scripts/hunt.py`: primary CLI entrypoint\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n- `scripts/resource_hunter/models.py`: public data models\n- `scripts/resource_hunter/common.py`: parsing, normalization, release tags, and filesystem helpers\n- `scripts/resource_hunter/cache.py`: SQLite-backed cache and manifest storage\n- `scripts/resource_hunter/intent.py`: query parsing, alias resolution, and query-family generation\n- `scripts/resource_hunter/sources.py`: source adapters, HTTP client, capability profiles\n- `scripts/resource_hunter/ranking.py`: identity, scoring, tiers, dedupe, diversity reorder\n- `scripts/resource_hunter/rendering.py`: text renderers and compatibility transforms\n- `scripts/resource_hunter/engine.py`: orchestration, cache integration, source health, benchmark entrypoint\n- `scripts/resource_hunter/benchmark.py`: offline deterministic benchmark suite\n- `scripts/resource_hunter/video_core.py`: deterministic yt-dlp workflow and manifest handling\n- `scripts/resource_hunter/cli.py`: unified CLI surface\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Resolve public alias metadata when eligible\n3. Build a category-specific `SearchPlan`\n4. Route to pan/torrent/video pipeline\n5. Query source adapters with fixed query families and per-source query budgets\n6. Normalize all results into `SearchResult`\n7. Score, tier, deduplicate, and diversify\n8. Render text output or JSON\n9. Cache response, source health, and video manifests\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Cache\n\nSQLite database stores:\n\n- `search_cache`: short-TTL normalized responses\n- `source_status`: rolling source health results, degraded reasons, and recovery state\n- `video_manifest`: deterministic download/subtitle artifacts keyed by task id\n- `alias_resolution`: cached public alias expansion for multilingual movie queries\n\nThe circuit breaker skips sources that have failed repeatedly in the recent cooldown window.\n\n## JSON schema\n\nTop level search payload:\n\n```json\n{\n  \"schema_version\": \"3\",\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"suppressed\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}\n```\n\nTop level video payload:\n\n```json\n{\n  \"url\": \"...\",\n  \"platform\": \"...\",\n  \"title\": \"...\",\n  \"duration\": 0,\n  \"formats\": [],\n  \"recommended\": [],\n  \"artifacts\": [],\n  \"meta\": {}\n}\n```\n\n## Benchmark\n\n- `benchmark` runs 180 offline search fixtures and 20 video fixtures\n- gates: overall Top1/Top3, per-kind Top1/Top3, high-confidence error rate, adversarial top-failure rate, video URL classification\n\nFile v3.0.0:references/sources.md\n\n# Resource Hunter v3 Sources\n\n## Pan sources\n\n- `2fun`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: primary aggregator\n- `hunhepan`\n  - Channel: `pan`\n  - Priority: `2`\n  - Role: fallback pan source\n- `pansou.vip`\n  - Channel: `pan`\n  - Priority: `3`\n  - Role: extra fallback pan source\n\n## Torrent sources\n\n- `nyaa`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for anime\n- `eztv`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for TV episodes\n- `tpb`\n  - Channel: `torrent`\n  - Priority: `2`\n  - General fallback\n- `yts`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Best for movies\n- `1337x`\n  - Channel: `torrent`\n  - Priority: `3`\n  - General supplementary source\n\n## Default routing matrix\n\n- Movie: `2fun -> hunhepan -> pansou.vip`, then `yts -> tpb -> 1337x`\n- TV: `eztv -> tpb -> 1337x`, then pan sources\n- Anime: `nyaa -> tpb -> 1337x`, then pan sources\n- Music/software/book/general: pan sources first, torrent sources second\n- Public video URL: no pan/torrent search; route directly to video workflow\n\n## Capability profile notes\n\n- Every source has a fixed timeout, retry count, query budget, and cooldown threshold\n- Default-degraded sources require repeated success evidence before they are treated as healthy again\n- `2fun` may return upstream magnets; these are preserved with `upstream_source` while `normalized_channel` is rewritten to `torrent`\n\n## Health and circuit breaking\n\n- Every active search stores a `source_status` record with `degraded_reason`, `recovery_state`, and `last_success_epoch`\n- Repeated recent failures can temporarily open a circuit for that source\n- `sources --probe` actively tests current reachability\n- `doctor` reports cached recent source state\n\n## Caveats\n\n- External public sources may throttle, change formats, or break without notice\n- Coverage quality varies by query and source index freshness\n- `pansou.vip` endpoint shape is handled conservatively with fallbacks because the public API is unstable\n\nFile v3.0.0:references/usage.md\n\n# Resource Hunter Usage\n\n## Search\n\nMain command:\n\n```bash\npython3 scripts/hunt.py search \"<query>\" [options]\n```\n\nKey options:\n\n- `--kind movie|tv|anime|music|software|book|general`\n- `--channel both|pan|torrent`\n- `--quick`\n- `--sub`\n- `--4k`\n- `--json`\n- `--json-version 2|3`\n- `--page`\n- `--limit`\n\nExamples:\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"Three Body Problem epub\" --book --channel pan\npython3 scripts/hunt.py search \"Jay Chou Fantasy lossless\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\npython3 scripts/hunt.py benchmark\n```\n\n## Video\n\nPublic video URLs go through the `video` subcommands:\n\n```bash\npython3 scripts/hunt.py video info \"https://youtu.be/...\"\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\npython3 scripts/hunt.py video download \"https://youtu.be/...\" best\npython3 scripts/hunt.py video download \"https://youtu.be/...\" balanced\npython3 scripts/hunt.py video download \"https://youtu.be/...\" small\npython3 scripts/hunt.py video download \"https://youtu.be/...\" audio\npython3 scripts/hunt.py video subtitle \"https://youtu.be/...\" --lang zh-Hans,zh,en\n```\n\nDownload presets:\n\n- `best`: highest quality available\n- `balanced`: prefer <=1080p\n- `small`: prefer <=720p\n- `audio`: audio only\n\n## Legacy wrappers\n\nThese remain available for one compatibility cycle:\n\n```bash\npython3 scripts/pansou.py \"Oppenheimer 2023\" --max 5\npython3 scripts/torrent.py \"Breaking Bad S01E01\" --tv --limit 8\npython3 scripts/video.py info \"https://youtu.be/...\"\n```\n\n## JSON\n\n`search --json` returns JSON v3 by default:\n\n- `schema_version`\n- `query`\n- `intent`\n- `plan`\n- `results`\n- `suppressed`\n- `warnings`\n- `source_status`\n- `meta`\n\nEach item in `results` includes:\n\n- `channel`\n- `normalized_channel`\n- `source`\n- `upstream_source`\n- `provider`\n- `title`\n- `link_or_magnet`\n- `password`\n- `share_id_or_info_hash`\n- `canonical_identity`\n- `size`\n- `seeders`\n- `quality`\n- `tier`\n- `score`\n- `reasons`\n- `penalties`\n- `evidence`\n- `source_health`\n- `raw`\n\nUse `--json-version 2` only for temporary compatibility with legacy consumers.\n\n## Benchmark\n\nRun the offline regression gate:\n\n```bash\npython3 scripts/hunt.py benchmark\npython3 scripts/hunt.py benchmark --json\n```\n\n## Operational notes\n\n- The engine caches normalized responses, source health, alias resolution, and recent video manifests in SQLite\n- `sources` shows recent health snapshots; `sources --probe` actively checks sources\n- `doctor` reports binaries, cache paths, recent source state, and deterministic video manifests\n- No login, no cookie injection, no DRM bypass\n\nFile v3.0.0:agents/openai.yaml\n\nversion: 1\ndisplay_name: Resource Hunter\nshort_description: Search public pan links, torrents, magnets, and public video URLs with chat-friendly or JSON output.\ndefault_prompt: Find public resources or inspect a public video URL using the resource-hunter skill.\n\nArchive v2.0.0: 25 files, 41023 bytes\n\nFiles: _meta.json (134b), agents/openai.yaml (262b), references/architecture.md (1922b), references/sources.md (1542b), references/usage.md (2291b), scripts/hunt.py (277b), scripts/pansou.py (305b), scripts/resource_hunter/__init__.py (42b), scripts/resource_hunter/cache.py (9810b), scripts/resource_hunter/cli.py (11046b), scripts/resource_hunter/common.py (14446b), scripts/resource_hunter/core.py (49b), scripts/resource_hunter/models.py (3595b), scripts/resource_hunter/precision_core.py (60801b), scripts/resource_hunter/video_core.py (10218b), scripts/test_hunt.py (1178b), scripts/torrent.py (307b), scripts/video.py (303b), SKILL.md (2752b), tests/conftest.py (214b), tests/test_cli.py (2063b), tests/test_intent.py (1378b), tests/test_precision.py (11221b), tests/test_results.py (1353b), tests/test_video.py (2342b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: resource-hunter\ndescription: Public resource hunter for movies, TV, anime, music, software, books, pan links, magnets, and public video URLs. Uses unified search routing, dual text/JSON output, and yt-dlp video workflows without login, API keys, or DRM bypass.\n---\n\n# Resource Hunter\n\nUse this skill when the user wants to:\n\n- Find public pan links, magnets, or torrent results\n- Search movies, TV, anime, music, software, or books\n- Handle a public video URL with `yt-dlp`\n- Get compact chat-ready results or structured JSON\n\nDo not use this skill for:\n\n- Private accounts, cookies, login-only sites, invite-only trackers\n- DRM, captchas, bypassing access controls, or restricted content\n- Legality guarantees or long-term availability guarantees\n\n## Main entrypoint\n\n```bash\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\nLegacy entrypoints still work:\n\n```bash\npython3 \"$SKILL_DIR/pansou.py\" \"<query>\"\npython3 \"$SKILL_DIR/torrent.py\" \"<query>\"\npython3 \"$SKILL_DIR/video.py\" info \"<url>\"\n```\n\n## Default routing\n\n- Movie: pan first, torrent as supplement\n- TV: EZTV/TPB first, pan as supplement\n- Anime: Nyaa first, pan as supplement\n- Music, software, book: pan first\n- Public video URL: route to `video probe` / `video info`\n\n## Common commands\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" search \"Adobe Photoshop 2024\" --software --channel pan\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\npython3 \"$SKILL_DIR/hunt.py\" video download \"https://youtu.be/...\" balanced\npython3 \"$SKILL_DIR/hunt.py\" sources\npython3 \"$SKILL_DIR/hunt.py\" doctor\n```\n\n## Output modes\n\n- Default: short human-readable recommendations with reasons\n- `--json`: stable machine-readable payload with `query`, `intent`, `plan`, `results`, `warnings`, `source_status`, and `meta`\n\n## Notes for agent behavior\n\n- Prefer the main `hunt.py` entrypoint over directly composing lower-level scripts\n- Use `--quick` in chat when the user wants a short answer\n- Use `--json` when another tool or script will consume the output\n- If the user provides a public video URL, do not search pan/torrent first; go straight to the video pipeline\n- If the user explicitly wants only pan or only torrent, set `--channel pan` or `--channel torrent`\n\n## References\n\n- Detailed usage: `references/usage.md`\n- Internal structure and JSON schema: `references/architecture.md`\n- Source coverage and routing: `references/sources.md`\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1773938308515\n}\n\nFile v2.0.0:references/architecture.md\n\n# Resource Hunter v2 Architecture\n\n## Layout\n\n- `scripts/hunt.py`: primary CLI entrypoint\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n- `scripts/resource_hunter/models.py`: public data models\n- `scripts/resource_hunter/common.py`: parsing, normalization, and filesystem helpers\n- `scripts/resource_hunter/cache.py`: SQLite-backed cache and manifest storage\n- `scripts/resource_hunter/core.py`: search intent parsing, planning, adapters, scoring, formatting\n- `scripts/resource_hunter/video_core.py`: yt-dlp workflow and manifest handling\n- `scripts/resource_hunter/cli.py`: unified CLI surface\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Build a `SearchPlan`\n3. Route to pan/torrent/video pipeline\n4. Query source adapters with fallback query variants\n5. Normalize all results into `SearchResult`\n6. Deduplicate\n7. Score and sort\n8. Render text output or JSON\n9. Cache response and source health\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Cache\n\nSQLite database stores:\n\n- `search_cache`: short-TTL normalized responses\n- `source_status`: rolling source health results and circuit-breaker input\n- `video_manifest`: recent download artifacts\n\nThe circuit breaker skips sources that have failed repeatedly in the recent cooldown window.\n\n## JSON schema\n\nTop level search payload:\n\n```json\n{\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}\n```\n\nTop level video payload:\n\n```json\n{\n  \"url\": \"...\",\n  \"platform\": \"...\",\n  \"title\": \"...\",\n  \"duration\": 0,\n  \"formats\": [],\n  \"recommended\": [],\n  \"artifacts\": [],\n  \"meta\": {}\n}\n```\n\nFile v2.0.0:references/sources.md\n\n# Resource Hunter Sources\n\n## Pan sources\n\n- `2fun`\n  - Channel: `pan`\n  - Priority: `1`\n  - Role: primary aggregator\n- `hunhepan`\n  - Channel: `pan`\n  - Priority: `2`\n  - Role: fallback pan source\n- `pansou.vip`\n  - Channel: `pan`\n  - Priority: `3`\n  - Role: extra fallback pan source\n\n## Torrent sources\n\n- `nyaa`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for anime\n- `eztv`\n  - Channel: `torrent`\n  - Priority: `1`\n  - Best for TV episodes\n- `tpb`\n  - Channel: `torrent`\n  - Priority: `2`\n  - General fallback\n- `yts`\n  - Channel: `torrent`\n  - Priority: `2`\n  - Best for movies\n- `1337x`\n  - Channel: `torrent`\n  - Priority: `3`\n  - General supplementary source\n\n## Default routing matrix\n\n- Movie: `2fun -> hunhepan -> pansou.vip`, then `yts -> tpb -> 1337x`\n- TV: `eztv -> tpb -> 1337x`, then pan sources\n- Anime: `nyaa -> tpb -> 1337x`, then pan sources\n- Music/software/book/general: pan sources first, torrent sources second\n- Public video URL: no pan/torrent search; route directly to video workflow\n\n## Health and circuit breaking\n\n- Every active search stores a `source_status` record\n- Repeated recent failures can temporarily open a circuit for that source\n- `sources --probe` actively tests current reachability\n- `doctor` reports cached recent source state\n\n## Caveats\n\n- External public sources may throttle, change formats, or break without notice\n- Coverage quality varies by query and source index freshness\n- `pansou.vip` endpoint shape is handled conservatively with fallbacks because the public API is unstable\n\nFile v2.0.0:references/usage.md\n\n# Resource Hunter Usage\n\n## Search\n\nMain command:\n\n```bash\npython3 scripts/hunt.py search \"<query>\" [options]\n```\n\nKey options:\n\n- `--kind movie|tv|anime|music|software|book|general`\n- `--channel both|pan|torrent`\n- `--quick`\n- `--sub`\n- `--4k`\n- `--json`\n- `--page`\n- `--limit`\n\nExamples:\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"三体 epub\" --book --channel pan\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py search \"Adobe Photoshop 2024\" --software --json\n```\n\n## Video\n\nPublic video URLs go through the `video` subcommands:\n\n```bash\npython3 scripts/hunt.py video info \"https://youtu.be/...\"\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\npython3 scripts/hunt.py video download \"https://youtu.be/...\" best\npython3 scripts/hunt.py video download \"https://youtu.be/...\" balanced\npython3 scripts/hunt.py video download \"https://youtu.be/...\" small\npython3 scripts/hunt.py video download \"https://youtu.be/...\" audio\npython3 scripts/hunt.py video subtitle \"https://youtu.be/...\" --lang zh-Hans,zh,en\n```\n\nDownload presets:\n\n- `best`: highest quality available\n- `balanced`: prefer <=1080p\n- `small`: prefer <=720p\n- `audio`: audio only\n\n## Legacy wrappers\n\nThese remain available for one compatibility cycle:\n\n```bash\npython3 scripts/pansou.py \"Oppenheimer 2023\" --max 5\npython3 scripts/torrent.py \"Breaking Bad S01E01\" --tv --limit 8\npython3 scripts/video.py info \"https://youtu.be/...\"\n```\n\n## JSON\n\n`search --json` returns:\n\n- `query`\n- `intent`\n- `plan`\n- `results`\n- `warnings`\n- `source_status`\n- `meta`\n\nEach item in `results` includes:\n\n- `channel`\n- `source`\n- `provider`\n- `title`\n- `link_or_magnet`\n- `password`\n- `share_id_or_info_hash`\n- `size`\n- `seeders`\n- `quality`\n- `score`\n- `reasons`\n- `raw`\n\n## Operational notes\n\n- The engine caches recent normalized responses and source health in SQLite\n- `sources` shows recent health snapshots; `sources --probe` actively checks sources\n- `doctor` reports binaries, cache paths, and recent source/video state\n- No login, no cookie injection, no DRM bypass\n\nFile v2.0.0:agents/openai.yaml\n\nversion: 1\ndisplay_name: Resource Hunter\nshort_description: Search public pan links, torrents, magnets, and public video URLs with chat-friendly or JSON output.\ndefault_prompt: Find public resources or inspect a public video URL using the resource-hunter skill.\n\nArchive v1.7.6: 7 files, 20150 bytes\n\nFiles: _meta.json (134b), references/sources.md (1701b), scripts/hunt.py (11091b), scripts/pansou.py (15576b), scripts/torrent.py (11545b), scripts/video.py (7910b), SKILL.md (2916b)\n\nFile v1.7.6:SKILL.md\n\n---\nname: resource-hunter\ndescription: \"🎯 全路径资源猎手 — 一个命令找到任何资源。聚合搜索阿里云盘/夸克/百度/115/UC 等 10+ 云盘分享链接，TPB/EZTV/Nyaa 磁力种子，B站/YouTube 等 1000+ 网站视频下载。智能类型识别，并发搜索，画质优先排序。无需 API Key，完全免费。\"\nmetadata: {\"openclaw\":{\"emoji\":\"🎯\"}}\n---\n\n# 🎯 Resource Hunter — 全路径资源猎手\n\n> 一个命令，找到任何资源。网盘 + 种子 + 视频下载，三路并举，无需 API Key。\n\n## ✨ 特性\n\n- **10+ 云盘聚合** — 阿里云盘、夸克、百度、115、UC、PikPak、123网盘等同时搜索\n- **3大种子引擎** — TPB、EZTV（美剧专用）、Nyaa（动漫专用）并发搜索\n- **1000+ 视频网站** — B站、抖音、YouTube、TikTok 等直链下载\n- **智能识别** — 自动判断电影/动漫/美剧/音乐/软件，选择最优搜索策略\n- **画质优先** — REMUX > 4K/UHD > BluRay > 1080p 智能排序\n- **自动提取密码** — 网盘分享链接密码自动识别提取\n- **无需 API Key** — 全部使用免费公开接口\n- **并发高速** — 网盘+种子同时搜索，4秒内出结果\n\n## 🚀 快速开始\n\n```bash\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\n\n# 搜索电影（中英文混合效果最佳）\npython3 \"$SKILL_DIR/hunt.py\" '流浪地球2 The Wandering Earth 2023' --movie\n\n# 搜索动漫\npython3 \"$SKILL_DIR/hunt.py\" '进击的巨人 Attack on Titan' --anime\n\n# 搜索音乐（自动加无损关键词）\npython3 \"$SKILL_DIR/hunt.py\" '周杰伦' --music\n\n# 搜索软件\npython3 \"$SKILL_DIR/hunt.py\" 'Adobe Photoshop 2024' --software\n\n# 视频链接直接下载\npython3 \"$SKILL_DIR/hunt.py\" 'https://www.bilibili.com/video/BV1xx...'\n```\n\n## 📋 参数说明\n\n| 参数 | 说明 |\n|------|------|\n| `--movie` | 电影模式 |\n| `--anime` | 动漫模式（启用 Nyaa）|\n| `--tv` | 美剧模式（启用 EZTV）|\n| `--music` | 音乐模式（自动加无损）|\n| `--software` | 软件模式 |\n| `--quick` | 快速模式（每云盘1条，更简洁）|\n| `--sub` | 优先带中文字幕版本 |\n| `--4k` | 优先4K版本 |\n| `--pan-only` | 只搜网盘 |\n| `--torrent-only` | 只搜种子（建议英文关键词）|\n| `--page N` | 翻页查看更多结果 |\n\n## 🔧 依赖\n\n- **网盘/种子搜索**：无需任何依赖，开箱即用\n- **视频下载**：需安装 [yt-dlp](https://github.com/yt-dlp/yt-dlp)\n\n```bash\n# 安装 yt-dlp（可选，仅视频下载需要）\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp && chmod +x ~/.local/bin/yt-dlp\n```\n\n## 📊 数据来源\n\n| 功能 | 数据源 | 费用 |\n|------|--------|------|\n| 网盘搜索 | 2fun.live PanSou | 免费 |\n| 种子搜索 | The Pirate Bay | 免费 |\n| 美剧种子 | EZTV | 免费 |\n| 动漫种子 | Nyaa.si | 免费 |\n| 视频下载 | yt-dlp | 免费 |\n\nFile v1.7.6:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"1.7.6\",\n  \"publishedAt\": 1773821511274\n}\n\nFile v1.7.6:references/sources.md\n\n# Resource Sources Reference\n\n## 网盘聚合搜索\n\n| 站点 | API | 说明 |\n|------|-----|------|\n| 2fun.live | `https://s.2fun.live/api/search?q=关键词` | 主力，支持10+云盘 |\n| hunhepan.com | `https://www.hunhepan.com/api/search?q=关键词` | 备用 |\n| pansou.vip | `https://pansou.vip/api` | 备用 |\n\n### 支持云盘类型\n- ☁️ aliyun — 阿里云盘\n- ⚡ quark — 夸克网盘\n- 🔵 baidu — 百度网盘\n- 🔷 115 — 115网盘\n- 🟣 pikpak — PikPak\n- 🟠 uc — UC网盘\n- 🔴 xunlei — 迅雷云盘\n- 🟢 123 — 123网盘\n- 🔹 tianyi — 天翼云盘\n- 🧲 magnet — 磁力链接\n- 🔗 ed2k — ED2K\n\n## 种子/磁力搜索\n\n| 引擎 | 地址 | 适合 |\n|------|------|------|\n| ThePirateBay | `https://apibay.org/q.php?q=关键词` | 通用 |\n| Nyaa | `https://nyaa.si/?f=0&c=0_0&q=关键词&page=rss` | 动漫/日剧 |\n| 1337x | `https://www.1377x.to/search/关键词/1/` | 通用 |\n\n## 视频下载支持平台（yt-dlp）\n\n国内：哔哩哔哩、抖音、微博、腾讯视频、爱奇艺、优酷、AcFun、斗鱼、虎牙  \n国外：YouTube、Instagram、TikTok、Twitter/X、Facebook、Reddit、Twitch、Vimeo、NicoNico  \n总计支持 1000+ 网站\n\n## 决策矩阵\n\n| 用户需求 | 优先策略 | 脚本 |\n|----------|----------|------|\n| 电影/电视剧 | 网盘搜索 → 种子 | pansou.py → torrent.py |\n| 动漫 | Nyaa种子 → 网盘 | torrent.py --anime → pansou.py |\n| 视频链接下载 | yt-dlp直接下载 | video.py download |\n| 软件/游戏 | 网盘搜索 → 磁力 | pansou.py → torrent.py |\n| 音乐 | yt-dlp音频 → 网盘 | video.py --audio → pansou.py |\n| 字幕/文本 | yt-dlp字幕提取 | video.py subtitle |\n\nArchive v1.7.5: 7 files, 19917 bytes\n\nFiles: _meta.json (134b), references/sources.md (1701b), scripts/hunt.py (11091b), scripts/pansou.py (15576b), scripts/torrent.py (11545b), scripts/video.py (7910b), SKILL.md (2653b)\n\nFile v1.7.5:SKILL.md\n\n---\nname: resource-hunter\ndescription: 全路径资源获取 Agent。搜索网盘分享链接（阿里云盘/夸克/百度/115/UC/PikPak等10+云盘）、磁力种子（TPB/EZTV/Nyaa）、视频直链下载（B站/抖音/YouTube等1000+网站）。无需 API Key，全部免费公开接口。触发词：找资源、下载、网盘链接、磁力、种子、搜电影、搜剧、帮我找。\nmetadata: {\"openclaw\":{\"emoji\":\"🎯\"}}\n---\n\n# Resource Hunter — 全路径资源猎手\n\n**无需 API Key，全部免费公开接口。**\n\n## 快速使用\n\n```bash\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\n\n# 基本搜索\npython3 \"$SKILL_DIR/hunt.py\" '电影名'\npython3 \"$SKILL_DIR/hunt.py\" '中文名 English Name 年份' --movie\npython3 \"$SKILL_DIR/hunt.py\" '动漫名' --anime\npython3 \"$SKILL_DIR/hunt.py\" '歌手名' --music\npython3 \"$SKILL_DIR/hunt.py\" '软件名' --software\n\n# 搜索选项\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --quick          # 快速模式（每云盘1条）\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --sub            # 优先带中文字幕\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --4k             # 优先4K版本\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only       # 只搜网盘\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --torrent-only   # 只搜种子\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --page 2         # 翻页\n\n# 视频链接\npython3 \"$SKILL_DIR/video.py\" info 'https://www.bilibili.com/video/...'\npython3 \"$SKILL_DIR/video.py\" download 'URL' best\n```\n\n## AI 使用指南\n\n### 触发条件\n- \"帮我找XX\" / \"有没有XX\" / \"下载XX\"\n- \"XX网盘\" / \"XX磁力\" / \"XX种子\"\n- 粘贴视频链接（B站/YouTube等）\n\n### 关键词策略\n\n| 场景 | 推荐写法 |\n|------|----------|\n| 中文电影 | `中文名 English Name 年份 --movie` |\n| 纯英文 | 直接搜，两路都有效 |\n| 动漫 | `动漫名 --anime` |\n| 音乐 | `歌手名/专辑名 --music` |\n| 软件 | `软件名 版本号 --software` |\n| 要字幕 | 加 `--sub` |\n| 要4K | 加 `--4k` |\n\n### 三条搜索路径\n\n**网盘聚合（2fun.live）**\n- 阿里云盘/夸克/115/百度/UC/PikPak/123网盘等\n- 自动提取密码、标题清理、画质排序\n- 8种云盘并发搜索，结果30分钟缓存\n\n**磁力种子（TPB/EZTV/Nyaa）**\n- 画质优先：REMUX > 4K > BluRay > 1080p\n- 年份匹配加分\n- 建议英文关键词，中文自动提取\n\n**视频直链（yt-dlp）**\n- B站/抖音/YouTube/TikTok等1000+网站\n- 需预装 yt-dlp\n\n## 安装 yt-dlp（视频下载需要）\n\n```bash\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp\nchmod +x ~/.local/bin/yt-dlp\n```\n\nFile v1.7.5:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"1.7.5\",\n  \"publishedAt\": 1773821390437\n}\n\nFile v1.7.5:references/sources.md\n\n# Resource Sources Reference\n\n## 网盘聚合搜索\n\n| 站点 | API | 说明 |\n|------|-----|------|\n| 2fun.live | `https://s.2fun.live/api/search?q=关键词` | 主力，支持10+云盘 |\n| hunhepan.com | `https://www.hunhepan.com/api/search?q=关键词` | 备用 |\n| pansou.vip | `https://pansou.vip/api` | 备用 |\n\n### 支持云盘类型\n- ☁️ aliyun — 阿里云盘\n- ⚡ quark — 夸克网盘\n- 🔵 baidu — 百度网盘\n- 🔷 115 — 115网盘\n- 🟣 pikpak — PikPak\n- 🟠 uc — UC网盘\n- 🔴 xunlei — 迅雷云盘\n- 🟢 123 — 123网盘\n- 🔹 tianyi — 天翼云盘\n- 🧲 magnet — 磁力链接\n- 🔗 ed2k — ED2K\n\n## 种子/磁力搜索\n\n| 引擎 | 地址 | 适合 |\n|------|------|------|\n| ThePirateBay | `https://apibay.org/q.php?q=关键词` | 通用 |\n| Nyaa | `https://nyaa.si/?f=0&c=0_0&q=关键词&page=rss` | 动漫/日剧 |\n| 1337x | `https://www.1377x.to/search/关键词/1/` | 通用 |\n\n## 视频下载支持平台（yt-dlp）\n\n国内：哔哩哔哩、抖音、微博、腾讯视频、爱奇艺、优酷、AcFun、斗鱼、虎牙  \n国外：YouTube、Instagram、TikTok、Twitter/X、Facebook、Reddit、Twitch、Vimeo、NicoNico  \n总计支持 1000+ 网站\n\n## 决策矩阵\n\n| 用户需求 | 优先策略 | 脚本 |\n|----------|----------|------|\n| 电影/电视剧 | 网盘搜索 → 种子 | pansou.py → torrent.py |\n| 动漫 | Nyaa种子 → 网盘 | torrent.py --anime → pansou.py |\n| 视频链接下载 | yt-dlp直接下载 | video.py download |\n| 软件/游戏 | 网盘搜索 → 磁力 | pansou.py → torrent.py |\n| 音乐 | yt-dlp音频 → 网盘 | video.py --audio → pansou.py |\n| 字幕/文本 | yt-dlp字幕提取 | video.py subtitle |\n\nArchive v1.7.4: 7 files, 20017 bytes\n\nFiles: _meta.json (134b), references/sources.md (1701b), scripts/hunt.py (11091b), scripts/pansou.py (15576b), scripts/torrent.py (11545b), scripts/video.py (7910b), SKILL.md (2665b)\n\nFile v1.7.4:SKILL.md\n\n---\nname: resource-hunter\ndescription: 全路径资源获取 Agent。搜索网盘分享链接（阿里云盘/夸克/百度/115/UC/PikPak）、磁力种子（TPB/EZTV/Nyaa）、视频直链下载（B站/抖音/YouTube等1000+网站）。无需 API Key。触发词：找资源、下载、网盘链接、磁力、种子、搜电影、搜剧、帮我找。\nmetadata: {\"openclaw\":{\"emoji\":\"🎯\"}}\n---\n\n# Resource Hunter — 全路径资源猎手\n\n**无需 API Key，全部免费公开接口。**\n\n## 快速使用\n\n```bash\n# 技能安装后，脚本在 skill 目录下\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\n\n# 智能搜索（自动选择最优路径）\npython3 \"$SKILL_DIR/hunt.py\" '电影名'\npython3 \"$SKILL_DIR/hunt.py\" '中文名 English Name' --movie\npython3 \"$SKILL_DIR/hunt.py\" '动漫名' --anime\npython3 \"$SKILL_DIR/hunt.py\" '歌手名' --music\npython3 \"$SKILL_DIR/hunt.py\" '软件名' --software\n\n# 只搜网盘\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only\n\n# 只搜种子（建议用英文）\npython3 \"$SKILL_DIR/hunt.py\" 'English Name' --torrent-only\n\n# 翻页\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only --page 2\n\n# 快速模式（只返回最佳结果）\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --quick\n\n# 视频链接查询\npython3 \"$SKILL_DIR/video.py\" info 'https://www.bilibili.com/video/...'\npython3 \"$SKILL_DIR/video.py\" download 'URL' best\n```\n\n## 三条搜索路径\n\n### 🗂️ 路径一：网盘聚合搜索\n- **数据源**: 2fun.live PanSou（免费公开）\n- **支持**: 阿里云盘、夸克、115、百度、UC、PikPak、123网盘等\n- **特性**: 多云盘并发、自动提取密码、4K优先排序、结果缓存\n\n### 🧲 路径二：磁力种子搜索\n- **引擎**: TPB + EZTV（美剧）+ Nyaa（动漫），全部免费\n- **特性**: 画质优先（REMUX>4K>BluRay>1080p）、并发搜索\n- **建议**: 用英文关键词效果最佳\n\n### 🎬 路径三：视频直链下载\n- **依赖**: yt-dlp（需单独安装）\n- **支持**: B站/抖音/YouTube/TikTok 等 1000+ 网站\n\n## 智能识别\n\nhunt.py 自动识别资源类型：\n\n| 类型 | 触发词 | 搜索策略 |\n|------|--------|----------|\n| 电影 | 含年份、4K等 | 网盘+种子 |\n| 动漫 | 番剧/动画/鬼灭等 | 网盘+Nyaa |\n| 美剧 | S01E01/season等 | 网盘+EZTV |\n| 音乐 | 无损/专辑/flac | 网盘（自动加无损）|\n| 软件 | .exe/.apk/破解 | 网盘直搜 |\n| 视频链接 | http/bilibili等 | 直接下载 |\n\n## 安装依赖（仅视频下载需要）\n\n```bash\n# 安装 yt-dlp\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp\nchmod +x ~/.local/bin/yt-dlp\n```\n\nFile v1.7.4:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"1.7.4\",\n  \"publishedAt\": 1773821333956\n}\n\nFile v1.7.4:references/sources.md\n\n# Resource Sources Reference\n\n## 网盘聚合搜索\n\n| 站点 | API | 说明 |\n|------|-----|------|\n| 2fun.live | `https://s.2fun.live/api/search?q=关键词` | 主力，支持10+云盘 |\n| hunhepan.com | `https://www.hunhepan.com/api/search?q=关键词` | 备用 |\n| pansou.vip | `https://pansou.vip/api` | 备用 |\n\n### 支持云盘类型\n- ☁️ aliyun — 阿里云盘\n- ⚡ quark — 夸克网盘\n- 🔵 baidu — 百度网盘\n- 🔷 115 — 115网盘\n- 🟣 pikpak — PikPak\n- 🟠 uc — UC网盘\n- 🔴 xunlei — 迅雷云盘\n- 🟢 123 — 123网盘\n- 🔹 tianyi — 天翼云盘\n- 🧲 magnet — 磁力链接\n- 🔗 ed2k — ED2K\n\n## 种子/磁力搜索\n\n| 引擎 | 地址 | 适合 |\n|------|------|------|\n| ThePirateBay | `https://apibay.org/q.php?q=关键词` | 通用 |\n| Nyaa | `https://nyaa.si/?f=0&c=0_0&q=关键词&page=rss` | 动漫/日剧 |\n| 1337x | `https://www.1377x.to/search/关键词/1/` | 通用 |\n\n## 视频下载支持平台（yt-dlp）\n\n国内：哔哩哔哩、抖音、微博、腾讯视频、爱奇艺、优酷、AcFun、斗鱼、虎牙  \n国外：YouTube、Instagram、TikTok、Twitter/X、Facebook、Reddit、Twitch、Vimeo、NicoNico  \n总计支持 1000+ 网站\n\n## 决策矩阵\n\n| 用户需求 | 优先策略 | 脚本 |\n|----------|----------|------|\n| 电影/电视剧 | 网盘搜索 → 种子 | pansou.py → torrent.py |\n| 动漫 | Nyaa种子 → 网盘 | torrent.py --anime → pansou.py |\n| 视频链接下载 | yt-dlp直接下载 | video.py download |\n| 软件/游戏 | 网盘搜索 → 磁力 | pansou.py → torrent.py |\n| 音乐 | yt-dlp音频 → 网盘 | video.py --audio → pansou.py |\n| 字幕/文本 | yt-dlp字幕提取 | video.py subtitle |\n\nArchive v1.7.3: 7 files, 19891 bytes\n\nFiles: _meta.json (134b), references/sources.md (1701b), scripts/hunt.py (11091b), scripts/pansou.py (15093b), scripts/torrent.py (11545b), scripts/video.py (7910b), SKILL.md (2665b)\n\nFile v1.7.3:SKILL.md\n\n---\nname: resource-hunter\ndescription: 全路径资源获取 Agent。搜索网盘分享链接（阿里云盘/夸克/百度/115/UC/PikPak）、磁力种子（TPB/EZTV/Nyaa）、视频直链下载（B站/抖音/YouTube等1000+网站）。无需 API Key。触发词：找资源、下载、网盘链接、磁力、种子、搜电影、搜剧、帮我找。\nmetadata: {\"openclaw\":{\"emoji\":\"🎯\"}}\n---\n\n# Resource Hunter — 全路径资源猎手\n\n**无需 API Key，全部免费公开接口。**\n\n## 快速使用\n\n```bash\n# 技能安装后，脚本在 skill 目录下\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\n\n# 智能搜索（自动选择最优路径）\npython3 \"$SKILL_DIR/hunt.py\" '电影名'\npython3 \"$SKILL_DIR/hunt.py\" '中文名 English Name' --movie\npython3 \"$SKILL_DIR/hunt.py\" '动漫名' --anime\npython3 \"$SKILL_DIR/hunt.py\" '歌手名' --music\npython3 \"$SKILL_DIR/hunt.py\" '软件名' --software\n\n# 只搜网盘\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only\n\n# 只搜种子（建议用英文）\npython3 \"$SKILL_DIR/hunt.py\" 'English Name' --torrent-only\n\n# 翻页\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only --page 2\n\n# 快速模式（只返回最佳结果）\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --quick\n\n# 视频链接查询\npython3 \"$SKILL_DIR/video.py\" info 'https://www.bilibili.com/video/...'\npython3 \"$SKILL_DIR/video.py\" download 'URL' best\n```\n\n## 三条搜索路径\n\n### 🗂️ 路径一：网盘聚合搜索\n- **数据源**: 2fun.live PanSou（免费公开）\n- **支持**: 阿里云盘、夸克、115、百度、UC、PikPak、123网盘等\n- **特性**: 多云盘并发、自动提取密码、4K优先排序、结果缓存\n\n### 🧲 路径二：磁力种子搜索\n- **引擎**: TPB + EZTV（美剧）+ Nyaa（动漫），全部免费\n- **特性**: 画质优先（REMUX>4K>BluRay>1080p）、并发搜索\n- **建议**: 用英文关键词效果最佳\n\n### 🎬 路径三：视频直链下载\n- **依赖**: yt-dlp（需单独安装）\n- **支持**: B站/抖音/YouTube/TikTok 等 1000+ 网站\n\n## 智能识别\n\nhunt.py 自动识别资源类型：\n\n| 类型 | 触发词 | 搜索策略 |\n|------|--------|----------|\n| 电影 | 含年份、4K等 | 网盘+种子 |\n| 动漫 | 番剧/动画/鬼灭等 | 网盘+Nyaa |\n| 美剧 | S01E01/season等 | 网盘+EZTV |\n| 音乐 | 无损/专辑/flac | 网盘（自动加无损）|\n| 软件 | .exe/.apk/破解 | 网盘直搜 |\n| 视频链接 | http/bilibili等 | 直接下载 |\n\n## 安装依赖（仅视频下载需要）\n\n```bash\n# 安装 yt-dlp\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp\nchmod +x ~/.local/bin/yt-dlp\n```\n\nFile v1.7.3:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"1.7.3\",\n  \"publishedAt\": 1773821196923\n}\n\nFile v1.7.3:references/sources.md\n\n# Resource Sources Reference\n\n## 网盘聚合搜索\n\n| 站点 | API | 说明 |\n|------|-----|------|\n| 2fun.live | `https://s.2fun.live/api/search?q=关键词` | 主力，支持10+云盘 |\n| hunhepan.com | `https://www.hunhepan.com/api/search?q=关键词` | 备用 |\n| pansou.vip | `https://pansou.vip/api` | 备用 |\n\n### 支持云盘类型\n- ☁️ aliyun — 阿里云盘\n- ⚡ quark — 夸克网盘\n- 🔵 baidu — 百度网盘\n- 🔷 115 — 115网盘\n- 🟣 pikpak — PikPak\n- 🟠 uc — UC网盘\n- 🔴 xunlei — 迅雷云盘\n- 🟢 123 — 123网盘\n- 🔹 tianyi — 天翼云盘\n- 🧲 magnet — 磁力链接\n- 🔗 ed2k — ED2K\n\n## 种子/磁力搜索\n\n| 引擎 | 地址 | 适合 |\n|------|------|------|\n| ThePirateBay | `https://apibay.org/q.php?q=关键词` | 通用 |\n| Nyaa | `https://nyaa.si/?f=0&c=0_0&q=关键词&page=rss` | 动漫/日剧 |\n| 1337x | `https://www.1377x.to/search/关键词/1/` | 通用 |\n\n## 视频下载支持平台（yt-dlp）\n\n国内：哔哩哔哩、抖音、微博、腾讯视频、爱奇艺、优酷、AcFun、斗鱼、虎牙  \n国外：YouTube、Instagram、TikTok、Twitter/X、Facebook、Reddit、Twitch、Vimeo、NicoNico  \n总计支持 1000+ 网站\n\n## 决策矩阵\n\n| 用户需求 | 优先策略 | 脚本 |\n|----------|----------|------|\n| 电影/电视剧 | 网盘搜索 → 种子 | pansou.py → torrent.py |\n| 动漫 | Nyaa种子 → 网盘 | torrent.py --anime → pansou.py |\n| 视频链接下载 | yt-dlp直接下载 | video.py download |\n| 软件/游戏 | 网盘搜索 → 磁力 | pansou.py → torrent.py |\n| 音乐 | yt-dlp音频 → 网盘 | video.py --audio → pansou.py |\n| 字幕/文本 | yt-dlp字幕提取 | video.py subtitle |\n\nArchive v1.7.2: 7 files, 19722 bytes\n\nFiles: _meta.json (134b), references/sources.md (1701b), scripts/hunt.py (11091b), scripts/pansou.py (14578b), scripts/torrent.py (11545b), scripts/video.py (7910b), SKILL.md (2665b)\n\nFile v1.7.2:SKILL.md\n\n---\nname: resource-hunter\ndescription: 全路径资源获取 Agent。搜索网盘分享链接（阿里云盘/夸克/百度/115/UC/PikPak）、磁力种子（TPB/EZTV/Nyaa）、视频直链下载（B站/抖音/YouTube等1000+网站）。无需 API Key。触发词：找资源、下载、网盘链接、磁力、种子、搜电影、搜剧、帮我找。\nmetadata: {\"openclaw\":{\"emoji\":\"🎯\"}}\n---\n\n# Resource Hunter — 全路径资源猎手\n\n**无需 API Key，全部免费公开接口。**\n\n## 快速使用\n\n```bash\n# 技能安装后，脚本在 skill 目录下\nSKILL_DIR=\"$(openclaw skills path resource-hunter)/scripts\"\n\n# 智能搜索（自动选择最优路径）\npython3 \"$SKILL_DIR/hunt.py\" '电影名'\npython3 \"$SKILL_DIR/hunt.py\" '中文名 English Name' --movie\npython3 \"$SKILL_DIR/hunt.py\" '动漫名' --anime\npython3 \"$SKILL_DIR/hunt.py\" '歌手名' --music\npython3 \"$SKILL_DIR/hunt.py\" '软件名' --software\n\n# 只搜网盘\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only\n\n# 只搜种子（建议用英文）\npython3 \"$SKILL_DIR/hunt.py\" 'English Name' --torrent-only\n\n# 翻页\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --pan-only --page 2\n\n# 快速模式（只返回最佳结果）\npython3 \"$SKILL_DIR/hunt.py\" '关键词' --quick\n\n# 视频链接查询\npython3 \"$SKILL_DIR/video.py\" info 'https://www.bilibili.com/video/...'\npython3 \"$SKILL_DIR/video.py\" download 'URL' best\n```\n\n## 三条搜索路径\n\n### 🗂️ 路径一：网盘聚合搜索\n- **数据源**: 2fun.live PanSou（免费公开）\n- **支持**: 阿里云盘、夸克、115、百度、UC、PikPak、123网盘等\n- **特性**: 多云盘并发、自动提取密码、4K优先排序、结果缓存\n\n### 🧲 路径二：磁力种子搜索\n- **引擎**: TPB + EZTV（美剧）+ Nyaa（动漫），全部免费\n- **特性**: 画质优先（REMUX>4K>BluRay>1080p）、并发搜索\n- **建议**: 用英文关键词效果最佳\n\n### 🎬 路径三：视频直链下载\n- **依赖**: yt-dlp（需单独安装）\n- **支持**: B站/抖音/YouTube/TikTok 等 1000+ 网站\n\n## 智能识别\n\nhunt.py 自动识别资源类型：\n\n| 类型 | 触发词 | 搜索策略 |\n|------|--------|----------|\n| 电影 | 含年份、4K等 | 网盘+种子 |\n| 动漫 | 番剧/动画/鬼灭等 | 网盘+Nyaa |\n| 美剧 | S01E01/season等 | 网盘+EZTV |\n| 音乐 | 无损/专辑/flac | 网盘（自动加无损）|\n| 软件 | .exe/.apk/破解 | 网盘直搜 |\n| 视频链接 | http/bilibili等 | 直接下载 |\n\n## 安装依赖（仅视频下载需要）\n\n```bash\n# 安装 yt-dlp\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp\nchmod +x ~/.local/bin/yt-dlp\n```\n\nFile v1.7.2:_meta.json\n\n{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"1.7.2\",\n  \"publishedAt\": 1773821111871\n}\n\nFile v1.7.2:references/sources.md\n\n# Resource Sources Reference\n\n## 网盘聚合搜索\n\n| 站点 | API | 说明 |\n|------|-----|------|\n| 2fun.live | `https://s.2fun.live/api/search?q=关键词` | 主力，支持10+云盘 |\n| hunhepan.com | `https://www.hunhepan.com/api/search?q=关键词` | 备用 |\n| pansou.vip | `https://pansou.vip/api` | 备用 |\n\n### 支持云盘类型\n- ☁️ aliyun — 阿里云盘\n- ⚡ quark — 夸克网盘\n- 🔵 baidu — 百度网盘\n- 🔷 115 — 115网盘\n- 🟣 pikpak — PikPak\n- 🟠 uc — UC网盘\n- 🔴 xunlei — 迅雷云盘\n- 🟢 123 — 123网盘\n- 🔹 tianyi — 天翼云盘\n- 🧲 magnet — 磁力链接\n- 🔗 ed2k — ED2K\n\n## 种子/磁力搜索\n\n| 引擎 | 地址 | 适合 |\n|------|------|------|\n| ThePirateBay | `https://apibay.org/q.php?q=关键词` | 通用 |\n| Nyaa | `https://nyaa.si/?f=0&c=0_0&q=关键词&page=rss` | 动漫/日剧 |\n| 1337x | `https://www.1377x.to/search/关键词/1/` | 通用 |\n\n## 视频下载支持平台（yt-dlp）\n\n国内：哔哩哔哩、抖音、微博、腾讯视频、爱奇艺、优酷、AcFun、斗鱼、虎牙  \n国外：YouTube、Instagram、TikTok、Twitter/X、Facebook、Reddit、Twitch、Vimeo、NicoNico  \n总计支持 1000+ 网站\n\n## 决策矩阵\n\n| 用户需求 | 优先策略 | 脚本 |\n|----------|----------|------|\n| 电影/电视剧 | 网盘搜索 → 种子 | pansou.py → torrent.py |\n| 动漫 | Nyaa种子 → 网盘 | torrent.py --anime → pansou.py |\n| 视频链接下载 | yt-dlp直接下载 | video.py download |\n| 软件/游戏 | 网盘搜索 → 磁力 | pansou.py → torrent.py |\n| 音乐 | yt-dlp音频 → 网盘 | video.py --audio → pansou.py |\n| 字幕/文本 | yt-dlp字幕提取 | video.py subtitle |","readmeExcerpt":"Skill: Resource Hunter Owner: mnbplus Summary: Find the best public route to pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books. Uses layered success-fir... Tags: latest:2.1.1 Version history: v2.1.1 | 2026-03-24T01:31:44.437Z | user Polish the GitHub and ClawHub presentation: clearer hero copy, tighter capability summary, cleaner Dalipan/Bing/Brave limitation wordin","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"SKILL_ROOT=\"$(openclaw skills path resource-hunter)\"\nSKILL_DIR=\"$SKILL_ROOT/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\""},{"language":"bash","snippet":"python3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" sources --probe --json\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\""},{"language":"bash","snippet":"python3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\""},{"language":"json","snippet":"{\n  \"query\": \"...\",\n  \"intent\": {},\n  \"plan\": {},\n  \"results\": [],\n  \"warnings\": [],\n  \"source_status\": [],\n  \"meta\": {}\n}"},{"language":"json","snippet":"{\n  \"version\": \"...\",\n  \"python\": \"...\",\n  \"packaging_python\": \"...\",\n  \"packaging_python_source\": \"current\",\n  \"packaging_python_candidates\": [],\n  \"packaging_python_auto_selected\": false,\n  \"stdout_encoding\": \"...\",\n  \"cache_db\": \"...\",\n  \"storage_root\": \"...\",\n  \"project_root\": \"...\",\n  \"project_root_source\": \"discovered\",\n  \"binaries\": {},\n  \"packaging\": {\n    \"project_root\": \"...\",\n    \"project_root_source\": \"discovered\",\n    \"pip\": true,\n    \"venv\": true,\n    \"setuptools_build_meta\": true,\n    \"wheel\": true,\n    \"wheel_build_ready\": true,\n    \"python_module_smoke_ready\": true,\n    \"console_script_smoke_ready\": true,\n    \"full_packaging_smoke_ready\": true,\n    \"blockers\": [],\n    \"optional_gaps\": [],\n    \"console_script_strategy\": \"venv\"\n  },\n  \"recent_sources\": {},\n  \"recent_manifests\": [],\n  \"advice\": []\n}"},{"language":"bash","snippet":"python3 scripts/hunt.py search \"<query>\" [options]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: resource-hunter\nversion: 2.1.1\ndescription: \"Find the best public route to pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books. Uses layered success-first retrieval, public HTML/RSS/no-API sources, and direct/actionable/clue result ranking.\"\nmetadata: {\"openclaw\":{\"emoji\":\"🔎\"}}\n---\n\n# Resource Hunter\n\nA success-first public resource retrieval skill for:\n- movies\n- TV\n- anime\n- music\n- software\n- books\n- public pan links\n- magnets\n- torrents\n- public video URLs\n\n## What makes it useful\n\n### Stronger real-source coverage\n- Pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n- Torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- Indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n\n### Layered retrieval\n- `direct-structured-pan`\n- `direct-structured-torrent`\n- `community-clue`\n- `indexed-discovery`\n- `authenticated-connector` (reserved)\n\n### Better result semantics\nResults are ranked into:\n- `direct`\n- `actionable`\n- `clue`\n\nThat makes it easier to distinguish:\n- immediately usable links/magnets\n- results that still need light follow-up\n- clue-only records that point you in the right direction\n\n## Important limitations\n\n### Dalipan\n`dalipan` is currently a **token-only clue source** in release semantics.\n\n- anonymous search is confirmed\n- runtime emits `dalipan://provider/eu-token`\n- these records are structured clue output\n- they are **not guaranteed final share URLs** yet\n\n### Bing / Brave\n- public HTML fallback only\n- useful for recall and indexed discovery\n- still best-effort providers, not stable structured direct sources\n\n## Main entrypoint\n\n```bash\nSKILL_ROOT=\"$(openclaw skills path resource-hunter)\"\nSKILL_DIR=\"$SKILL_ROOT/scripts\"\npython3 \"$SKILL_DIR/hunt.py\" search \"<query>\"\n```\n\n## Common commands\n\n```bash\npython3 \"$SKILL_DIR/hunt.py\" search \"Oppenheimer 2023\" --4k\npython3 \"$SKILL_DIR/hunt.py\" search \"Breaking Bad S01E01\" --tv\npython3 \"$SKILL_DIR/hunt.py\" search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 \"$SKILL_DIR/hunt.py\" search \"周杰伦 无损\" --music\npython3 \"$SKILL_DIR/hunt.py\" sources --probe --json\npython3 \"$SKILL_DIR/hunt.py\" video probe \"https://www.bilibili.com/video/BV...\"\n```\n\n## Validation snapshot\n\n- focused runtime/source regression set: `96 passed, 1 skipped`\n- `ruff check skills/resource-hunter`: passed\n- latest GitHub `resource-hunter-ci`: green\n\n## Notes for agent behavior\n\n- Prefer the main `hunt.py` entrypoint\n- Use `--quick` for short chat answers\n- Use `--json` for machine-consumable output\n- Do not oversell Dalipan as a fully direct final-link source in the current release\n- Do not oversell Bing/Brave as stable structured providers"},{"path":"artifacts/live-tests/README.md","content":"# Live Test Artifacts\r\n\r\nThis directory contains probe-time evidence and temporary research material collected during source expansion.\r\n\r\n## What should be considered durable evidence\r\n\r\nKeep only files that help explain or reproduce an important retrieval decision, for example:\r\n\r\n- `next-batch/probe-summary.md`\r\n- `the-merry-widow-1952.json`\r\n- `inspect_the_merry_widow_1952.py`\r\n- selected HTML/JS captures that document why a source was or was not integrated\r\n\r\n## What should be considered temporary probe material\r\n\r\nMany files here are one-off probe scripts or raw page captures used during investigation.\r\nThey are useful for local research, but they are **not** the primary public contract of the skill.\r\n\r\nExamples include:\r\n- ad hoc probe scripts\r\n- raw search-result page captures\r\n- downloaded frontend bundles used only for reverse engineering\r\n\r\n## Sync guidance\r\n\r\nBefore external sync/review, treat this directory as:\r\n- evidence/supporting material\r\n- not the main runtime deliverable\r\n- something that may be trimmed further if a cleaner sync package is needed"},{"path":"README.md","content":"# Resource Hunter\n\nFind the best public route to public pan links, magnets, torrents, and public video URLs for movies, TV, anime, music, software, and books.\n\n`resource-hunter` is a success-first retrieval skill focused on **real public no-API sources** and **usable result quality**, not just broad source counting.\n\n## Highlights\n\n- **Broader real-source coverage**\n  - Pan/direct-or-clue: `2fun`, `dalipan`, `hunhepan`, `pansou.vip`, `tieba`\n  - Torrent/direct: `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n  - Indexed discovery fallback: `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- **Layered retrieval**\n  - direct structured pan\n  - direct structured torrent\n  - community clue mining\n  - indexed discovery fallback\n- **Better precision for tricky titles**\n  - year-conflict downgrade\n  - evidence fusion and corroboration\n  - actionability split into `direct`, `actionable`, and `clue`\n- **No API keys required**\n  - public HTML, RSS, magnet, and public page flows only\n- **Installable and scriptable**\n  - `resource-hunter`\n  - `python -m resource_hunter`\n  - `scripts/hunt.py`\n\n## What changed in 2.1.1\n\n- polished the GitHub / ClawHub surface copy for a clearer first impression\n- kept the success-first source expansion release intact\n- improved release-facing wording around:\n  - AnimeTosho / DMHY / Torlock integration\n  - Dalipan token-only clue semantics\n  - Bing / Brave indexed-discovery fallback role\n  - current validation and known limits\n\n## Important semantics and limits\n\n### Dalipan\nDalipan is currently integrated as a **public anonymous search clue source**.\n\n- anonymous search is confirmed\n- current runtime emits `dalipan://provider/eu-token`\n- those records are structured clue outputs, **not guaranteed final share URLs**\n- anonymous `detail/url` completion is still incomplete\n\n### Bing / Brave\n- public HTML fallback only\n- useful for recall\n- still best-effort indexed-discovery providers, not the same stability class as structured direct sources\n\n## Validation snapshot\n\n- focused runtime/source regression set: `96 passed, 1 skipped`\n- `ruff check skills/resource-hunter`: passed\n- GitHub `resource-hunter-ci`: green after Python 3.12 packaging-probe test stabilization\n\n## Common commands\n\n```bash\npython3 scripts/hunt.py search \"Oppenheimer 2023\" --kind movie --4k\npython3 scripts/hunt.py search \"Breaking Bad S01E01\" --tv\npython3 scripts/hunt.py search \"进击的巨人 Attack on Titan\" --anime --sub\npython3 scripts/hunt.py search \"周杰伦 无损\" --music --quick\npython3 scripts/hunt.py sources --probe --json\npython3 scripts/hunt.py video probe \"https://www.bilibili.com/video/BV...\"\n```\n\n## Current known limits\n\n- public HTML/RSS sources can drift, throttle, or region-block without notice\n- same-title different-year disambiguation is improved but still not perfect\n- `The Merry Widow 1952` remains a known hard live case\n- `PanSearch` looks promising but is not yet integrated because content-card link extraction is still un"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75j4g4f6yxhaq4zwrdzkfhsn83243y\",\n  \"slug\": \"resource-hunter\",\n  \"version\": \"2.1.1\",\n  \"publishedAt\": 1774315904437\n}"},{"path":"references/architecture.md","content":"# Resource Hunter v2 Architecture\n\n## Layout\n\n- `src/resource_hunter/`: installable Python package\n- `src/resource_hunter/config.py`: path and environment resolution\n- `src/resource_hunter/errors.py`: shared error types\n- `src/resource_hunter/intent.py`: intent parsing, alias enrichment, query graphs, source-aware budgets\n- `src/resource_hunter/adapters.py`: source adapters and runtime profiles\n- `src/resource_hunter/ranking.py`: ranking, validation, evidence fusion, and success-first ordering\n- `src/resource_hunter/rendering.py`: text and JSON rendering exports\n- `src/resource_hunter/retrieval_layers.py`: layered retrieval model and indexed discovery fallback\n- `src/resource_hunter/engine.py`: main search engine\n- `src/resource_hunter/precision_core.py`: compatibility implementation layer for the current v2 core\n- `src/resource_hunter/video_core.py`: yt-dlp workflow and manifest handling\n- `src/resource_hunter/cli.py`: unified CLI surface\n- `scripts/hunt.py`: primary legacy CLI wrapper\n- `scripts/pansou.py`: legacy pan wrapper\n- `scripts/torrent.py`: legacy torrent wrapper\n- `scripts/video.py`: legacy video wrapper\n\n## Search flow\n\n1. Parse query into `SearchIntent`\n2. Resolve aliases for movie-like Chinese queries when applicable\n3. Build a `SearchPlan`\n4. Expand source-aware query graphs and budgets\n5. Route to pan/torrent pipelines\n6. Query registered direct sources\n7. If no confident result is found, run indexed discovery fallback\n8. Normalize all results into `SearchResult`\n9. Deduplicate\n10. Score, validate, and fuse corroborating evidence\n11. Render text output or JSON\n12. Cache response and source health\n\n## Retrieval model\n\n### Retrieval layers\n- `direct-structured-pan`\n  - `2fun`, `dalipan`, `hunhepan`, `pansou.vip`\n- `direct-structured-torrent`\n  - `nyaa`, `animetosho`, `dmhy`, `eztv`, `tpb`, `torlock`, `yts`, `1337x`\n- `community-clue`\n  - `tieba`\n- `indexed-discovery`\n  - `search-index:ddg`, `search-index:bing`, `search-index:brave`\n- `authenticated-connector`\n  - reserved\n\n### Layer roles\n- `direct`: sources intended to produce immediately usable or near-usable structured results\n- `clue`: sources intended to produce thread-level or follow-up hints\n- `discovery`: search-engine fallback used when direct retrieval does not produce confident matches\n- `auth`: reserved for future authenticated connectors\n\n## Source adapter contract\n\nEach adapter implements:\n\n- `search(query, intent, limit, page, http_client) -> list[SearchResult]`\n- `healthcheck(http_client) -> (ok, error)`\n\nAll adapter outputs must already be normalized into the shared `SearchResult` structure.\n\n## Important release semantics\n\n- `AnimeTosho`, `DMHY`, and most torrent adapters produce direct magnet-ready results\n- `Bing` and `Brave` are indexed-discovery fallback providers, not the same stability class as structured direct sources\n- `DaliPan` is currently a **structured token-only clue source** in runtime semantics:\n  - anonymous search is confirmed via the public sear"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1874,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:43:00.935Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T15:34:02.517Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}