Not in the top 1,000 by GitHub stars
runningZ1/union-search-skill
一次搜索 51 个渠道,默认返回每个渠道取到的全部结果,再按页面地址去重。覆盖网页、GitHub、YouTube、知乎、播客和 AI 搜索。
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
7495b52b7614 → 7495b52b7614
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 7495b52b7614
No earlier version was observed for comparison.
Verified commit 7495b52b76140850eb26029c71779cffface757b
git clone --filter=blob:none --no-checkout https://github.com/runningZ1/union-search-skill.git .hotskills/runningz1-union-search-skill && git -C .hotskills/runningz1-union-search-skill checkout --detach 7495b52b76140850eb26029c71779cffface757b
# Copy each selected skill directory from .hotskills/runningz1-union-search-skill into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/runningZ1/union-search-skill.git .hotskills/runningz1-union-search-skill && git -C .hotskills/runningz1-union-search-skill checkout --detach 7495b52b76140850eb26029c71779cffface757b
# Copy each selected skill directory from .hotskills/runningz1-union-search-skill into .agents/skills/<skill-name>/Heat
3.8- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
union-search-skill
When your agent uses it
搜索互联网资料或指定平台内容时使用:联合搜索、GitHub、YouTube、微信、知乎、播客、通用搜索引擎、AI 搜索服务及本机搜索工具;也用于网页正文提取、图片搜索与下载、yt-dlp 媒体下载。支持单渠道和多渠道检索、去重、凭据检查及 JSON 结果。Use for web search, cross-platform research, webpage extraction, image search/download, and media download. 不用于仅处理用户已提供的文本或本地文件。
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
1,159 tokensWhen the skill is activated
Reference documents
135,541 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 执行顺序
- 任务入口
- 常用命令
- 结果契约
- 维护与验证
Scripts executed separately
package.jsonscripts/channels/ai_tools/__init__.pyscripts/channels/ai_tools/adapter.pyscripts/channels/ai_tools/native_search/__init__.pyscripts/channels/ai_tools/native_search/backends/__init__.pyscripts/channels/ai_tools/native_search/backends/claude.pyscripts/channels/ai_tools/native_search/backends/cli_json.pyscripts/channels/ai_tools/native_search/backends/codex.pyscripts/channels/ai_tools/native_search/backends/grok.pyscripts/channels/ai_tools/native_search/config.pyscripts/channels/ai_tools/native_search/errors.pyscripts/channels/ai_tools/native_search/textutil.pyscripts/channels/ai_tools/worker.pyscripts/channels/anysearch/anysearch_search.pyscripts/channels/baidu/baidu_no_api.pyscripts/channels/baidu/baidu_search.pyscripts/channels/bailian/bailian_search.pyscripts/channels/bing/bing_cn_no_api.pyscripts/channels/bing/bing_int_no_api.pyscripts/channels/bing/bing_serpapi_search.pyscripts/channels/brave/brave_no_api.pyscripts/channels/brave/brave_search.pyscripts/channels/deepseek/deepseek_search.pyscripts/channels/duckduckgo/duckduckgo_no_api.pyscripts/channels/duckduckgo/duckduckgo_search.pyscripts/channels/duckduckgo_instant/duckduckgo_instant.pyscripts/channels/ecosia/ecosia_no_api.pyscripts/channels/exa/exa_mcp.pyscripts/channels/exa/exa_search.pyscripts/channels/firecrawl/firecrawl_search.pyscripts/channels/github_search/github_search.pyscripts/channels/google_search/google_hk_no_api.pyscripts/channels/google_search/google_no_api.pyscripts/channels/google_search/google_search.pyscripts/channels/jina/jina_search.pyscripts/channels/jisilu/jisilu_no_api.pyscripts/channels/kimi/kimi_search.pyscripts/channels/metaso/metaso_search.pyscripts/channels/mojeek/mojeek_no_api.pyscripts/channels/no_api/__init__.pyscripts/channels/no_api/base_engine.pyscripts/channels/no_api/request_state.pyscripts/channels/no_api/web_search.pyscripts/channels/ollama_search/ollama_search.pyscripts/channels/parallel_search/parallel_search.pyscripts/channels/quark/quark_no_api.pyscripts/channels/qwant/qwant_no_api.pyscripts/channels/rss_search/rss_search.pyscripts/channels/serper/serper_search.pyscripts/channels/so360/so360_no_api.pyscripts/channels/sogou/sogou_no_api.pyscripts/channels/startpage/startpage_no_api.pyscripts/channels/tavily_search/tavily_search.pyscripts/channels/tinyfish/tinyfish_search.pyscripts/channels/toutiao/toutiao_no_api.pyscripts/channels/volcengine/volcengine_search.pyscripts/channels/wechat/package.jsonscripts/channels/wechat/search_wechat.jsscripts/channels/wechat/wechat_no_api.pyscripts/channels/wikipedia/wikipedia_search.pyscripts/channels/wolfram/wolfram_no_api.pyscripts/channels/xiaoyuzhoufm/xiaoyuzhou_search.pyscripts/channels/yahoo/yahoo_no_api.pyscripts/channels/yahoo/yahoo_search.pyscripts/channels/yandex/yandex_no_api.pyscripts/channels/yandex/yandex_search.pyscripts/channels/youtube/youtube_search.pyscripts/channels/yuanbao/yuanbao_search.pyscripts/channels/zhihu_official/zhihu_official_search.pyscripts/channels/zhipu/zhipu_search.pyscripts/cli/__init__.pyscripts/cli/adapters.pyscripts/cli/errors.pyscripts/cli/main.pyscripts/cli/output.pyscripts/cli/registry.pyscripts/cli/validators.pyscripts/downloader/__init__.pyscripts/downloader/yt_dlp_downloader.pyscripts/tests/test_ai_native_json.pyscripts/tests/test_ai_tools.pyscripts/tests/test_platform_groups.pyscripts/tests/test_result_cleaning.pyscripts/tests/test_unlimited_results.pyscripts/union_image_search/multi_platform_image_search.pyscripts/union_image_search/native_images.pyscripts/union_image_search/providers/catalogs.pyscripts/union_image_search/providers/search_engines.pyscripts/union_image_search/providers/specialty.pyscripts/union_image_search/volcengine_adapter.pyscripts/union_search/__init__.pyscripts/union_search/platform_metadata.pyscripts/union_search/search_logger.pyscripts/union_search/structured_results.pyscripts/union_search/union_search.pyscripts/url_to_markdown/__init__.pyscripts/url_to_markdown/__main__.pyscripts/url_to_markdown/engines/__init__.pyscripts/url_to_markdown/engines/defuddle-node/package.jsonscripts/url_to_markdown/engines/defuddle/__init__.pyscripts/url_to_markdown/engines/defuddle/defuddle_cli.pyscripts/url_to_markdown/engines/defuddle_engine.pyscripts/url_to_markdown/engines/firecrawl_engine.pyscripts/url_to_markdown/engines/jina_engine.pyscripts/url_to_markdown/url_to_markdown.pyunion_search_cli.py
Files
.env.exampleasset4,345 bytes.github/ISSUE_TEMPLATE/provider_listing.ymlasset3,779 bytes.gitignoreasset1,173 bytesAGENTS.mddoc3,175 bytesCLAUDE.mddoc11 bytesLICENSEasset1,088 bytesREADME.en.mddoc29,770 bytesREADME.mddoc28,073 bytesSKILL.mdcore4,544 bytesSKILL.mdcore4,544 bytesagents/_meta.jsonasset138 bytesagents/interface.yamlasset648 bytesassets/readme/channels.svgasset8,255 bytesassets/readme/en/channels.svgasset8,175 bytesassets/readme/en/hero.svgasset4,081 bytesassets/readme/en/provider-onboarding.svgasset2,453 bytesassets/readme/hero.svgasset4,115 bytesassets/readme/provider-onboarding.svgasset2,459 bytespackage-lock.jsonasset37,238 bytespackage.jsonruns104 bytesreferences/agent_api_key_setup.mddoc15,874 bytesreferences/api_credentials.mddoc11,427 bytesreferences/baidu_apikey_fetch.mddoc1,371 bytesreferences/google_search_guide.mddoc1,734 bytesreferences/output_fields.mddoc8,884 bytesreferences/platform_notes.mddoc4,740 bytesreferences/rate_limits.mddoc10,763 bytesreferences/search_workflow.mddoc9,132 bytesreferences/third_party.mddoc7,349 bytesreferences/troubleshooting.mddoc6,443 bytesrequirements.txtdoc145 bytesscripts/channels/ai_tools/README.mddoc4,157 bytesscripts/channels/ai_tools/__init__.pyruns49 bytesscripts/channels/ai_tools/adapter.pyruns3,736 bytesscripts/channels/ai_tools/examples/search-result-claude_code-info.jsonasset363 bytesscripts/channels/ai_tools/examples/search-result-claude_code.jsonasset1,341 bytesscripts/channels/ai_tools/examples/search-result-grok_build-info.jsonasset360 bytesscripts/channels/ai_tools/examples/search-result-grok_build.jsonasset1,745 bytesscripts/channels/ai_tools/examples/search-result-info.jsonasset339 bytesscripts/channels/ai_tools/examples/search-result.jsonasset1,785 bytesscripts/channels/ai_tools/native_search/__init__.pyruns86 bytesscripts/channels/ai_tools/native_search/backends/__init__.pyruns0 bytesscripts/channels/ai_tools/native_search/backends/claude.pyruns2,564 bytesscripts/channels/ai_tools/native_search/backends/cli_json.pyruns7,388 bytesscripts/channels/ai_tools/native_search/backends/codex.pyruns6,072 bytesscripts/channels/ai_tools/native_search/backends/grok.pyruns1,996 bytesscripts/channels/ai_tools/native_search/config.pyruns1,128 bytesscripts/channels/ai_tools/native_search/errors.pyruns401 bytesscripts/channels/ai_tools/native_search/textutil.pyruns1,208 bytesscripts/channels/ai_tools/output-analysis.mddoc15,267 bytesscripts/channels/ai_tools/worker.pyruns2,211 bytesscripts/channels/anysearch/README.mddoc2,572 bytesscripts/channels/anysearch/anysearch_search.pyruns6,881 bytesscripts/channels/anysearch/examples/search-result-info.jsonasset323 bytesscripts/channels/anysearch/examples/search-result.jsonasset2,376 bytesscripts/channels/anysearch/output-analysis.mddoc4,007 bytesscripts/channels/baidu/README.mddoc1,681 bytesscripts/channels/baidu/baidu_no_api.pyruns6,999 bytesscripts/channels/baidu/baidu_search.pyruns4,245 bytesscripts/channels/baidu/examples/search-result-baidu_direct-info.jsonasset323 bytesscripts/channels/baidu/examples/search-result-baidu_direct.jsonasset1,733 bytesscripts/channels/baidu/examples/search-result-info.jsonasset315 bytesscripts/channels/baidu/examples/search-result.jsonasset7,449 bytesscripts/channels/baidu/output-analysis.mddoc4,868 bytesscripts/channels/bailian/README.mddoc2,588 bytesscripts/channels/bailian/bailian_search.pyruns7,168 bytesscripts/channels/bailian/examples/search-result-info.jsonasset319 bytesscripts/channels/bailian/examples/search-result.jsonasset1,531 bytesscripts/channels/bailian/output-analysis.mddoc4,556 bytesscripts/channels/bing/README.mddoc1,931 bytesscripts/channels/bing/bing_cn_no_api.pyruns2,999 bytesscripts/channels/bing/bing_int_no_api.pyruns2,904 bytesscripts/channels/bing/bing_serpapi_search.pyruns9,068 bytesscripts/channels/bing/examples/search-result-bing_int_direct-info.jsonasset354 bytesscripts/channels/bing/examples/search-result-bing_int_direct.jsonasset1,850 bytesscripts/channels/bing/examples/search-result-info.jsonasset313 bytesscripts/channels/bing/examples/search-result.jsonasset1,391 bytesscripts/channels/bing/output-analysis.mddoc4,572 bytesscripts/channels/brave/README.mddoc2,483 bytesscripts/channels/brave/brave_no_api.pyruns541 bytesscripts/channels/brave/brave_search.pyruns4,536 bytesscripts/channels/brave/examples/search-result-info.jsonasset318 bytesscripts/channels/brave/examples/search-result.jsonasset2,205 bytesscripts/channels/brave/output-analysis.mddoc5,232 bytesscripts/channels/deepseek/README.mddoc2,206 bytesscripts/channels/deepseek/deepseek_search.pyruns6,145 bytesscripts/channels/deepseek/examples/search-result-info.jsonasset321 bytesscripts/channels/deepseek/examples/search-result.jsonasset12,960 bytesscripts/channels/deepseek/output-analysis.mddoc3,998 bytesscripts/channels/duckduckgo/README.mddoc1,393 bytesscripts/channels/duckduckgo/duckduckgo_no_api.pyruns1,081 bytesscripts/channels/duckduckgo/duckduckgo_search.pyruns4,507 bytesscripts/channels/duckduckgo/examples/search-result-info.jsonasset328 bytesscripts/channels/duckduckgo/examples/search-result.jsonasset2,116 bytesscripts/channels/duckduckgo/output-analysis.mddoc5,287 bytesscripts/channels/duckduckgo_instant/duckduckgo_instant.pyruns6,356 bytesscripts/channels/duckduckgo_instant/examples/search-result-info.jsonasset170 bytesscripts/channels/duckduckgo_instant/examples/search-result.jsonasset1,107 bytesscripts/channels/duckduckgo_instant/output-analysis.mddoc5,887 bytesscripts/channels/ecosia/ecosia_no_api.pyruns3,414 bytesscripts/channels/ecosia/output-analysis.mddoc4,837 bytesscripts/channels/exa/README.mddoc3,399 bytesscripts/channels/exa/exa_mcp.pyruns9,456 bytesscripts/channels/exa/exa_search.pyruns7,023 bytesscripts/channels/exa/examples/search-result-info.jsonasset311 bytesscripts/channels/exa/examples/search-result.jsonasset2,599 bytesscripts/channels/exa/mcporter.jsonasset266 bytesscripts/channels/exa/output-analysis.mddoc4,086 bytesscripts/channels/firecrawl/README.mddoc2,381 bytesscripts/channels/firecrawl/examples/search-result-info.jsonasset323 bytesscripts/channels/firecrawl/examples/search-result.jsonasset3,872 bytesscripts/channels/firecrawl/firecrawl_search.pyruns8,863 bytesscripts/channels/firecrawl/output-analysis.mddoc4,503 bytesscripts/channels/github_search/README.mddoc2,060 bytesscripts/channels/github_search/deepwiki.mddoc2,406 bytesscripts/channels/github_search/examples/search-result-info.jsonasset320 bytesscripts/channels/github_search/examples/search-result.jsonasset22,167 bytesscripts/channels/github_search/github_search.pyruns23,471 bytesscripts/channels/github_search/output-analysis.mddoc13,631 bytesscripts/channels/google_search/README.mddoc2,661 bytesscripts/channels/google_search/examples/search-result-info.jsonasset317 bytesscripts/channels/google_search/examples/search-result.jsonasset8,262 bytesscripts/channels/google_search/google_hk_no_api.pyruns3,586 bytesscripts/channels/google_search/google_no_api.pyruns3,712 bytesscripts/channels/google_search/google_search.pyruns4,941 bytesscripts/channels/google_search/output-analysis.mddoc4,708 bytesscripts/channels/jina/README.mddoc743 bytesscripts/channels/jina/examples/search-result-info.jsonasset313 bytesscripts/channels/jina/examples/search-result.jsonasset1,350 bytesscripts/channels/jina/jina_search.pyruns4,595 bytesscripts/channels/jina/output-analysis.mddoc3,860 bytesscripts/channels/jisilu/jisilu_no_api.pyruns3,041 bytesscripts/channels/jisilu/output-analysis.mddoc4,938 bytesscripts/channels/kimi/README.mddoc2,720 bytesscripts/channels/kimi/examples/search-result-info.jsonasset313 bytesscripts/channels/kimi/examples/search-result.jsonasset1,674 bytesscripts/channels/kimi/kimi_search.pyruns6,802 bytesscripts/channels/kimi/output-analysis.mddoc4,241 bytesscripts/channels/metaso/README.mddoc3,209 bytesscripts/channels/metaso/examples/search-result-info.jsonasset317 bytesscripts/channels/metaso/examples/search-result.jsonasset3,132 bytesscripts/channels/metaso/metaso_search.pyruns8,923 bytesscripts/channels/metaso/output-analysis.mddoc4,177 bytesscripts/channels/mojeek/mojeek_no_api.pyruns5,456 bytesscripts/channels/mojeek/output-analysis.mddoc5,118 bytesscripts/channels/no_api/README.mddoc3,085 bytesscripts/channels/no_api/__init__.pyruns52 bytesscripts/channels/no_api/base_engine.pyruns3,524 bytesscripts/channels/no_api/output-analysis.mddoc6,025 bytesscripts/channels/no_api/request_state.pyruns4,875 bytesscripts/channels/no_api/web_search.pyruns4,520 bytesscripts/channels/ollama_search/README.mddoc1,714 bytesscripts/channels/ollama_search/examples/search-result-info.jsonasset317 bytesscripts/channels/ollama_search/examples/search-result.jsonasset248,156 bytesscripts/channels/ollama_search/ollama_search.pyruns4,482 bytesscripts/channels/ollama_search/output-analysis.mddoc3,497 bytesscripts/channels/parallel_search/README.mddoc3,046 bytesscripts/channels/parallel_search/examples/search-result-info.jsonasset321 bytesscripts/channels/parallel_search/examples/search-result.jsonasset4,386 bytesscripts/channels/parallel_search/output-analysis.mddoc4,269 bytesscripts/channels/parallel_search/parallel_search.pyruns7,525 bytesscripts/channels/quark/README.mddoc2,143 bytesscripts/channels/quark/examples/search-result-info.jsonasset332 bytesscripts/channels/quark/examples/search-result.jsonasset2,218 bytesscripts/channels/quark/output-analysis.mddoc5,194 bytesscripts/channels/quark/quark_no_api.pyruns5,995 bytesscripts/channels/qwant/output-analysis.mddoc4,945 bytesscripts/channels/qwant/qwant_no_api.pyruns3,402 bytesscripts/channels/rss_search/README.mddoc5,392 bytesscripts/channels/rss_search/examples/search-result-info.jsonasset148 bytesscripts/channels/rss_search/examples/search-result.jsonasset9,549 bytesscripts/channels/rss_search/output-analysis.mddoc6,778 bytesscripts/channels/rss_search/rss_feeds.txtdoc3,636 bytesscripts/channels/rss_search/rss_search.pyruns22,016 bytesscripts/channels/serper/examples/search-result-info.jsonasset317 bytesscripts/channels/serper/examples/search-result.jsonasset1,476 bytesscripts/channels/serper/output-analysis.mddoc3,960 bytesscripts/channels/serper/serper_search.pyruns6,877 bytesscripts/channels/so360/README.mddoc899 bytesscripts/channels/so360/examples/search-result-info.jsonasset332 bytesscripts/channels/so360/examples/search-result.jsonasset1,602 bytesscripts/channels/so360/output-analysis.mddoc4,968 bytesscripts/channels/so360/so360_no_api.pyruns5,630 bytesscripts/channels/sogou/README.mddoc875 bytesscripts/channels/sogou/examples/search-result-info.jsonasset332 bytesscripts/channels/sogou/examples/search-result.jsonasset1,812 bytesscripts/channels/sogou/output-analysis.mddoc5,162 bytesscripts/channels/sogou/sogou_no_api.pyruns6,352 bytesscripts/channels/startpage/output-analysis.mddoc4,908 bytesscripts/channels/startpage/startpage_no_api.pyruns3,054 bytesscripts/channels/tavily_search/README.mddoc2,505 bytesscripts/channels/tavily_search/examples/search-result-info.jsonasset317 bytesscripts/channels/tavily_search/examples/search-result.jsonasset2,568 bytesscripts/channels/tavily_search/output-analysis.mddoc4,102 bytesscripts/channels/tavily_search/tavily_search.pyruns4,422 bytesscripts/channels/tinyfish/README.mddoc1,798 bytesscripts/channels/tinyfish/examples/search-result-info.jsonasset321 bytesscripts/channels/tinyfish/examples/search-result.jsonasset1,722 bytesscripts/channels/tinyfish/output-analysis.mddoc3,813 bytesscripts/channels/tinyfish/tinyfish_search.pyruns4,977 bytesscripts/channels/toutiao/output-analysis.mddoc4,978 bytesscripts/channels/toutiao/toutiao_no_api.pyruns3,043 bytesscripts/channels/volcengine/README.mddoc6,479 bytesscripts/channels/volcengine/examples/search-result-info.jsonasset325 bytesscripts/channels/volcengine/examples/search-result.jsonasset9,712 bytesscripts/channels/volcengine/output-analysis.mddoc4,834 bytesscripts/channels/volcengine/volcengine_search.pyruns21,204 bytesscripts/channels/wechat/README.mddoc2,730 bytesscripts/channels/wechat/examples/search-result-info.jsonasset156 bytesscripts/channels/wechat/examples/search-result.jsonasset2,681 bytesscripts/channels/wechat/output-analysis.mddoc6,208 bytesscripts/channels/wechat/package.jsonruns52 bytesscripts/channels/wechat/search_wechat.jsruns20,403 bytesscripts/channels/wechat/wechat_no_api.pyruns3,030 bytesscripts/channels/wikipedia/README.mddoc1,531 bytesscripts/channels/wikipedia/examples/search-result-info.jsonasset326 bytesscripts/channels/wikipedia/examples/search-result.jsonasset1,108 bytesscripts/channels/wikipedia/output-analysis.mddoc5,244 bytesscripts/channels/wikipedia/wikipedia_search.pyruns4,730 bytesscripts/channels/wolfram/output-analysis.mddoc5,192 bytesscripts/channels/wolfram/wolfram_no_api.pyruns3,185 bytesscripts/channels/xiaoyuzhoufm/README.mddoc2,643 bytesscripts/channels/xiaoyuzhoufm/examples/search-result-info.jsonasset329 bytesscripts/channels/xiaoyuzhoufm/examples/search-result.jsonasset7,285 bytesscripts/channels/xiaoyuzhoufm/output-analysis.mddoc6,096 bytesscripts/channels/xiaoyuzhoufm/xiaoyuzhou_search.pyruns5,816 bytesscripts/channels/yahoo/README.mddoc2,786 bytesscripts/channels/yahoo/examples/search-result-info.jsonasset318 bytesscripts/channels/yahoo/examples/search-result.jsonasset2,281 bytesscripts/channels/yahoo/output-analysis.mddoc5,348 bytesscripts/channels/yahoo/yahoo_no_api.pyruns541 bytesscripts/channels/yahoo/yahoo_search.pyruns5,612 bytesscripts/channels/yandex/README.mddoc1,949 bytesscripts/channels/yandex/examples/search-result-info.jsonasset317 bytesscripts/channels/yandex/examples/search-result-yandex_direct-info.jsonasset348 bytesscripts/channels/yandex/examples/search-result-yandex_direct.jsonasset2,138 bytesscripts/channels/yandex/examples/search-result.jsonasset1,799 bytesscripts/channels/yandex/output-analysis.mddoc4,500 bytesscripts/channels/yandex/yandex_no_api.pyruns2,609 bytesscripts/channels/yandex/yandex_search.pyruns5,284 bytesscripts/channels/youtube/README.mddoc1,433 bytesscripts/channels/youtube/examples/search-result-info.jsonasset319 bytesscripts/channels/youtube/examples/search-result.jsonasset8,917 bytesscripts/channels/youtube/output-analysis.mddoc7,085 bytesscripts/channels/youtube/youtube_search.pyruns16,679 bytesscripts/channels/yuanbao/README.mddoc3,049 bytesscripts/channels/yuanbao/examples/search-result-info.jsonasset319 bytesscripts/channels/yuanbao/examples/search-result.jsonasset14,390 bytesscripts/channels/yuanbao/output-analysis.mddoc4,275 bytesscripts/channels/yuanbao/yuanbao_search.pyruns7,521 bytesscripts/channels/zhihu_official/README.mddoc2,392 bytesscripts/channels/zhihu_official/examples/search-result-info.jsonasset333 bytesscripts/channels/zhihu_official/examples/search-result.jsonasset9,996 bytesscripts/channels/zhihu_official/output-analysis.mddoc6,416 bytesscripts/channels/zhihu_official/zhihu_official_search.pyruns9,914 bytesscripts/channels/zhipu/README.mddoc2,541 bytesscripts/channels/zhipu/examples/search-result-info.jsonasset315 bytesscripts/channels/zhipu/examples/search-result.jsonasset6,431 bytesscripts/channels/zhipu/output-analysis.mddoc4,403 bytesscripts/channels/zhipu/zhipu_search.pyruns7,569 bytesscripts/cli/README.mddoc13,794 bytesscripts/cli/__init__.pyruns50 bytesscripts/cli/adapters.pyruns9,001 bytesscripts/cli/errors.pyruns4,162 bytesscripts/cli/main.pyruns38,993 bytesscripts/cli/output.pyruns3,584 bytesscripts/cli/registry.pyruns3,030 bytesscripts/cli/validators.pyruns3,173 bytesscripts/downloader/__init__.pyruns1 bytesscripts/downloader/yt_dlp_downloader.pyruns11,688 bytesscripts/evals/README.mddoc3,752 bytesscripts/evals/semantic_config.jsonasset696 bytesscripts/evals/trigger_cases.jsonasset1,826 bytesscripts/tests/test_ai_native_json.pyruns3,289 bytesscripts/tests/test_ai_tools.pyruns4,998 bytesscripts/tests/test_platform_groups.pyruns4,671 bytesscripts/tests/test_result_cleaning.pyruns3,404 bytesscripts/tests/test_unlimited_results.pyruns5,917 bytesscripts/union_image_search/README.mddoc8,120 bytesscripts/union_image_search/multi_platform_image_search.pyruns19,342 bytesscripts/union_image_search/native_images.pyruns5,163 bytesscripts/union_image_search/providers/catalogs.pyruns8,784 bytesscripts/union_image_search/providers/search_engines.pyruns5,350 bytesscripts/union_image_search/providers/specialty.pyruns4,712 bytesscripts/union_image_search/volcengine_adapter.pyruns8,652 bytesscripts/union_search/README.mddoc8,077 bytesscripts/union_search/__init__.pyruns598 bytesscripts/union_search/platform_metadata.pyruns2,633 bytesscripts/union_search/search_logger.pyruns2,096 bytesscripts/union_search/structured_results.pyruns5,909 bytesscripts/union_search/union_search.pyruns76,012 bytesscripts/url_to_markdown/README.mddoc8,129 bytesscripts/url_to_markdown/__init__.pyruns1,023 bytesscripts/url_to_markdown/__main__.pyruns196 bytesscripts/url_to_markdown/engines/__init__.pyruns7,038 bytesscripts/url_to_markdown/engines/defuddle-node/package-lock.jsonasset30,954 bytesscripts/url_to_markdown/engines/defuddle-node/package.jsonruns286 bytesscripts/url_to_markdown/engines/defuddle/README.mddoc2,478 bytesscripts/url_to_markdown/engines/defuddle/__init__.pyruns297 bytesscripts/url_to_markdown/engines/defuddle/defuddle_cli.pyruns6,718 bytesscripts/url_to_markdown/engines/defuddle_engine.pyruns5,370 bytesscripts/url_to_markdown/engines/firecrawl_engine.pyruns3,109 bytesscripts/url_to_markdown/engines/jina_engine.pyruns5,665 bytesscripts/url_to_markdown/url_to_markdown.pyruns16,262 bytesunion_search_cli.pyruns462 bytes
Read SKILL.md
# 联合搜索
## 执行顺序
1. 定位本文件所在的技能根目录,在该目录运行 `python union_search_cli.py`。准备依赖、凭据和任务参数时阅读 [执行指南](references/search_workflow.md)。
2. 用 `list` 发现渠道、分组与图片平台;具体参数以子命令 `--help` 和 `schema` 为准。
3. 用户指定渠道时按指定范围执行;未指定时按资料类型和可用凭据选择渠道。`general` 是默认通用网页分组,会同时请求其中全部渠道;`no_api_key` 按认证条件分类。兼容渠道名称共用实现,同一来源在一次联合查询中只执行一次。
4. 将结果保存到任务目录,检查 `ok`、错误和实际文件,再根据来源回答。搜索摘要仅用于定位;需要核实细节时提取原文。
## 任务入口
| 任务 | 命令与按需阅读 |
|------|----------------|
| 联合或单渠道搜索 | `search` / `platform`;[执行指南](references/search_workflow.md)、[CLI 参数](scripts/cli/README.md) |View the complete source on GitHubSkills included
- union-search-skill
Repository facts
- License
- MIT
- Created
- Jan 31, 2026
- Last pushed
- Oct 26, 2026
- Forks
- 70
- Open issues
- 2
- Project activity
- Active
Rank over the last 12 weeks
Now #835 · best #719 · down 45 in 30 days
- #835 on Oct 18
- #875 on Oct 19
- #902 on Oct 21
- #870 on Oct 22
- #886 on Oct 23
- #835 since Oct 24
48 earlier periods
- #721 on Aug 2
- #719 on Aug 7
- #724 on Aug 8
- #729 on Aug 9
- #761 from Aug 10 to Aug 11
- #760 on Aug 12
- #747 on Aug 16
- #760 on Aug 17
- #768 on Aug 20
- #733 on Aug 22
- #802 on Aug 24
- #795 on Aug 26
- #834 on Aug 28
- #771 on Aug 30
- #811 on Aug 31
- #833 on Sep 1
- #796 on Sep 4
- #776 on Sep 5
- #804 on Sep 6
- #824 on Sep 7
- #828 on Sep 9
- #835 on Sep 10
- #810 on Sep 11
- #804 on Sep 12
- #799 on Sep 13
- #832 on Sep 14
- #816 on Sep 15
- #829 on Sep 16
- #832 on Sep 17
- #804 on Sep 20
- #812 on Sep 21
- #836 on Sep 22
- #824 on Sep 23
- #790 on Sep 24
- #761 on Sep 25
- #823 on Sep 28
- #831 on Sep 30
- #793 on Oct 2
- #775 on Oct 3
- #804 on Oct 4
- #818 on Oct 5
- #816 on Oct 6
- #882 on Oct 8
- #826 from Oct 10 to Oct 11
- #850 on Oct 12
- #859 on Oct 13
- #869 on Oct 14
- #860 on Oct 15
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 10 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/channels/deepseek/examples/search-result.json:25Analysis incomplete: physical or joined line exceeds character limitscripts/channels/deepseek/examples/search-result.json:23Analysis incomplete: physical or joined line exceeds character limitscripts/channels/deepseek/examples/search-result.json:24Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:10Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:8Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:9Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:22Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:20Analysis incomplete: physical or joined line exceeds character limitscripts/channels/ollama_search/examples/search-result.json:21Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- No dangerous shell commands
- 2,360 network referencesin 204 files: package-lock.json:13 scripts/url_to_markdown/engines/defuddle-node/package-lock.json:19 scripts/channels/github_search/examples/search-result.json:15 and 201 more
- 1 obfuscation signalin 1 file: scripts/union_search/structured_results.py:54
- No instruction overrides
- 106 executable scriptsin 106 files: package.json:1 scripts/channels/ai_tools/__init__.py:1 scripts/channels/ai_tools/adapter.py:1 and 103 more
- 639 references to secretsin 85 files: scripts/union_search/union_search.py:184 references/api_credentials.md:23 scripts/union_search/platform_metadata.py:8 and 82 more
- No requests to vote in Hot
Show all 3,106 signals by file
.env.example
- Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Network accessline 15
[Credential-related source omitted] - Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 17
# 自建 Firecrawl 服务时填写,默认 https://api.firecrawl.dev - Network accessline 20
[Credential-related source omitted] - Network accessline 21
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Network accessline 22
# 默认 https://api.deepseek.com - Network accessline 25
[Credential-related source omitted] - Network accessline 26
[Credential-related source omitted] - Network accessline 27
# 默认 https://api.wsa.cloud.tencent.com/SearchPro - Network accessline 30
[Credential-related source omitted] - Network accessline 31
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Network accessline 32
# 默认 https://api.search.tinyfish.ai - Network accessline 35
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Network accessline 36
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Network accessline 37
# 默认 https://api.anysearch.com/v1/search - Network accessline 40
[Credential-related source omitted] - Network accessline 41
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 42
# 默认 https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation - Network accessline 47
[Credential-related source omitted] - Network accessline 48
[Credential-related source omitted] - Network accessline 49
# 默认 https://developer.zhihu.com - Network accessline 52
[Credential-related source omitted] - Network accessline 53
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Network accessline 54
# 默认 https://api.parallel.ai/v1/search - Network accessline 59
[Credential-related source omitted] - Network accessline 60
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Network accessline 61
# 默认 https://ollama.com/api/web_search - Access to secretsline 65
[Credential-related source omitted] - Network accessline 66
# 默认 search_std,可选 search_pro、search_pro_sogou、search_pro_quark ZHIPU_SEARCH_ENGINE=search_std # 默认 https://open.bigmodel.cn/api/paas/v4/web_search - Network accessline 67
ZHIPU_SEARCH_ENGINE=search_std # 默认 https://open.bigmodel.cn/api/paas/v4/web_search ZHIPU_WEB_SEARCH_ENDPOINT= - Network accessline 68
# 默认 https://open.bigmodel.cn/api/paas/v4/web_search - Network accessline 71
[Credential-related source omitted] - Network accessline 72
[Credential-related source omitted] - Access to secretsline 72
[Credential-related source omitted] - Network accessline 73
# 默认 https://api.moonshot.cn/v1 - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Access to secretsline 89
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 93
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Access to secretsline 98
[Credential-related source omitted] - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted]
.github/ISSUE_TEMPLATE/provider_listing.yml
- Network accessline 14
attributes: label: 服务名称与官网 / Service name and website placeholder: Example Search · https://example.com - Network accessline 15
label: 服务名称与官网 / Service name and website placeholder: Example Search · https://example.com validations: - Network accessline 16
placeholder: Example Search · https://example.com - Access to secretsline 44
[Credential-related source omitted] - Network accessline 58
attributes: label: 请求示例 / Example request description: curl 示例或官方 SDK 用法,Key 用占位符代替 / curl or SDK usage with a placeholder key - Network accessline 59
label: 请求示例 / Example request description: curl 示例或官方 SDK 用法,Key 用占位符代替 / curl or SDK usage with a placeholder key render: bash - Network accessline 60
description: curl 示例或官方 SDK 用法,Key 用占位符代替 / curl or SDK usage with a placeholder key
.gitignore
- Access to secretsline 40
[Credential-related source omitted]
README.en.md
- Network accessline 9
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a> - Network accessline 10
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a> - Network accessline 11
<img src="https://img.shields.io/badge/search_channels-51-86edc5.svg" alt="51 search channels"> - Network accessline 12
<img src="https://img.shields.io/badge/python-3.10%2B-3776ab.svg" alt="Python 3.10+"> - Network accessline 13
<img src="https://img.shields.io/badge/agent-Claude_Code_%7C_Codex-b9a6ff.svg" alt="Works with Claude Code and Codex"> - Network accessline 45
git clone https://github.com/runningZ1/union-search-skill.git - Access to secretsline 63
[Credential-related source omitted] - Network accessline 123
python union_search_cli.py defuddle "https://example.com" --pretty - Network accessline 124
python union_search_cli.py defuddle "https://example.com" --format markdown -o out/article.md - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Access to secretsline 237
[Credential-related source omitted] - Network accessline 317
1. Fill in the [provider listing request](https://github.com/runningZ1/union-search-skill/issues/new?template=provider_listing.yml) with your API docs, authentication, quota and response fields. Do not paste real keys into the issue. - Network accessline 393
If a feature does not work, results look wrong, an upgrade breaks something or the docs are incorrect, please report it in [GitHub Issues](https://github.com/runningZ1/union-search-skill/issues). Search existing issues first; if there is no - Network accessline 412
| Purpose | Projects | | --- | --- | | HTTP requests, configuration and HTML parsing | [Requests](https://github.com/psf/requests), [python-dotenv](https://github.com/theskumar/python-dotenv), [lxml](https://github.com/lxml/lxml) | - Network accessline 413
| --- | --- | | HTTP requests, configuration and HTML parsing | [Requests](https://github.com/psf/requests), [python-dotenv](https://github.com/theskumar/python-dotenv), [lxml](https://github.com/lxml/lxml) | | Logging and structured data v - Network accessline 414
| HTTP requests, configuration and HTML parsing | [Requests](https://github.com/psf/requests), [python-dotenv](https://github.com/theskumar/python-dotenv), [lxml](https://github.com/lxml/lxml) | - Network accessline 415
| Logging and structured data validation | [Loguru](https://github.com/Delgan/loguru), [Pydantic](https://github.com/pydantic/pydantic) | | Images, media download and processing | [Pillow](https://github.com/python-pillow/Pillow), [chompjs] - Network accessline 416
| Images, media download and processing | [Pillow](https://github.com/python-pillow/Pillow), [chompjs](https://github.com/Nykakin/chompjs), [pyimagedl / imagedl](https://github.com/CharlesPikachu/imagedl), [yt-dlp](https://github.com/yt-dlp - Network accessline 417
| Search service SDKs | [tavily-python](https://github.com/tavily-ai/tavily-python), [firecrawl-py](https://pypi.org/project/firecrawl-py/) | - Network accessline 418
| Web extraction and Node.js tooling | [Defuddle](https://github.com/kepano/defuddle), [Cheerio](https://github.com/cheeriojs/cheerio), [Commander.js](https://github.com/tj/commander.js), [jsdom](https://github.com/jsdom/jsdom) |
README.md
- Network accessline 9
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a> - Network accessline 10
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a> - Network accessline 11
<img src="https://img.shields.io/badge/search_channels-51-86edc5.svg" alt="51 个搜索渠道"> - Network accessline 12
<img src="https://img.shields.io/badge/python-3.10%2B-3776ab.svg" alt="Python 3.10+"> - Network accessline 13
<img src="https://img.shields.io/badge/agent-Claude_Code_%7C_Codex-b9a6ff.svg" alt="适用于 Claude Code 和 Codex"> - Network accessline 45
git clone https://github.com/runningZ1/union-search-skill.git - Access to secretsline 63
[Credential-related source omitted] - Network accessline 123
python union_search_cli.py defuddle "https://example.com" --pretty - Network accessline 124
python union_search_cli.py defuddle "https://example.com" --format markdown -o out/article.md - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Network accessline 315
1. 填写[服务商入驻申请](https://github.com/runningZ1/union-search-skill/issues/new?template=provider_listing.yml),说明 API 文档、认证方式、额度和返回字段。请勿在 Issue 中粘贴真实 Key。 - Network accessline 391
使用中遇到功能不可用、结果异常、升级兼容问题或文档错误,请到 [GitHub Issues](https://github.com/runningZ1/union-search-skill/issues) 反馈。提交前可先搜索已有 Issue;没有相同问题时,[新建 Issue](https://github.com/runningZ1/union-search-skill/issues/new) 描述情况,也欢迎提交 Pull Request。 - Network accessline 410
| 用途 | 相关项目 | | --- | --- | | HTTP 请求、配置和 HTML 解析 | [Requests](https://github.com/psf/requests)、[python-dotenv](https://github.com/theskumar/python-dotenv)、[lxml](https://github.com/lxml/lxml) | - Network accessline 411
| --- | --- | | HTTP 请求、配置和 HTML 解析 | [Requests](https://github.com/psf/requests)、[python-dotenv](https://github.com/theskumar/python-dotenv)、[lxml](https://github.com/lxml/lxml) | | 日志与结构化数据校验 | [Loguru](https://github.com/Delgan/loguru)、[ - Network accessline 412
| HTTP 请求、配置和 HTML 解析 | [Requests](https://github.com/psf/requests)、[python-dotenv](https://github.com/theskumar/python-dotenv)、[lxml](https://github.com/lxml/lxml) | - Network accessline 413
| 日志与结构化数据校验 | [Loguru](https://github.com/Delgan/loguru)、[Pydantic](https://github.com/pydantic/pydantic) | - Network accessline 414
| 图片、媒体下载与处理 | [Pillow](https://github.com/python-pillow/Pillow)、[chompjs](https://github.com/Nykakin/chompjs)、[pyimagedl / imagedl](https://github.com/CharlesPikachu/imagedl)、[yt-dlp](https://github.com/yt-dlp/yt-dlp)、[FFmpeg](https://ffmp - Network accessline 415
| 搜索服务 SDK | [tavily-python](https://github.com/tavily-ai/tavily-python)、[firecrawl-py](https://pypi.org/project/firecrawl-py/) | - Network accessline 416
| 网页提取与 Node.js 工具 | [Defuddle](https://github.com/kepano/defuddle)、[Cheerio](https://github.com/cheeriojs/cheerio)、[Commander.js](https://github.com/tj/commander.js)、[jsdom](https://github.com/jsdom/jsdom) |
SKILL.md
- Access to secretsline 12
[Credential-related source omitted] - Network accessline 35
python union_search_cli.py doctor --platforms github wikipedia python union_search_cli.py search "Python packaging" --platforms github wikipedia --limit 3 --deduplicate -o .work/search.json python union_search_cli.py defuddle "https://examp - Network accessline 36
python union_search_cli.py search "Python packaging" --platforms github wikipedia --limit 3 --deduplicate -o .work/search.json python union_search_cli.py defuddle "https://example.com" --format markdown -o .work/article.md python union_sear - Network accessline 37
python union_search_cli.py defuddle "https://example.com" --format markdown -o .work/article.md python union_search_cli.py image "mountain landscape" --platforms bing --limit 5 --output-dir .work/images -o .work/images.json python union_sea
assets/readme/channels.svg
assets/readme/en/channels.svg
assets/readme/en/hero.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="440" viewBox="0 0 1200 440" role="img" aria-labelledby="title desc">
assets/readme/en/provider-onboarding.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="336" viewBox="0 0 1200 336" role="img" aria-labelledby="title desc">
assets/readme/hero.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="440" viewBox="0 0 1200 440" role="img" aria-labelledby="title desc">
assets/readme/provider-onboarding.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="336" viewBox="0 0 1200 336" role="img" aria-labelledby="title desc">
package-lock.json
- Network accessline 13
"node_modules/@asamuzakjp/css-color": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - Network accessline 14
"version": "3.2.0", "resolved": "https://registry.npmmirror.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - Network accessline 15
"resolved": "https://registry.npmmirror.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - Network accessline 26
"node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - Network accessline 27
"version": "5.1.0", "resolved": "https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - Network accessline 28
"resolved": "https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - Network accessline 31
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 32
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 33
"url": "https://github.com/sponsors/csstools" - Network accessline 35
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 36
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 37
"url": "https://opencollective.com/csstools" - Network accessline 45
"node_modules/@csstools/css-calc": { "version": "2.1.4", "resolved": "https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-2.1.4.tgz", - Network accessline 46
"version": "2.1.4", "resolved": "https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-2.1.4.tgz", "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - Network accessline 47
"resolved": "https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-2.1.4.tgz", - Network accessline 50
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 51
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 52
"url": "https://github.com/sponsors/csstools" - Network accessline 54
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 55
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 56
"url": "https://opencollective.com/csstools" - Network accessline 68
"node_modules/@csstools/css-color-parser": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - Network accessline 69
"version": "3.1.0", "resolved": "https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaT - Network accessline 70
"resolved": "https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - Network accessline 73
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 74
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 75
"url": "https://github.com/sponsors/csstools" - Network accessline 77
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 78
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 79
"url": "https://opencollective.com/csstools" - Network accessline 95
"node_modules/@csstools/css-parser-algorithms": { "version": "3.0.5", "resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - Network accessline 96
"version": "3.0.5", "resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpM - Network accessline 97
"resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - Network accessline 100
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 101
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 102
"url": "https://github.com/sponsors/csstools" - Network accessline 104
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 105
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 106
"url": "https://opencollective.com/csstools" - Network accessline 117
"node_modules/@csstools/css-tokenizer": { "version": "3.0.4", "resolved": "https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - Network accessline 118
"version": "3.0.4", "resolved": "https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - Network accessline 119
"resolved": "https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - Network accessline 122
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 123
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 124
"url": "https://github.com/sponsors/csstools" - Network accessline 126
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 127
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 128
"url": "https://opencollective.com/csstools" - Network accessline 136
"node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", - Network accessline 137
"version": "7.1.4", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - Network accessline 138
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", - Network accessline 145
"node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - Network accessline 146
"version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - Network accessline 147
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - Network accessline 151
"node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", - Network accessline 152
"version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - Network accessline 153
"resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", - Network accessline 157
"node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 158
"version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTO - Network accessline 159
"resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 170
"node_modules/cheerio": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.2.0.tgz", - Network accessline 171
"version": "1.2.0", "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.2.0.tgz", "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - Network accessline 172
"resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.2.0.tgz", - Network accessline 190
}, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - Network accessline 191
"funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } - Network accessline 192
"url": "https://github.com/cheeriojs/cheerio?sponsor=1" - Network accessline 195
"node_modules/cheerio-select": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", - Network accessline 196
"version": "2.1.0", "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - Network accessline 197
"resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", - Network accessline 207
}, "funding": { "url": "https://github.com/sponsors/fb55" - Network accessline 208
"funding": { "url": "https://github.com/sponsors/fb55" } - Network accessline 209
"url": "https://github.com/sponsors/fb55" - Network accessline 212
"node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", - Network accessline 213
"version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - Network accessline 214
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", - Network accessline 224
"node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", - Network accessline 225
"version": "12.1.0", "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - Network accessline 226
"resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", - Network accessline 233
"node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.2.2.tgz", - Network accessline 234
"version": "5.2.2", "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.2.2.tgz", "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - Network accessline 235
"resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.2.2.tgz", - Network accessline 244
}, "funding": { "url": "https://github.com/sponsors/fb55" - Network accessline 245
"funding": { "url": "https://github.com/sponsors/fb55" } - Network accessline 246
"url": "https://github.com/sponsors/fb55" - Network accessline 249
"node_modules/css-what": { "version": "6.2.2", "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.2.2.tgz", - Network accessline 250
"version": "6.2.2", "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.2.2.tgz", "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - Network accessline 251
"resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.2.2.tgz", - Network accessline 256
}, "funding": { "url": "https://github.com/sponsors/fb55" - Network accessline 257
"funding": { "url": "https://github.com/sponsors/fb55" } - Network accessline 258
"url": "https://github.com/sponsors/fb55" - Network accessline 261
"node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-4.6.0.tgz", - Network accessline 262
"version": "4.6.0", "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-4.6.0.tgz", "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - Network accessline 263
"resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-4.6.0.tgz", - Network accessline 274
"node_modules/cssstyle/node_modules/rrweb-cssom": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - Network accessline 275
"version": "0.8.0", "resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - Network accessline 276
"resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - Network accessline 280
"node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-5.0.0.tgz", - Network accessline 281
"version": "5.0.0", "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-5.0.0.tgz", "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - Network accessline 282
"resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-5.0.0.tgz", - Network accessline 293
"node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", - Network accessline 294
"version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - Network accessline 295
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", - Network accessline 310
"node_modules/decimal.js": { "version": "10.6.0", "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.6.0.tgz", - Network accessline 311
"version": "10.6.0", "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - Network accessline 312
"resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.6.0.tgz", - Network accessline 316
"node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", - Network accessline 317
"version": "1.0.0", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - Network accessline 318
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", - Network accessline 325
"node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", - Network accessline 326
"version": "2.0.0", "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - Network accessline 327
"resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", - Network accessline 334
}, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - Network accessline 335
"funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } - Network accessline 336
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - Network accessline 339
"node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - Network accessline 340
"version": "2.3.0", "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - Network accessline 341
"resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - Network accessline 344
{ "type": "github", "url": "https://github.com/sponsors/fb55" - Network accessline 345
"type": "github", "url": "https://github.com/sponsors/fb55" } - Network accessline 346
"url": "https://github.com/sponsors/fb55" - Network accessline 351
"node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", - Network accessline 352
"version": "5.0.3", "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - Network accessline 353
"resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", - Network accessline 361
}, "funding": { "url": "https://github.com/fb55/domhandler?sponsor=1" - Network accessline 362
"funding": { "url": "https://github.com/fb55/domhandler?sponsor=1" } - Network accessline 363
"url": "https://github.com/fb55/domhandler?sponsor=1" - Network accessline 366
"node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz", - Network accessline 367
"version": "3.2.2", "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - Network accessline 368
"resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz", - Network accessline 375
}, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" - Network accessline 376
"funding": { "url": "https://github.com/fb55/domutils?sponsor=1" } - Network accessline 377
"url": "https://github.com/fb55/domutils?sponsor=1" - Network accessline 380
"node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 381
"version": "1.0.1", "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - Network accessline 382
"resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 394
"node_modules/encoding-sniffer": { "version": "0.2.1", "resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - Network accessline 395
"version": "0.2.1", "resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - Network accessline 396
"resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - Network accessline 402
}, "funding": { "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - Network accessline 403
"funding": { "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } - Network accessline 404
"url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - Network accessline 407
"node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", - Network accessline 408
"version": "4.5.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - Network accessline 409
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", - Network accessline 414
}, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 415
"funding": { "url": "https://github.com/fb55/entities?sponsor=1" } - Network accessline 416
"url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 419
"node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 420
"version": "1.0.1", "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - Network accessline 421
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 428
"node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 429
"version": "1.3.0", "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - Network accessline 430
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 437
"node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 438
"version": "1.1.1", "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - Network accessline 439
"resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 449
"node_modules/es-set-tostringtag": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - Network accessline 450
"version": "2.1.0", "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - Network accessline 451
"resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - Network accessline 464
"node_modules/form-data": { "version": "4.0.5", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", - Network accessline 465
"version": "4.0.5", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - Network accessline 466
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", - Network accessline 480
"node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 481
"version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - Network accessline 482
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 484
"license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 485
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 486
"url": "https://github.com/sponsors/ljharb" - Network accessline 489
"node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 490
"version": "1.3.0", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - Network accessline 491
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 508
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 509
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 510
"url": "https://github.com/sponsors/ljharb" - Network accessline 513
"node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 514
"version": "1.0.1", "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - Network accessline 515
"resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 526
"node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", - Network accessline 527
"version": "1.2.0", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - Network accessline 528
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", - Network accessline 533
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 534
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 535
"url": "https://github.com/sponsors/ljharb" - Network accessline 538
"node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 539
"version": "1.1.0", "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - Network accessline 540
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 545
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 546
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 547
"url": "https://github.com/sponsors/ljharb" - Network accessline 550
"node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - Network accessline 551
"version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - Network accessline 552
"resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - Network accessline 560
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 561
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 562
"url": "https://github.com/sponsors/ljharb" - Network accessline 565
"node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", - Network accessline 566
"version": "2.0.2", "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - Network accessline 567
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", - Network accessline 577
"node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - Network accessline 578
"version": "4.0.0", "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTg - Network accessline 579
"resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - Network accessline 589
"node_modules/htmlparser2": { "version": "10.1.0", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-10.1.0.tgz", - Network accessline 590
"version": "10.1.0", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-10.1.0.tgz", "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - Network accessline 591
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-10.1.0.tgz", - Network accessline 592
"integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", - Network accessline 593
"funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { - Network accessline 594
"https://github.com/fb55/htmlparser2?sponsor=1", - Network accessline 595
{ "type": "github", "url": "https://github.com/sponsors/fb55" - Network accessline 596
"type": "github", "url": "https://github.com/sponsors/fb55" } - Network accessline 597
"url": "https://github.com/sponsors/fb55" - Network accessline 608
"node_modules/htmlparser2/node_modules/entities": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", - Network accessline 609
"version": "7.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - Network accessline 610
"resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", - Network accessline 615
}, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 616
"funding": { "url": "https://github.com/fb55/entities?sponsor=1" } - Network accessline 617
"url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 620
"node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - Network accessline 621
"version": "7.0.2", "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - Network accessline 622
"resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - Network accessline 633
"node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - Network accessline 634
"version": "7.0.6", "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - Network accessline 635
"resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - Network accessline 646
"node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", - Network accessline 647
"version": "0.6.3", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - Network accessline 648
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", - Network accessline 658
"node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - Network accessline 659
"version": "1.0.1", "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64 - Network accessline 660
"resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - Network accessline 664
"node_modules/jsdom": { "version": "24.1.3", "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-24.1.3.tgz", - Network accessline 665
"version": "24.1.3", "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-24.1.3.tgz", "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", - Network accessline 666
"resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-24.1.3.tgz", - Network accessline 704
"node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", - Network accessline 705
"version": "10.4.3", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - Network accessline 706
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", - Network accessline 710
"node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 711
"version": "1.1.0", "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - Network accessline 712
"resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 719
"node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - Network accessline 720
"version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - Network accessline 721
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - Network accessline 728
"node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - Network accessline 729
"version": "2.1.35", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - Network accessline 730
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - Network accessline 740
"node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - Network accessline 741
"version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - Network accessline 742
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - Network accessline 746
"node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", - Network accessline 747
"version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - Network accessline 748
"resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", - Network accessline 753
}, "funding": { "url": "https://github.com/fb55/nth-check?sponsor=1" - Network accessline 754
"funding": { "url": "https://github.com/fb55/nth-check?sponsor=1" } - Network accessline 755
"url": "https://github.com/fb55/nth-check?sponsor=1" - Network accessline 758
"node_modules/nwsapi": { "version": "2.2.23", "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.23.tgz", - Network accessline 759
"version": "2.2.23", "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.23.tgz", "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - Network accessline 760
"resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.23.tgz", - Network accessline 764
"node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", - Network accessline 765
"version": "7.3.0", "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - Network accessline 766
"resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", - Network accessline 771
}, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 772
"funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } - Network accessline 773
"url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 776
"node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.1.0", "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - Network accessline 777
"version": "7.1.0", "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8eue - Network accessline 778
"resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - Network accessline 784
}, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 785
"funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } - Network accessline 786
"url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 789
"node_modules/parse5-parser-stream": { "version": "7.1.2", "resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - Network accessline 790
"version": "7.1.2", "resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow= - Network accessline 791
"resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - Network accessline 796
}, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 797
"funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } - Network accessline 798
"url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 801
"node_modules/parse5/node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", - Network accessline 802
"version": "6.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - Network accessline 803
"resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", - Network accessline 808
}, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 809
"funding": { "url": "https://github.com/fb55/entities?sponsor=1" } - Network accessline 810
"url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 813
"node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmmirror.com/psl/-/psl-1.15.0.tgz", - Network accessline 814
"version": "1.15.0", "resolved": "https://registry.npmmirror.com/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - Network accessline 815
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.15.0.tgz", - Network accessline 820
}, "funding": { "url": "https://github.com/sponsors/lupomontero" - Network accessline 821
"funding": { "url": "https://github.com/sponsors/lupomontero" } - Network accessline 822
"url": "https://github.com/sponsors/lupomontero" - Network accessline 825
"node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", - Network accessline 826
"version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - Network accessline 827
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", - Network accessline 834
"node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", - Network accessline 835
"version": "2.2.0", "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - Network accessline 836
"resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", - Network accessline 840
"node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", - Network accessline 841
"version": "1.0.0", "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - Network accessline 842
"resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", - Network accessline 846
"node_modules/rrweb-cssom": { "version": "0.7.1", "resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - Network accessline 847
"version": "0.7.1", "resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - Network accessline 848
"resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - Network accessline 852
"node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 853
"version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - Network accessline 854
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 858
"node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz", - Network accessline 859
"version": "6.0.0", "resolved": "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - Network accessline 860
"resolved": "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz", - Network accessline 870
"node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", - Network accessline 871
"version": "3.2.4", "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - Network accessline 872
"resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", - Network accessline 876
"node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz", - Network accessline 877
"version": "4.1.4", "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - Network accessline 878
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz", - Network accessline 891
"node_modules/tr46": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-5.1.1.tgz", - Network accessline 892
"version": "5.1.1", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-5.1.1.tgz", "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - Network accessline 893
"resolved": "https://registry.npmmirror.com/tr46/-/tr46-5.1.1.tgz", - Network accessline 903
"node_modules/undici": { "version": "7.25.0", "resolved": "https://registry.npmmirror.com/undici/-/undici-7.25.0.tgz", - Network accessline 904
"version": "7.25.0", "resolved": "https://registry.npmmirror.com/undici/-/undici-7.25.0.tgz", "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==", - Network accessline 905
"resolved": "https://registry.npmmirror.com/undici/-/undici-7.25.0.tgz", - Network accessline 912
"node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz", - Network accessline 913
"version": "0.2.0", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - Network accessline 914
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz", - Network accessline 921
"node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", - Network accessline 922
"version": "1.5.10", "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - Network accessline 923
"resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", - Network accessline 931
"node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - Network accessline 932
"version": "5.0.0", "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - Network accessline 933
"resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - Network accessline 943
"node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - Network accessline 944
"version": "7.0.0", "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - Network accessline 945
"resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - Network accessline 952
"node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - Network accessline 953
"version": "3.1.1", "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - Network accessline 954
"resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - Network accessline 965
"node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - Network accessline 966
"version": "4.0.0", "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - Network accessline 967
"resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - Network accessline 974
"node_modules/whatwg-url": { "version": "14.2.0", "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-14.2.0.tgz", - Network accessline 975
"version": "14.2.0", "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-14.2.0.tgz", "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - Network accessline 976
"resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-14.2.0.tgz", - Network accessline 987
"node_modules/ws": { "version": "8.20.0", "resolved": "https://registry.npmmirror.com/ws/-/ws-8.20.0.tgz", - Network accessline 988
"version": "8.20.0", "resolved": "https://registry.npmmirror.com/ws/-/ws-8.20.0.tgz", "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", - Network accessline 989
"resolved": "https://registry.npmmirror.com/ws/-/ws-8.20.0.tgz", - Network accessline 1008
"node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - Network accessline 1009
"version": "5.0.0", "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - Network accessline 1010
"resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - Network accessline 1017
"node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", - Network accessline 1018
"version": "2.2.0", "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - Network accessline 1019
"resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
package.json
- Executable scriptline 1
Executable file
references/agent_api_key_setup.md
- Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 123
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 127
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 136
[Credential-related source omitted] - Access to secretsline 137
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted]
references/api_credentials.md
- Network accessline 9
**获取地址**: https://github.com/settings/tokens - Access to secretsline 23
[Credential-related source omitted] - Network accessline 35
**获取地址**: - API Key: https://console.cloud.google.com/apis/credentials - Network accessline 36
- API Key: https://console.cloud.google.com/apis/credentials - Network accessline 37
- Search Engine ID: https://programmablesearchengine.google.com/ - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Network accessline 69
**获取地址**: https://tavily.com - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Network accessline 91
**获取地址**: https://console.bce.baidu.com/ai-search/qianfan/ais/console/apiKey - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Network accessline 115
**获取地址**: https://console.cloud.google.com/apis/credentials - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 127
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 151
DUCKDUCKGO_PROXY=http://127.0.0.1:7890 - Network accessline 152
BRAVE_PROXY=http://127.0.0.1:7890 - Network accessline 153
YAHOO_PROXY=http://127.0.0.1:7890 - Network accessline 154
WIKIPEDIA_PROXY=http://127.0.0.1:7890 - Network accessline 161
**获取地址**: https://www.firecrawl.dev/app - Access to secretsline 170
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Network accessline 173
# 自建 Firecrawl 服务 FIRECRAWL_API_URL=https://your-firecrawl-instance - Network accessline 174
FIRECRAWL_API_URL=https://your-firecrawl-instance - Network accessline 185
**获取地址**: https://platform.deepseek.com/api_keys - Access to secretsline 194
[Credential-related source omitted] - Access to secretsline 195
[Credential-related source omitted] - Network accessline 197
# 代理或私有网关 DEEPSEEK_API_URL=https://api.deepseek.com - Network accessline 198
DEEPSEEK_API_URL=https://api.deepseek.com - Network accessline 209
**获取地址**: https://console.cloud.tencent.com/wsa - Access to secretsline 219
[Credential-related source omitted] - Network accessline 222
# 默认接口地址 TENCENTCLOUD_WSA_ENDPOINT=https://api.wsa.cloud.tencent.com/SearchPro - Network accessline 223
TENCENTCLOUD_WSA_ENDPOINT=https://api.wsa.cloud.tencent.com/SearchPro - Network accessline 235
**获取地址**: https://www.tinyfish.ai - Access to secretsline 244
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Network accessline 248
**注意事项**: - 默认限速 5 次/分钟,超限返回 429 - 请求头使用 `X-API-Key`,接口为 `GET https://api.search.tinyfish.ai` - Network accessline 250
- 请求头使用 `X-API-Key`,接口为 `GET https://api.search.tinyfish.ai` - Network accessline 256
**获取地址**: https://anysearch.com/console/api-keys - Access to secretsline 265
[Credential-related source omitted] - Access to secretsline 266
[Credential-related source omitted] - Access to secretsline 270
[Credential-related source omitted] - Network accessline 277
**获取地址**: https://bailian.console.aliyun.com - Access to secretsline 286
[Credential-related source omitted] - Access to secretsline 287
[Credential-related source omitted] - Network accessline 302
**获取地址**: https://developer.zhihu.com - Access to secretsline 311
[Credential-related source omitted] - Network accessline 325
**获取地址**: https://platform.parallel.ai - Access to secretsline 334
[Credential-related source omitted] - Access to secretsline 335
[Credential-related source omitted] - Network accessline 341
**注意事项**: - 接口为 `POST https://api.parallel.ai/v1/search`,请求头 `x-api-key` - Network accessline 342
- 接口为 `POST https://api.parallel.ai/v1/search`,请求头 `x-api-key` - Network accessline 344
- 欧盟节点 `https://eu.parallel.ai` 只接受 `basic` 模式 - Network accessline 350
**获取地址**: https://ollama.com/settings/keys - Access to secretsline 359
[Credential-related source omitted] - Access to secretsline 360
[Credential-related source omitted] - Network accessline 363
[Credential-related source omitted] - Network accessline 364
[Credential-related source omitted] - Network accessline 372
**获取地址**: https://bigmodel.cn/apikey/platform - Access to secretsline 381
[Credential-related source omitted] - Access to secretsline 382
[Credential-related source omitted] - Network accessline 388
**注意事项**: - 接口为 `POST https://open.bigmodel.cn/api/paas/v4/web_search` - Network accessline 389
- 接口为 `POST https://open.bigmodel.cn/api/paas/v4/web_search` - Network accessline 397
**获取地址**: https://platform.kimi.com - Access to secretsline 406
[Credential-related source omitted] - Access to secretsline 407
[Credential-related source omitted]
references/baidu_apikey_fetch.md
- Access to secretsline 3
[Credential-related source omitted] - Access to secretsline 5
[Credential-related source omitted] - Network accessline 7
### 1. Get API Key Visit: **https://console.bce.baidu.com/ai-search/qianfan/ais/console/apiKey** - Network accessline 8
Visit: **https://console.bce.baidu.com/ai-search/qianfan/ais/console/apiKey** - Access to secretsline 25
[Credential-related source omitted]
references/platform_notes.md
references/rate_limits.md
- Access to secretsline 123
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 272
[Credential-related source omitted] - Access to secretsline 364
[Credential-related source omitted]
references/search_workflow.md
- Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 47
python union_search_cli.py search "Python packaging" --platforms github wikipedia --limit 3 --deduplicate --fail-on-platform-error -o .work/search.json python union_search_cli.py platform github "Python packaging" --limit 3 -o .work/github. - Network accessline 49
python union_search_cli.py defuddle "https://example.com" --format markdown -o .work/article.md - Access to secretsline 87
[Credential-related source omitted]
references/third_party.md
- Network accessline 11
| 安装包 / 上游项目 | 在本项目中的用途 | | --- | --- | | [requests](https://github.com/psf/requests) | 调用搜索 API、获取网页与下载内容 | - Network accessline 12
| --- | --- | | [requests](https://github.com/psf/requests) | 调用搜索 API、获取网页与下载内容 | | [python-dotenv](https://github.com/theskumar/python-dotenv) | 加载本地 `.env` 配置 | - Network accessline 13
| [requests](https://github.com/psf/requests) | 调用搜索 API、获取网页与下载内容 | - Network accessline 14
| [python-dotenv](https://github.com/theskumar/python-dotenv) | 加载本地 `.env` 配置 | - Network accessline 15
| [lxml](https://github.com/lxml/lxml) | HTML / XML 解析与页面内容提取 | - Network accessline 16
| [curl_cffi](https://github.com/lexiforest/curl_cffi) | 网页搜索的 HTTP 会话与浏览器请求兼容;声明范围 `>=0.16.0,<0.17` | - Network accessline 17
| [pyimagedl / imagedl](https://github.com/CharlesPikachu/imagedl) | 保留的 SDK 图片平台搜索与下载;原生图片平台独立实现 | - Network accessline 18
| [Pillow](https://github.com/python-pillow/Pillow) | 实际下载图片的 `Image.verify()` 校验与图片信息读取,声明要求 `>=12` | - Network accessline 19
| [chompjs](https://github.com/Nykakin/chompjs) | 解析图片平台页面中的 JavaScript 数据,声明要求 `>=1.2` | - Network accessline 20
| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | 媒体下载及站点适配 | - Network accessline 21
| [tavily-python](https://github.com/tavily-ai/tavily-python) | Tavily Python SDK | - Network accessline 22
| [loguru](https://github.com/Delgan/loguru) | 日志输出 | - Network accessline 23
| [pydantic](https://github.com/pydantic/pydantic) | 结构化模型与数据校验,声明要求为 `>=2.0.0` | - Network accessline 24
| [firecrawl-py](https://pypi.org/project/firecrawl-py/) | Firecrawl Python SDK;部分入口也直接请求 HTTP API | - Network accessline 30
| 上游项目 | 声明范围 | 用途 | | --- | --- | --- | | [Cheerio](https://github.com/cheeriojs/cheerio) | `^1.2.0` | 服务端 HTML 解析与选择器处理 | - Network accessline 31
| --- | --- | --- | | [Cheerio](https://github.com/cheeriojs/cheerio) | `^1.2.0` | 服务端 HTML 解析与选择器处理 | | [Commander.js](https://github.com/tj/commander.js) | `^12.1.0` | Node.js 命令行参数处理 | - Network accessline 32
| [Cheerio](https://github.com/cheeriojs/cheerio) | `^1.2.0` | 服务端 HTML 解析与选择器处理 | - Network accessline 33
| [Commander.js](https://github.com/tj/commander.js) | `^12.1.0` | Node.js 命令行参数处理 | - Network accessline 34
| [jsdom](https://github.com/jsdom/jsdom) | `^24.0.0` | DOM 环境与网页内容处理 | - Network accessline 38
| 项目 | 集成方式与用途 | 来源和许可说明 | | --- | --- | --- | | [Defuddle](https://github.com/kepano/defuddle) | 在 `scripts/url_to_markdown/engines/defuddle-node/` 通过 `npm ci` 安装正式 npm 包,固定版本 `0.10.0` | 作者 `kepano`、许可证 `MIT`;安装包保留第三方版权和许可声明 | - Network accessline 39
| --- | --- | --- | | [Defuddle](https://github.com/kepano/defuddle) | 在 `scripts/url_to_markdown/engines/defuddle-node/` 通过 `npm ci` 安装正式 npm 包,固定版本 `0.10.0` | 作者 `kepano`、许可证 `MIT`;安装包保留第三方版权和许可声明 | | [Commander.js](https://github.com/tj/ - Network accessline 40
| [Defuddle](https://github.com/kepano/defuddle) | 在 `scripts/url_to_markdown/engines/defuddle-node/` 通过 `npm ci` 安装正式 npm 包,固定版本 `0.10.0` | 作者 `kepano`、许可证 `MIT`;安装包保留第三方版权和许可声明 | - Network accessline 41
| [Commander.js](https://github.com/tj/commander.js) | Defuddle 的传递依赖 | 与根目录依赖分别安装,版本以各自锁文件为准 | - Network accessline 42
| [jsdom](https://github.com/jsdom/jsdom) | Defuddle 安装目录显式固定版本 `24.1.3` | 提供正文提取所需 DOM 环境 | - Network accessline 43
| [mathml-to-latex](https://www.npmjs.com/package/mathml-to-latex) | Defuddle 子包的可选依赖 `^1.5.0` | 处理数学公式转换,是否安装取决于环境 | - Network accessline 44
| [Temml](https://www.npmjs.com/package/temml) | Defuddle 子包的可选依赖 `^0.13.1` | 数学公式处理,是否安装取决于环境 | - Network accessline 45
| [Turndown](https://www.npmjs.com/package/turndown) | Defuddle 子包的可选依赖 `^7.2.0` | HTML 转 Markdown,是否安装取决于环境 | - Network accessline 46
| [FFmpeg](https://ffmpeg.org/) | 由用户按需在系统安装,配合 yt-dlp 使用 | 用于音视频合并和音频提取,不由根目录 pip / npm 声明安装;具体构建的许可与启用组件有关 | - Network accessline 74
| 参考项目 | 参考范围 | | --- | --- | | [standard-readme](https://github.com/RichardLitt/standard-readme) | README 信息组织与基础章节 | - Network accessline 75
| --- | --- | | [standard-readme](https://github.com/RichardLitt/standard-readme) | README 信息组织与基础章节 | | [Best-README-Template](https://github.com/othneildrew/Best-README-Template) | 项目介绍、安装和参与维护等内容组织 | - Network accessline 76
| [standard-readme](https://github.com/RichardLitt/standard-readme) | README 信息组织与基础章节 | - Network accessline 77
| [Best-README-Template](https://github.com/othneildrew/Best-README-Template) | 项目介绍、安装和参与维护等内容组织 | - Network accessline 78
| [beautify-github-readme](https://github.com/oil-oil/beautify-github-readme) | README 视觉呈现与阅读导航 |
references/troubleshooting.md
scripts/channels/ai_tools/__init__.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/adapter.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/examples/search-result-claude_code.json
- Network accessline 7
{ "title": "Legislative Interventions, Challenges, and Opportunities in Revolutionizing Textile Upcycling/Recycling Processes for a Circular Economy", "url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11615812/", - Network accessline 8
"title": "Legislative Interventions, Challenges, and Opportunities in Revolutionizing Textile Upcycling/Recycling Processes for a Circular Economy", "url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11615812/", "snippet": "A - Network accessline 9
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11615812/", - Network accessline 14
{ "title": "Transform textiles", "url": "https://www.wrap.ngo/what-we-do/transform-textiles", - Network accessline 15
"title": "Transform textiles", "url": "https://www.wrap.ngo/what-we-do/transform-textiles", "snippet": "WRAP is working with industry to enhance and scale up sorting and recycling infrastructure.", - Network accessline 16
"url": "https://www.wrap.ngo/what-we-do/transform-textiles", - Network accessline 21
{ "title": "Textiles for Circular Fashion: The Logic behind Recycling Options", "url": "https://www.mdpi.com/2071-1050/13/17/9714", - Network accessline 22
"title": "Textiles for Circular Fashion: The Logic behind Recycling Options", "url": "https://www.mdpi.com/2071-1050/13/17/9714", "snippet": "A separate paper found good recycling options for mono-material streams within the cel - Network accessline 23
"url": "https://www.mdpi.com/2071-1050/13/17/9714",
scripts/channels/ai_tools/examples/search-result-grok_build.json
- Network accessline 7
{ "title": "Circular Fashion & Textile Recycling Technologies: Complete 2026 Industry Guide - Sustainability Awakening", "url": "https://sustainabilityawakening.com/circular-fashion-textile-recycling-technologies-guide/", - Network accessline 8
"title": "Circular Fashion & Textile Recycling Technologies: Complete 2026 Industry Guide - Sustainability Awakening", "url": "https://sustainabilityawakening.com/circular-fashion-textile-recycling-technologies-guide/", "snippet - Network accessline 9
"url": "https://sustainabilityawakening.com/circular-fashion-textile-recycling-technologies-guide/", - Network accessline 15
{ "title": "Circular Economy in Fashion: A Guide for Brands", "url": "https://www.reconomy.com/2024/09/03/the-state-of-the-circular-economy-in-the-fashion-industry/", - Network accessline 16
"title": "Circular Economy in Fashion: A Guide for Brands", "url": "https://www.reconomy.com/2024/09/03/the-state-of-the-circular-economy-in-the-fashion-industry/", "snippet": "It matters because the EU generates 12.6 million to - Network accessline 17
"url": "https://www.reconomy.com/2024/09/03/the-state-of-the-circular-economy-in-the-fashion-industry/", - Network accessline 23
{ "title": "Europe stitches together plan to close the loop in the fashion industry | Reuters", "url": "https://www.reuters.com/sustainability/boards-policy-regulation/europe-stitches-together-plan-close-loop-fashion-industry--e - Network accessline 24
"title": "Europe stitches together plan to close the loop in the fashion industry | Reuters", "url": "https://www.reuters.com/sustainability/boards-policy-regulation/europe-stitches-together-plan-close-loop-fashion-industry--ecmii-202 - Network accessline 25
"url": "https://www.reuters.com/sustainability/boards-policy-regulation/europe-stitches-together-plan-close-loop-fashion-industry--ecmii-2026-08-24/",
scripts/channels/ai_tools/examples/search-result.json
- Network accessline 7
{ "title": "Sustainable and circular textiles | UNEP - UN Environment Programme", "url": "https://www.unep.org/topics/chemicals-and-pollution-action/circularity-sectors/sustainable-and-circular-textiles", - Network accessline 8
"title": "Sustainable and circular textiles | UNEP - UN Environment Programme", "url": "https://www.unep.org/topics/chemicals-and-pollution-action/circularity-sectors/sustainable-and-circular-textiles", "snippet": "The UNEP Text - Network accessline 9
"url": "https://www.unep.org/topics/chemicals-and-pollution-action/circularity-sectors/sustainable-and-circular-textiles", - Network accessline 15
{ "title": "Regenerative Fashion Systems: Redefining Circularity in the Fashion and Textiles Industry | Circular Economy and Sustainability | Springer Nature Link", "url": "https://link.springer.com/article/10.1007/s43615-026-00 - Network accessline 16
"title": "Regenerative Fashion Systems: Redefining Circularity in the Fashion and Textiles Industry | Circular Economy and Sustainability | Springer Nature Link", "url": "https://link.springer.com/article/10.1007/s43615-026-00824-3", - Network accessline 17
"url": "https://link.springer.com/article/10.1007/s43615-026-00824-3", - Network accessline 23
{ "title": "Textiles Strategy - Environment - European Commission", "url": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", - Network accessline 24
"title": "Textiles Strategy - Environment - European Commission", "url": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", "snippet": "1% of material in clothing is recycled into new clothing ... * Restrict the e - Network accessline 25
"url": "https://environment.ec.europa.eu/strategy/textiles-strategy_en",
scripts/channels/ai_tools/native_search/__init__.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/native_search/backends/__init__.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/native_search/backends/claude.py
- Executable scriptline 1
Executable file - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 75
def fetch(url: str, max_chars: int) -> dict:
scripts/channels/ai_tools/native_search/backends/cli_json.py
scripts/channels/ai_tools/native_search/backends/codex.py
- Executable scriptline 1
Executable file - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 39
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Network accessline 40
[Credential-related source omitted] - Network accessline 41
request = urllib.request.Request(url, data=body, headers={"Content-Type": "application/json", "User-Agent": UA}, method="POST") - Network accessline 42
try: with urllib.request.urlopen(request, timeout=30) as response: payload = json.loads(response.read().decode()) - Network accessline 43
with urllib.request.urlopen(request, timeout=30) as response: - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Network accessline 70
headers["ChatGPT-Account-ID"] = tokens["account_id"] url = os.environ.get("CODEX_ENDPOINT") or CODEX_SEARCH_URL request = urllib.request.Request(url, data=json.dumps(payload).encode(), headers=headers, method="POST") - Network accessline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Network accessline 72
request = urllib.request.Request(url, data=json.dumps(payload).encode(), headers=headers, method="POST") - Network accessline 73
try: with urllib.request.urlopen(request, timeout=60) as response: raw = response.read().decode() - Network accessline 74
with urllib.request.urlopen(request, timeout=60) as response: - Network accessline 137
def fetch(url: str, max_chars: int) -> dict:
scripts/channels/ai_tools/native_search/backends/grok.py
scripts/channels/ai_tools/native_search/config.py
- Executable scriptline 1
Executable file - Network accessline 12
DEFAULT_LIMIT = None DEFAULT_MAX_CHARS = 12_000 CODEX_SEARCH_URL = "https://chatgpt.com/backend-api/codex/alpha/search" - Network accessline 13
DEFAULT_MAX_CHARS = 12_000 CODEX_SEARCH_URL = "https://chatgpt.com/backend-api/codex/alpha/search" CODEX_REFRESH_URL = "https://chatgpt.com/backend-api/auth/refresh" - Network accessline 14
CODEX_SEARCH_URL = "https://chatgpt.com/backend-api/codex/alpha/search" - Network accessline 15
CODEX_REFRESH_URL = "https://chatgpt.com/backend-api/auth/refresh" - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted]
scripts/channels/ai_tools/native_search/errors.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/native_search/textutil.py
- Executable scriptline 1
Executable file
scripts/channels/ai_tools/output-analysis.md
- Network accessline 31
官方来源(资料整理日期:2026-10-25):[Claude Code CLI 参数](https://code.claude.com/docs/en/cli-reference)、[Codex CLI 与 ChatGPT 登录](https://learn.chatgpt.com/docs/codex/cli)、[Grok Build CLI](https://docs.x.ai/build/overview)。这些入口用于核对实际客户端,不作为内部搜索端点条数保证。
scripts/channels/ai_tools/worker.py
- Executable scriptline 1
Executable file
scripts/channels/anysearch/README.md
- Access to secretsline 10
[Credential-related source omitted] - Network accessline 17
[Credential-related source omitted] - Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
# 默认 https://api.anysearch.com/v1/search - Network accessline 23
API Key 在 [AnySearch 控制台](https://anysearch.com/console/api-keys) 创建。 - Network accessline 54
| `--freshness` | `day`、`week`、`month`、`year` | - | | `--api-key` | API Key(优先于环境变量;必须提供有效 Key) | 读取 `ANYSEARCH_API_KEY` | | `--endpoint` | 接口地址 | https://api.anysearch.com/v1/search | - Network accessline 55
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Network accessline 56
| `--endpoint` | 接口地址 | https://api.anysearch.com/v1/search | - Network accessline 72
- [AnySearch 官网](https://anysearch.com) - Network accessline 73
- [API Key 管理](https://anysearch.com/console/api-keys)
scripts/channels/anysearch/anysearch_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_ENDPOINT = "https://api.anysearch.com/v1/search" - Network accessline 17
"""AnySearch 搜索客户端,接口文档 https://anysearch.com/docs""" - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Network accessline 26
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 27
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 28
self.session = requests.Session() - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Network accessline 137
parser.add_argument("--freshness", choices=list(ALLOWED_FRESHNESS), help="时间范围") parser.add_argument("--api-key", help="AnySearch API Key,也可通过 ANYSEARCH_API_KEY 环境变量提供") parser.add_argument("--endpoint", help="接口地址,默认 https://api.an - Network accessline 138
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Network accessline 139
parser.add_argument("--endpoint", help="接口地址,默认 https://api.anysearch.com/v1/search") - Access to secretsline 145
[Credential-related source omitted]
scripts/channels/anysearch/examples/search-result.json
- Network accessline 7
{ "title": "Sustainable Practices in the Apparel Industry", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 8
"title": "Sustainable Practices in the Apparel Industry", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", "body": "Sustainability in the apparel industry means producing clothing, - Network accessline 9
"href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 20
{ "title": "How can we make textile and garment production ...", "href": "https://www.weforum.org/stories/nature-and-biodiversity/textile-garment-industry-sustainability-policy-measures", - Network accessline 21
"title": "How can we make textile and garment production ...", "href": "https://www.weforum.org/stories/nature-and-biodiversity/textile-garment-industry-sustainability-policy-measures", "body": "Producing and consuming garments - Network accessline 22
"href": "https://www.weforum.org/stories/nature-and-biodiversity/textile-garment-industry-sustainability-policy-measures", - Network accessline 33
{ "title": "How the Apparel Industry Could Refashion Itself with ...", "href": "https://www.gsb.stanford.edu/insights/how-apparel-industry-could-refashion-itself-sustainability-mind", - Network accessline 34
"title": "How the Apparel Industry Could Refashion Itself with ...", "href": "https://www.gsb.stanford.edu/insights/how-apparel-industry-could-refashion-itself-sustainability-mind", "body": "While some companies have taken steps - Network accessline 35
"href": "https://www.gsb.stanford.edu/insights/how-apparel-industry-could-refashion-itself-sustainability-mind",
scripts/channels/anysearch/output-analysis.md
- Network accessline 36
核查日期:2026-10-25。官方来源:[Search API](https://anysearch.com/docs/api-endpoints/v1-search)。
scripts/channels/baidu/baidu_no_api.py
- Executable scriptline 1
Executable file - Network accessline 33
ENGINE_NAME = 'baidu' ENGINE_DISPLAY_NAME = '百度搜索' SEARCH_URL = 'https://www.baidu.com/s?wd={keyword}' - Network accessline 34
ENGINE_DISPLAY_NAME = '百度搜索' SEARCH_URL = 'https://www.baidu.com/s?wd={keyword}' REQUIRES_PROXY = False - Network accessline 35
SEARCH_URL = 'https://www.baidu.com/s?wd={keyword}' - Network accessline 72
if not title: continue target = urljoin('https://www.baidu.com/', link.get('href')) - Network accessline 73
continue target = urljoin('https://www.baidu.com/', link.get('href')) if _excluded_url(target): - Network accessline 74
target = urljoin('https://www.baidu.com/', link.get('href')) - Network accessline 82
if not candidate: continue candidate = urljoin('https://www.baidu.com/', candidate) - Network accessline 83
continue candidate = urljoin('https://www.baidu.com/', candidate) location = urlsplit(candidate) - Network accessline 84
candidate = urljoin('https://www.baidu.com/', candidate)
scripts/channels/baidu/baidu_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Network accessline 21
API_URL = "https://qianfan.baidubce.com/v2/ai_search/web_search" - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Network accessline 62
response = requests.post(API_URL, json=request_body, headers=headers, timeout=30) - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted]
scripts/channels/baidu/examples/search-result-baidu_direct.json
- Network accessline 7
{ "title": "服装(汉语词语) - 百度百科", "url": "https://baike.baidu.com/item/%E6%9C%8D%E8%A3%85/247479", - Network accessline 8
"title": "服装(汉语词语) - 百度百科", "url": "https://baike.baidu.com/item/%E6%9C%8D%E8%A3%85/247479", "content": "", - Network accessline 9
"url": "https://baike.baidu.com/item/%E6%9C%8D%E8%A3%85/247479", - Network accessline 21
{ "title": "服装 - 智能分身实时回复", "url": "https://agents.baidu.com/content/question/c71661cc27d90bbc67f725f4", - Network accessline 22
"title": "服装 - 智能分身实时回复", "url": "https://agents.baidu.com/content/question/c71661cc27d90bbc67f725f4", "content": "", - Network accessline 23
"url": "https://agents.baidu.com/content/question/c71661cc27d90bbc67f725f4", - Network accessline 35
{ "title": "衣服(服装) - 百度百科", "url": "https://baike.baidu.com/item/衣服/16558952", - Network accessline 36
"title": "衣服(服装) - 百度百科", "url": "https://baike.baidu.com/item/衣服/16558952", "content": "“衣”在古代有广义狭义之分,广义指人体上所有穿着,头上戴的叫头衣,鞋类叫足衣,身上穿的则叫体衣;狭义则专指上体所穿的服装。上衣也有长短、内外、厚薄之分。短上衣称襦,辛延年《羽林郎》中说:“长裙连理带,广袖合欢襦。”襦也有长短,颜师古《急就篇... 历史记载 古代文化 服装搭配 - Network accessline 37
"url": "https://baike.baidu.com/item/衣服/16558952",
scripts/channels/baidu/examples/search-result.json
- Network accessline 7
{ "id": 1, "url": "https://www.sciencedirect.com/topics/social-sciences/apparel-industry", - Network accessline 8
"id": 1, "url": "https://www.sciencedirect.com/topics/social-sciences/apparel-industry", "title": "Apparel Industry - an overview | ScienceDirect Topics", - Network accessline 9
"url": "https://www.sciencedirect.com/topics/social-sciences/apparel-industry", - Network accessline 11
"date": "2024-01-01 00:00:00", "content": " 2 Context of the textiles and apparel industry An important context for the evaluation of ES of the textiles and apparel industry is the decentralized nature of the industry ( Pal and Gander - Network accessline 12
"content": " 2 Context of the textiles and apparel industry An important context for the evaluation of ES of the textiles and apparel industry is the decentralized nature of the industry ( Pal and Gander, 2018 ). A majority of the productio - Network accessline 13
"icon": "https://sdfestaticassets-us-east-1.sciencedirectassets.com/shared-assets/103/images/favSD.ico", - Network accessline 22
"images": [ { "url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-07-9780444595317.jpg", - Network accessline 23
{ "url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-07-9780444595317.jpg", "height": "400", - Network accessline 24
"url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-07-9780444595317.jpg", - Network accessline 27
}, { "url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-08-9780444595317.jpg", - Network accessline 28
{ "url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-08-9780444595317.jpg", "height": "401", - Network accessline 29
"url": "https://ars.els-cdn.com/content/image/1-s2.0-B9780444595317000223-f22-08-9780444595317.jpg", - Network accessline 40
{ "id": 2, "url": "http://www.nstl.gov.cn/paper_detail.html?id=0eef4fd4d773664a1ce2ed8b23e2644c", - Network accessline 41
"id": 2, "url": "http://www.nstl.gov.cn/paper_detail.html?id=0eef4fd4d773664a1ce2ed8b23e2644c", "title": "Sustainability in Indian textile and apparel industry", - Network accessline 42
"url": "http://www.nstl.gov.cn/paper_detail.html?id=0eef4fd4d773664a1ce2ed8b23e2644c", - Network accessline 44
"date": "2026-10-01 00:00:00", "content": "Sustainability in Indian textile and apparel industryThe textile and apparel industry has a significant environmental impact and needs to adopt sustainable practices to ensure its long-term v - Network accessline 45
"content": "Sustainability in Indian textile and apparel industryThe textile and apparel industry has a significant environmental impact and needs to adopt sustainable practices to ensure its long-term viability. While there have been effor - Network accessline 46
"icon": "http://www.nstl.gov.cn/favicon.ico", - Network accessline 62
{ "id": 3, "url": "https://en.shhqcbd.gov.cn/2025-09/08/c_1123260.htm", - Network accessline 63
"id": 3, "url": "https://en.shhqcbd.gov.cn/2025-09/08/c_1123260.htm", "title": "Textile expo in Shanghai spotlights innovation, sustainability", - Network accessline 64
"url": "https://en.shhqcbd.gov.cn/2025-09/08/c_1123260.htm",
scripts/channels/baidu/output-analysis.md
scripts/channels/bailian/README.md
- Network accessline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 18
# 默认 https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation - Network accessline 24
API Key 在 [百炼控制台](https://bailian.console.aliyun.com) 的 API-KEY 管理页面创建。 - Network accessline 73
- [百炼联网搜索文档](https://help.aliyun.com/zh/model-studio/web-search) - Network accessline 74
- [DashScope API 参考](https://help.aliyun.com/zh/model-studio/qwen-api-via-dashscope)
scripts/channels/bailian/bailian_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_ENDPOINT = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" - Network accessline 18
"""阿里云百炼联网搜索客户端,接口文档 https://help.aliyun.com/zh/model-studio/web-search""" - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 30
self.session = requests.Session() - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted]
scripts/channels/bailian/examples/search-result.json
- Network accessline 7
{ "title": "Sustainability topic trends in the textile and apparel industry: a text mining-based magazine article analysis", "href": "http://www.researchgate.net/publication/350820768_Sustainability_topic_trends_in_the_textile_a - Network accessline 8
"title": "Sustainability topic trends in the textile and apparel industry: a text mining-based magazine article analysis", "href": "http://www.researchgate.net/publication/350820768_Sustainability_topic_trends_in_the_textile_and_appar - Network accessline 9
"href": "http://www.researchgate.net/publication/350820768_Sustainability_topic_trends_in_the_textile_and_apparel_industry_a_text_mining-based_magazine_article_analysis", - Network accessline 11
"engine": "bailian", "site_name": "无", "icon": "http://www.researchgate.net/favicon.ico", - Network accessline 12
"site_name": "无", "icon": "http://www.researchgate.net/favicon.ico", "index": 1 - Network accessline 13
"icon": "http://www.researchgate.net/favicon.ico", - Network accessline 16
{ "title": "Recent Trends in Sustainable Textiles and Apparel Production", "href": "http://www.researchgate.net/publication/349041104_Recent_Trends_in_Sustainable_Textiles_and_Apparel_Production", - Network accessline 17
"title": "Recent Trends in Sustainable Textiles and Apparel Production", "href": "http://www.researchgate.net/publication/349041104_Recent_Trends_in_Sustainable_Textiles_and_Apparel_Production", "body": "", - Network accessline 18
"href": "http://www.researchgate.net/publication/349041104_Recent_Trends_in_Sustainable_Textiles_and_Apparel_Production", - Network accessline 20
"engine": "bailian", "site_name": "无", "icon": "http://www.researchgate.net/favicon.ico", - Network accessline 21
"site_name": "无", "icon": "http://www.researchgate.net/favicon.ico", "index": 2 - Network accessline 22
"icon": "http://www.researchgate.net/favicon.ico", - Network accessline 25
{ "title": "Bio-Based Packaging Materials for the Textile and Apparel Supply Chain: Eco-Innovations, Industry Trends, and Future Research Directions", "href": "http://link.springer.com/article/10.1007/s42824-026-00219-7", - Network accessline 26
"title": "Bio-Based Packaging Materials for the Textile and Apparel Supply Chain: Eco-Innovations, Industry Trends, and Future Research Directions", "href": "http://link.springer.com/article/10.1007/s42824-026-00219-7", "body": - Network accessline 27
"href": "http://link.springer.com/article/10.1007/s42824-026-00219-7", - Network accessline 29
"engine": "bailian", "site_name": "无", "icon": "https://link.springer.com/oscar-static/img/favicons/darwin/apple-touch-icon-6ef0829b9c.png", - Network accessline 30
"site_name": "无", "icon": "https://link.springer.com/oscar-static/img/favicons/darwin/apple-touch-icon-6ef0829b9c.png", "index": 3 - Network accessline 31
"icon": "https://link.springer.com/oscar-static/img/favicons/darwin/apple-touch-icon-6ef0829b9c.png",
scripts/channels/bailian/output-analysis.md
- Network accessline 41
核查日期:2026-10-25。官方来源:[联网搜索](https://help.aliyun.com/zh/model-studio/web-search)。
scripts/channels/bing/README.md
- Network accessline 36
# 使用代理 python scripts/channels/bing/bing_search.py "search query" --proxy http://127.0.0.1:7890 - Network accessline 37
python scripts/channels/bing/bing_search.py "search query" --proxy http://127.0.0.1:7890 - Network accessline 57
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Network accessline 58
BING_PROXY=http://127.0.0.1:7890
scripts/channels/bing/bing_cn_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "bing_cn" ENGINE_DISPLAY_NAME = "Bing 中国" SEARCH_URL = "https://cn.bing.com/search?q={keyword}&ensearch=0" - Network accessline 21
ENGINE_DISPLAY_NAME = "Bing 中国" SEARCH_URL = "https://cn.bing.com/search?q={keyword}&ensearch=0" REQUIRES_PROXY = False - Network accessline 22
SEARCH_URL = "https://cn.bing.com/search?q={keyword}&ensearch=0"
scripts/channels/bing/bing_int_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "bing_int" ENGINE_DISPLAY_NAME = "Bing 国际" SEARCH_URL = "https://www.bing.com/search?q={keyword}&mkt=en-US&setlang=en" - Network accessline 21
ENGINE_DISPLAY_NAME = "Bing 国际" SEARCH_URL = "https://www.bing.com/search?q={keyword}&mkt=en-US&setlang=en" REQUIRES_PROXY = True - Network accessline 22
SEARCH_URL = "https://www.bing.com/search?q={keyword}&mkt=en-US&setlang=en"
scripts/channels/bing/bing_serpapi_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 5
Uses SerpAPI to perform Bing searches as a backup/alternative method. Updated with full features from https://serpapi.com/bing-search-api - Network accessline 6
Updated with full features from https://serpapi.com/bing-search-api - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted]
scripts/channels/bing/examples/search-result-bing_int_direct.json
- Network accessline 7
{ "title": "SUSTAINABLE Definition & Meaning - Merriam-Webster", "href": "https://www.bing.com/ck/a?!&&p=d3c5c69b15cdd4d5cfe2d13fc74f5e043c4f6a5c8422dc215d2eecd396854facJmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a - Network accessline 8
"title": "SUSTAINABLE Definition & Meaning - Merriam-Webster", "href": "https://www.bing.com/ck/a?!&&p=d3c5c69b15cdd4d5cfe2d13fc74f5e043c4f6a5c8422dc215d2eecd396854facJmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3 - Network accessline 9
"href": "https://www.bing.com/ck/a?!&&p=d3c5c69b15cdd4d5cfe2d13fc74f5e043c4f6a5c8422dc215d2eecd396854facJmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3d0b-697ea54d6a83&u=a1aHR0cHM6Ly93d3cubWVycmlhbS13ZWJzdGVyLmNvbS9kaWN0 - Network accessline 13
{ "title": "Sustainability - Wikipedia", "href": "https://www.bing.com/ck/a?!&&p=b768a24986fef90264574f36ff45a50a59f18ca29062735a3c19553e350f4877JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3d0b-697ea54d6a83 - Network accessline 14
"title": "Sustainability - Wikipedia", "href": "https://www.bing.com/ck/a?!&&p=b768a24986fef90264574f36ff45a50a59f18ca29062735a3c19553e350f4877JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3d0b-697ea54d6a83&u=a1aHR - Network accessline 15
"href": "https://www.bing.com/ck/a?!&&p=b768a24986fef90264574f36ff45a50a59f18ca29062735a3c19553e350f4877JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3d0b-697ea54d6a83&u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3VzdGFp - Network accessline 19
{ "title": "SUSTAINABLE | English meaning - Cambridge Dictionary", "href": "https://www.bing.com/ck/a?!&&p=bd80d98bc077b02e83dd3ee8f03cf4d2adc86d7e9a3d0926766e1f4e2e197017JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a - Network accessline 20
"title": "SUSTAINABLE | English meaning - Cambridge Dictionary", "href": "https://www.bing.com/ck/a?!&&p=bd80d98bc077b02e83dd3ee8f03cf4d2adc86d7e9a3d0926766e1f4e2e197017JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa - Network accessline 21
"href": "https://www.bing.com/ck/a?!&&p=bd80d98bc077b02e83dd3ee8f03cf4d2adc86d7e9a3d0926766e1f4e2e197017JmltdHM9MTc5MjgwMDAwMA&ptn=3&ver=2&hsh=4&fclid=3fc87e83-a4a4-6baa-3d0b-697ea54d6a83&u=a1aHR0cHM6Ly9kaWN0aW9uYXJ5LmNhbWJyaWRnZS5vcmcvZGlj
scripts/channels/bing/examples/search-result.json
- Network accessline 7
{ "title": "SUSTAINABLE Definition & Meaning - Merriam-Webster", "href": "https://www.merriam-webster.com/dictionary/sustainable", - Network accessline 8
"title": "SUSTAINABLE Definition & Meaning - Merriam-Webster", "href": "https://www.merriam-webster.com/dictionary/sustainable", "body": "The meaning of SUSTAINABLE is capable of being sustained. How to use sustainable in a sent - Network accessline 9
"href": "https://www.merriam-webster.com/dictionary/sustainable", - Network accessline 10
"body": "The meaning of SUSTAINABLE is capable of being sustained. How to use sustainable in a sentence.", "displayed_link": "https://www.merriam-webster.com › dictionary › sustainable" }, - Network accessline 11
"displayed_link": "https://www.merriam-webster.com › dictionary › sustainable" - Network accessline 13
{ "title": "Sustainability - Wikipedia", "href": "https://en.wikipedia.org/wiki/Sustainability", - Network accessline 14
"title": "Sustainability - Wikipedia", "href": "https://en.wikipedia.org/wiki/Sustainability", "body": "\" Sustainability is often thought of as a long-term goal (i.e. a more sustainable world), while sustainable development ref - Network accessline 15
"href": "https://en.wikipedia.org/wiki/Sustainability", - Network accessline 16
"body": "\" Sustainability is often thought of as a long-term goal (i.e. a more sustainable world), while sustainable development refers to the …", "displayed_link": "https://en.wikipedia.org › wiki › Sustainability" }, - Network accessline 17
"displayed_link": "https://en.wikipedia.org › wiki › Sustainability" - Network accessline 19
{ "title": "SUSTAINABLE | English meaning - Cambridge Dictionary", "href": "https://dictionary.cambridge.org/dictionary/english/sustainable", - Network accessline 20
"title": "SUSTAINABLE | English meaning - Cambridge Dictionary", "href": "https://dictionary.cambridge.org/dictionary/english/sustainable", "body": "SUSTAINABLE definition: 1. able to continue over a period of time: 2. causing, - Network accessline 21
"href": "https://dictionary.cambridge.org/dictionary/english/sustainable", - Network accessline 22
"body": "SUSTAINABLE definition: 1. able to continue over a period of time: 2. causing, or made in a way that causes, little or no…. Learn more.", "displayed_link": "https://dictionary.cambridge.org › dictionary › english › sustainabl - Network accessline 23
"displayed_link": "https://dictionary.cambridge.org › dictionary › english › sustainable"
scripts/channels/bing/output-analysis.md
- Network accessline 32
核查日期:2026-10-25。官方来源:[SerpAPI Bing Search API](https://serpapi.com/bing-search-api)。当前商业入口使用 SerpAPI。
scripts/channels/brave/README.md
- Network accessline 8
python scripts/channels/brave/brave_search.py "python documentation" --json --pretty python scripts/channels/brave/brave_no_api.py "人工智能 新闻" --page 2 --timelimit w --safesearch strict --timeout 30 --json python scripts/channels/brave/brave_ - Network accessline 10
python scripts/channels/brave/brave_search.py "local news" --country us --proxy http://127.0.0.1:7890 --json
scripts/channels/brave/brave_no_api.py
- Executable scriptline 1
Executable file
scripts/channels/brave/brave_search.py
- Executable scriptline 1
Executable file - Network accessline 13
ENGINE_NAME = 'brave' ENGINE_DISPLAY_NAME = 'Brave 搜索' SEARCH_URL = 'https://search.brave.com/search' - Network accessline 14
ENGINE_DISPLAY_NAME = 'Brave 搜索' SEARCH_URL = 'https://search.brave.com/search' REQUIRES_PROXY = True - Network accessline 15
SEARCH_URL = 'https://search.brave.com/search'
scripts/channels/brave/examples/search-result.json
- Network accessline 7
{ "title": "Sustainability in Textiles and Apparel", "url": "https://keypointintelligence.com/keypoint-blogs/sustainability-in-textiles-and-apparel", - Network accessline 8
"title": "Sustainability in Textiles and Apparel", "url": "https://keypointintelligence.com/keypoint-blogs/sustainability-in-textiles-and-apparel", "content": "July 23, 2024 - Cascale (formerly “Sustainable Apparel Coalition” or - Network accessline 9
"url": "https://keypointintelligence.com/keypoint-blogs/sustainability-in-textiles-and-apparel", - Network accessline 21
{ "title": "Sustainability trends and gaps in the textile, apparel and fashion industries - PMC", "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC9912224/", - Network accessline 22
"title": "Sustainability trends and gaps in the textile, apparel and fashion industries - PMC", "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC9912224/", "content": "As a result, stakeholders are becoming more aware of the eff - Network accessline 23
"url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC9912224/", - Network accessline 35
{ "title": "How can we make textile and garment production sustainable? | World Economic Forum", "url": "https://www.weforum.org/stories/2023/11/textile-garment-industry-sustainability-policy-measures/", - Network accessline 36
"title": "How can we make textile and garment production sustainable? | World Economic Forum", "url": "https://www.weforum.org/stories/2023/11/textile-garment-industry-sustainability-policy-measures/", "content": "Making the tex - Network accessline 37
"url": "https://www.weforum.org/stories/2023/11/textile-garment-industry-sustainability-policy-measures/",
scripts/channels/brave/output-analysis.md
- Network accessline 31
官方来源(2026-10-25):[Brave Search 帮助](https://search.brave.com/help)、[网页设置](https://search.brave.com/settings)。本次帮助正文抓取返回 HTTP 429,相关说明由官方页面的联网检索内容核对;未获得固定条数的官方证据。 - Network accessline 33
来源为 `https://search.brave.com/search` 的网页 HTML,`brave_search.py` 只解析 `data-type="web"` 容器;`brave_no_api.py` 继承相同实现。联合搜索名称 `brave_direct` 归并到 `brave`,两者共用本文。网页标题来自 `div.title`,链接来自其最近的祖先 `a`,摘要来自 `generic-snippet` 内的 `div.content`。
scripts/channels/deepseek/README.md
- Network accessline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 18
# 默认 https://api.deepseek.com - Network accessline 22
API Key 在 [DeepSeek 开放平台](https://platform.deepseek.com/) 创建。 - Network accessline 48
| `--need-content` | 返回网页正文 | False | | `--api-key` | API Key(优先于环境变量) | - | | `--api-url` | 接口地址 | https://api.deepseek.com | - Network accessline 49
| `--api-key` | API Key(优先于环境变量) | - | | `--api-url` | 接口地址 | https://api.deepseek.com | | `--timeout` | 请求超时秒数 | 30 | - Network accessline 50
| `--api-url` | 接口地址 | https://api.deepseek.com | - Network accessline 66
- [DeepSeek 搜索 API 参考](https://api-docs.deepseek.com/zh-cn/api/search/) - Network accessline 67
- [DeepSeek 搜索与抓取指南](https://api-docs.deepseek.com/zh-cn/guides/search/)
scripts/channels/deepseek/deepseek_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_API_URL = "https://api.deepseek.com" - Network accessline 17
"""DeepSeek 联网搜索客户端,接口文档 https://api-docs.deepseek.com/zh-cn/api/search/""" - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 29
self.session = requests.Session() - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 123
[Credential-related source omitted] - Network accessline 133
parser.add_argument("--need-content", action="store_true", help="返回网页正文") parser.add_argument("--api-key", help="DeepSeek API Key") parser.add_argument("--api-url", help="DeepSeek API 地址,默认 https://api.deepseek.com") - Network accessline 134
parser.add_argument("--api-key", help="DeepSeek API Key") parser.add_argument("--api-url", help="DeepSeek API 地址,默认 https://api.deepseek.com") parser.add_argument("--timeout", type=int, default=30, help="请求超时秒数") - Network accessline 135
parser.add_argument("--api-url", help="DeepSeek API 地址,默认 https://api.deepseek.com") - Access to secretsline 141
[Credential-related source omitted]
scripts/channels/deepseek/examples/search-result.json
- Network accessline 7
{ "title": "Textile and fashion under transformation: Toward regenerative design", "href": "https://www.sciencedirect.com/science/chapter/edited-volume/abs/pii/B9780443458316000053?via%3Dihub", - Network accessline 8
"title": "Textile and fashion under transformation: Toward regenerative design", "href": "https://www.sciencedirect.com/science/chapter/edited-volume/abs/pii/B9780443458316000053?via%3Dihub", "body": "This chapter argues ... Key - Network accessline 9
"href": "https://www.sciencedirect.com/science/chapter/edited-volume/abs/pii/B9780443458316000053?via%3Dihub", - Network accessline 13
"content": "", "site_name": "ScienceDirect.com", "site_icon": "https://cdn.deepseek.com/site-icons/sciencedirect.com", - Network accessline 14
"site_name": "ScienceDirect.com", "site_icon": "https://cdn.deepseek.com/site-icons/sciencedirect.com", "date": "2026-10-22T16:00:00+00:00", - Network accessline 15
"site_icon": "https://cdn.deepseek.com/site-icons/sciencedirect.com", - Network accessline 20
{ "title": "Circ® and H&M Group Advance Circular Fashion through UNIDO-Led SWITCH2CE Program | UNIDO", "href": "https://www.unido.org/news/circr-and-hm-group-advance-circular-fashion-through-unido-led-switch2ce-program", - Network accessline 21
"title": "Circ® and H&M Group Advance Circular Fashion through UNIDO-Led SWITCH2CE Program | UNIDO", "href": "https://www.unido.org/news/circr-and-hm-group-advance-circular-fashion-through-unido-led-switch2ce-program", "body": " - Network accessline 22
"href": "https://www.unido.org/news/circr-and-hm-group-advance-circular-fashion-through-unido-led-switch2ce-program", - Network accessline 26
"content": "", "site_name": "United Nations Industrial Development Organization (UNIDO)", "site_icon": "https://cdn.deepseek.com/site-icons/unido.org", - Network accessline 27
"site_name": "United Nations Industrial Development Organization (UNIDO)", "site_icon": "https://cdn.deepseek.com/site-icons/unido.org", "date": null, - Network accessline 28
"site_icon": "https://cdn.deepseek.com/site-icons/unido.org", - Network accessline 33
{ "title": "UNIDO-led circular textile pilot delivers second commercial product | UNIDO", "href": "https://www.unido.org/news/unido-led-circular-textile-pilot-delivers-second-commercial-product", - Network accessline 34
"title": "UNIDO-led circular textile pilot delivers second commercial product | UNIDO", "href": "https://www.unido.org/news/unido-led-circular-textile-pilot-delivers-second-commercial-product", "body": "The achievement demonstra - Network accessline 35
"href": "https://www.unido.org/news/unido-led-circular-textile-pilot-delivers-second-commercial-product", - Network accessline 39
"content": "", "site_name": "United Nations Industrial Development Organization (UNIDO)", "site_icon": "https://cdn.deepseek.com/site-icons/unido.org", - Network accessline 40
"site_name": "United Nations Industrial Development Organization (UNIDO)", "site_icon": "https://cdn.deepseek.com/site-icons/unido.org", "date": "2026-10-06T16:00:00+00:00", - Network accessline 41
"site_icon": "https://cdn.deepseek.com/site-icons/unido.org",
scripts/channels/deepseek/output-analysis.md
- Network accessline 39
核查日期:2026-10-25。官方来源:[Search API](https://api-docs.deepseek.com/zh-cn/api/search/)。
scripts/channels/duckduckgo/duckduckgo_no_api.py
- Executable scriptline 1
Executable file
scripts/channels/duckduckgo/duckduckgo_search.py
- Executable scriptline 1
Executable file - Network accessline 27
deadline = SearchDeadline(timeout) with self.session: home = request(self.session, 'GET', 'https://duckduckgo.com/', params={'q': query, 't': 'h_', 'ia': 'web'}, timeout=deadline.remaining()) - Network accessline 28
with self.session: home = request(self.session, 'GET', 'https://duckduckgo.com/', params={'q': query, 't': 'h_', 'ia': 'web'}, timeout=deadline.remaining()) links = document(home).xpath('//link[@id="deep_preload_link - Network accessline 29
home = request(self.session, 'GET', 'https://duckduckgo.com/', params={'q': query, 't': 'h_', 'ia': 'web'}, timeout=deadline.remaining()) - Network accessline 38
if dict(parse_qsl(parsed.query)).get('o') != 'json': endpoint = endpoint.replace('/d.js?', '/d.js?o=json&', 1) response = request(self.session, 'GET', endpoint, timeout=deadline.remaining(), headers={'Ref - Network accessline 39
endpoint = endpoint.replace('/d.js?', '/d.js?o=json&', 1) response = request(self.session, 'GET', endpoint, timeout=deadline.remaining(), headers={'Referer': 'https://duckduckgo.com/', 'Accept': '*/*', 'Sec-Fetch-Dest': 'scr - Network accessline 40
response = request(self.session, 'GET', endpoint, timeout=deadline.remaining(), headers={'Referer': 'https://duckduckgo.com/', 'Accept': '*/*', 'Sec-Fetch-Dest': 'script', 'Sec-Fetch-Mode': 'no-cors', 'Sec-Fetch-Site': 'same-site'}) - Network accessline 46
if not next_links: return [] endpoint = urljoin('https://duckduckgo.com/', next_links[-1]) - Network accessline 47
return [] endpoint = urljoin('https://duckduckgo.com/', next_links[-1]) items = [] - Network accessline 48
endpoint = urljoin('https://duckduckgo.com/', next_links[-1])
scripts/channels/duckduckgo/examples/search-result.json
- Network accessline 7
{ "title": "Green production and consumption of textiles and apparel: Importance ...", "url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", - Network accessline 8
"title": "Green production and consumption of textiles and apparel: Importance ...", "url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", "content": "The textile and clothing industry can do its part to - Network accessline 9
"url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", - Network accessline 21
{ "title": "PDF Review on Sustainability in the Textiles and Apparel Industry: A ...", "url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-o - Network accessline 22
"title": "PDF Review on Sustainability in the Textiles and Apparel Industry: A ...", "url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-of-Enviro - Network accessline 23
"url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-of-Environmental-and-Social-Impacts.pdf", - Network accessline 35
{ "title": "Sustainability in Apparel Industry: The Complete Guide (2027)", "url": "https://ordnur.com/apparel/sustainability-in-apparel-industry/", - Network accessline 36
"title": "Sustainability in Apparel Industry: The Complete Guide (2027)", "url": "https://ordnur.com/apparel/sustainability-in-apparel-industry/", "content": "Sustainability in the apparel industry explained: environmental impac - Network accessline 37
"url": "https://ordnur.com/apparel/sustainability-in-apparel-industry/",
scripts/channels/duckduckgo/output-analysis.md
- Network accessline 30
官方来源(2026-10-25):[DuckDuckGo 网页 URL 参数说明](https://duckduckgo.com/duckduckgo-help-pages/settings/params/),已读取正文,未发现固定最大结果数承诺。
scripts/channels/duckduckgo_instant/duckduckgo_instant.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
ENGINE_NAME = "duckduckgo_instant" ENGINE_DISPLAY_NAME = "DuckDuckGo 即时答案" API_URL = "https://api.duckduckgo.com/?q={keyword}&format=json&no_redirect=1&no_html=1" - Network accessline 22
ENGINE_DISPLAY_NAME = "DuckDuckGo 即时答案" API_URL = "https://api.duckduckgo.com/?q={keyword}&format=json&no_redirect=1&no_html=1" REQUIRES_PROXY = False - Network accessline 23
API_URL = "https://api.duckduckgo.com/?q={keyword}&format=json&no_redirect=1&no_html=1" - Network accessline 26
def __init__(self, proxy=None): self.proxy = proxy self.session = requests.Session() - Network accessline 27
self.proxy = proxy self.session = requests.Session() self.session.headers.update({ - Network accessline 28
self.session = requests.Session()
scripts/channels/duckduckgo_instant/examples/search-result.json
- Network accessline 3
{ "title": "Textile An umbrella term that includes various fiber-based materials, including ", "href": "https://duckduckgo.com/Textile", - Network accessline 4
"title": "Textile An umbrella term that includes various fiber-based materials, including ", "href": "https://duckduckgo.com/Textile", "body": "Textile An umbrella term that includes various fiber-based materials, including fibe - Network accessline 5
"href": "https://duckduckgo.com/Textile", - Network accessline 10
{ "title": "Textile industry The textile industry is primarily concerned with the design, pr", "href": "https://duckduckgo.com/Textile_industry", - Network accessline 11
"title": "Textile industry The textile industry is primarily concerned with the design, pr", "href": "https://duckduckgo.com/Textile_industry", "body": "Textile industry The textile industry is primarily concerned with the desig - Network accessline 12
"href": "https://duckduckgo.com/Textile_industry", - Network accessline 17
{ "title": "Textile (markup language) A lightweight markup language that uses a text formatt", "href": "https://duckduckgo.com/Textile_(markup_language)", - Network accessline 18
"title": "Textile (markup language) A lightweight markup language that uses a text formatt", "href": "https://duckduckgo.com/Textile_(markup_language)", "body": "Textile (markup language) A lightweight markup language that uses - Network accessline 19
"href": "https://duckduckgo.com/Textile_(markup_language)",
scripts/channels/duckduckgo_instant/output-analysis.md
- Network accessline 31
官方来源(2026-10-25):[DuckDuckGo 官方仓库中的 Instant Answer API 文档](https://github.com/duckduckgo/duckduckgo-publisher/blob/master/share/site/duckduckgo/api.tx)、[同一文档原文](https://raw.githubusercontent.com/duckduckgo/duckduckgo-publisher/master/share/ - Network accessline 33
`duckduckgo_instant.py` 调用 `https://api.duckduckgo.com/` 的匿名 JSON Instant Answer 接口,使用 `format=json&no_redirect=1&no_html=1`。内容范围为即时答案、主要结果与相关主题。函数返回数组,脚本 `--json` 包装为 `{results:array<object>}`;上游响应对象本身不会完整输出。
scripts/channels/ecosia/ecosia_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
ENGINE_NAME = "ecosia" ENGINE_DISPLAY_NAME = "Ecosia" SEARCH_URL = "https://www.ecosia.org/search?q={keyword}" - Network accessline 22
ENGINE_DISPLAY_NAME = "Ecosia" SEARCH_URL = "https://www.ecosia.org/search?q={keyword}" REQUIRES_PROXY = True - Network accessline 23
SEARCH_URL = "https://www.ecosia.org/search?q={keyword}"
scripts/channels/ecosia/output-analysis.md
- Network accessline 28
官方来源(2026-10-25):[Ecosia 搜索设置](https://support.ecosia.org/article/349-ecosia-settings),已读取正文;[搜索提供商说明](https://support.ecosia.org/article/579-search-results-providers),经官方页面检索核对。 - Network accessline 30
`ecosia_no_api.py` 请求 `https://www.ecosia.org/search?q=...`,输入来源为网页 HTML。它继承 `no_api/base_engine.py`,用 lxml 解析响应;没有调用 Ecosia JSON API,也没有浏览器执行页面脚本。结果容器匹配 `article` 的 result 类名或 `div.result-web`。
scripts/channels/exa/README.md
- Network accessline 25
mcporter config add exa "https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,get_code_context_exa,crawling_exa,company_research_exa,people_search_exa,deep_researcher_start,deep_researcher_check" - Network accessline 75
# 抓取网页内容 python scripts/channels/exa/exa_mcp.py crawl "https://example.com" --max-chars 5000 - Network accessline 76
python scripts/channels/exa/exa_mcp.py crawl "https://example.com" --max-chars 5000 - Network accessline 131
mcporter config add exa "https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,get_code_context_exa,crawling_exa,company_research_exa,people_search_exa,deep_researcher_start,deep_researcher_check" - Network accessline 142
- [Exa MCP Server GitHub](https://github.com/exa-labs/exa-mcp-server) - Network accessline 143
- [Exa npm](https://www.npmjs.com/package/exa-mcp-server) - Network accessline 144
- [Exa Docs](https://exa.ai/docs)
scripts/channels/exa/exa_mcp.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/channels/exa/exa_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 6
免费额度:1000 次/月(约 33 次/天) 申请 API Key: https://exa.ai/ - Network accessline 7
申请 API Key: https://exa.ai/ - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 28
ENGINE_NAME = "exa" ENGINE_DISPLAY_NAME = "Exa AI 搜索" API_ENDPOINT = "https://api.exa.ai/search" - Network accessline 29
[Credential-related source omitted] - Network accessline 30
API_ENDPOINT = "https://api.exa.ai/search" - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Network accessline 44
self.session = requests.Session() - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 202
[Credential-related source omitted] - Access to secretsline 210
[Credential-related source omitted]
scripts/channels/exa/examples/search-result.json
- Network accessline 7
{ "title": "Sustainability and Circularity in the Textile Value Chain", "href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content", - Network accessline 8
"title": "Sustainability and Circularity in the Textile Value Chain", "href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content", "body": "Sustainability and Circularity in the Textil - Network accessline 9
"href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content", - Network accessline 14
{ "title": "Sustainability trends and gaps in the textile, apparel and fashion industries | Environment, Development and Sustainability | Springer Nature Link", "href": "https://link.springer.com/article/10.1007/s10668-022-02887 - Network accessline 15
"title": "Sustainability trends and gaps in the textile, apparel and fashion industries | Environment, Development and Sustainability | Springer Nature Link", "href": "https://link.springer.com/article/10.1007/s10668-022-02887-2", - Network accessline 16
"href": "https://link.springer.com/article/10.1007/s10668-022-02887-2", - Network accessline 21
{ "title": "Textiles Strategy - Environment - European Commission", "href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", - Network accessline 22
"title": "Textiles Strategy - Environment - European Commission", "href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", "body": "Textiles Strategy - Environment - European Commission\n\n# Sustainable and Circ - Network accessline 23
"href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en",
scripts/channels/exa/mcporter.json
- Network accessline 2
"mcpServers": { "exa": { "baseUrl": "https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,get_code_context_exa,crawling_exa,company_research_exa,people_search_exa,deep_researcher_start,deep_researcher_check" - Network accessline 3
"exa": { "baseUrl": "https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,get_code_context_exa,crawling_exa,company_research_exa,people_search_exa,deep_researcher_start,deep_researcher_check" } - Network accessline 4
"baseUrl": "https://mcp.exa.ai/mcp?tools=web_search_exa,web_search_advanced_exa,get_code_context_exa,crawling_exa,company_research_exa,people_search_exa,deep_researcher_start,deep_researcher_check"
scripts/channels/exa/output-analysis.md
- Network accessline 35
核查日期:2026-10-25。官方来源:[Search API](https://exa.ai/docs/reference/search)。
scripts/channels/firecrawl/README.md
- Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
# 自建服务时填写,默认 https://api.firecrawl.dev - Network accessline 23
API Key 在 [Firecrawl 控制台](https://www.firecrawl.dev/app) 创建。 - Network accessline 58
| `--formats` | 抓取格式 | markdown | | `--api-key` | API Key(优先于环境变量) | - | | `--api-url` | 接口地址 | https://api.firecrawl.dev | - Network accessline 59
| `--api-key` | API Key(优先于环境变量) | - | | `--api-url` | 接口地址 | https://api.firecrawl.dev | | `--json` | JSON 输出 | False | - Network accessline 60
| `--api-url` | 接口地址 | https://api.firecrawl.dev | - Network accessline 73
- [Firecrawl 搜索文档](https://docs.firecrawl.dev/features/search) - Network accessline 74
- [Firecrawl API 参考](https://docs.firecrawl.dev/api-reference/endpoint/search)
scripts/channels/firecrawl/examples/search-result.json
- Network accessline 7
{ "title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 8
"title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "body": "The fashion and textiles sector relies heavily on synthetic fib - Network accessline 9
"href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 15
{ "title": "Sustainable Clothing Manufacturing: Best Practices for Eco-Friendly ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 16
"title": "Sustainable Clothing Manufacturing: Best Practices for Eco-Friendly ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", "body": "To achieve sustainable garment manufacturin - Network accessline 17
"href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 23
{ "title": "Sustainable Fashion and Apparel Design: Standards | Certificates", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", - Network accessline 24
"title": "Sustainable Fashion and Apparel Design: Standards | Certificates", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", "body": "# Sustainable Fashion and Apparel Design: Standards | Certificates | Se - Network accessline 25
"href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", - Network accessline 26
"body": "# Sustainable Fashion and Apparel Design: Standards | Certificates | Seals | Initiatives | Responsibility\n## Environment\nHeadquartered in Switzerland Remei AG coordinates the production of sustainable textiles made from organic c
scripts/channels/firecrawl/firecrawl_search.py
- Executable scriptline 1
Executable file - Access to secretsline 11
[Credential-related source omitted] - Network accessline 13
DEFAULT_API_URL = "https://api.firecrawl.dev" - Network accessline 17
"""Firecrawl 搜索客户端,接口文档 https://docs.firecrawl.dev/features/search""" - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 29
self.session = requests.Session() - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 179
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Network accessline 198
parser.add_argument("--formats", nargs="+", default=["markdown"], help="抓取格式") parser.add_argument("--api-key", help="Firecrawl API Key") parser.add_argument("--api-url", help="Firecrawl API 地址,默认 https://api.firecrawl.dev") - Network accessline 199
parser.add_argument("--api-key", help="Firecrawl API Key") parser.add_argument("--api-url", help="Firecrawl API 地址,默认 https://api.firecrawl.dev") parser.add_argument("--timeout", type=int, default=60, help="请求超时秒数") - Network accessline 200
parser.add_argument("--api-url", help="Firecrawl API 地址,默认 https://api.firecrawl.dev") - Access to secretsline 206
[Credential-related source omitted]
scripts/channels/firecrawl/output-analysis.md
- Network accessline 42
核查日期:2026-10-25。官方来源:[Search v2](https://docs.firecrawl.dev/api-reference/endpoint/search)。
scripts/channels/github_search/README.md
- Network accessline 18
[Credential-related source omitted] - Network accessline 66
WebFetch https://deepwiki.com/owner/repo "你的问题" - Network accessline 71
WebFetch https://deepwiki.com/vercel/next.js "请总结 Next.js 的核心架构" - Network accessline 72
WebFetch https://deepwiki.com/facebook/react "React 的 Fiber 架构是如何工作的?"
scripts/channels/github_search/deepwiki.md
- Network accessline 19
claude mcp add -s user -t http deepwiki https://mcp.deepwiki.com/mcp - Network accessline 27
"mcpServers": { "deepwiki": { "url": "https://mcp.deepwiki.com/mcp", - Network accessline 28
"deepwiki": { "url": "https://mcp.deepwiki.com/mcp", "transport": "http" - Network accessline 29
"url": "https://mcp.deepwiki.com/mcp", - Network accessline 40
"mcpServers": { "deepwiki": { "serverUrl": "https://mcp.deepwiki.com/sse" - Network accessline 41
"deepwiki": { "serverUrl": "https://mcp.deepwiki.com/sse" } - Network accessline 42
"serverUrl": "https://mcp.deepwiki.com/sse" - Network accessline 105
- 官网: https://deepwiki.com - Network accessline 106
- 文档: https://docs.devin.ai/work-with-devin/deepwiki - Network accessline 107
- GitHub: https://github.com/CognitionAI/deepwiki
scripts/channels/github_search/examples/search-result.json
- Network accessline 15
"id": 228436136, "node_id": "U_kgDODZ2oqA", "avatar_url": "https://avatars.githubusercontent.com/u/228436136?v=4", - Network accessline 16
"node_id": "U_kgDODZ2oqA", "avatar_url": "https://avatars.githubusercontent.com/u/228436136?v=4", "gravatar_id": "", - Network accessline 17
"avatar_url": "https://avatars.githubusercontent.com/u/228436136?v=4", - Network accessline 18
"gravatar_id": "", "url": "https://api.github.com/users/ruhianjum0425-code", "html_url": "https://github.com/ruhianjum0425-code", - Network accessline 19
"url": "https://api.github.com/users/ruhianjum0425-code", - Network accessline 20
"html_url": "https://github.com/ruhianjum0425-code", - Network accessline 21
"followers_url": "https://api.github.com/users/ruhianjum0425-code/followers", - Network accessline 22
"following_url": "https://api.github.com/users/ruhianjum0425-code/following{/other_user}", - Network accessline 23
"gists_url": "https://api.github.com/users/ruhianjum0425-code/gists{/gist_id}", - Network accessline 24
"starred_url": "https://api.github.com/users/ruhianjum0425-code/starred{/owner}{/repo}", - Network accessline 25
"subscriptions_url": "https://api.github.com/users/ruhianjum0425-code/subscriptions", - Network accessline 26
"organizations_url": "https://api.github.com/users/ruhianjum0425-code/orgs", - Network accessline 27
"repos_url": "https://api.github.com/users/ruhianjum0425-code/repos", - Network accessline 28
"events_url": "https://api.github.com/users/ruhianjum0425-code/events{/privacy}", - Network accessline 29
"received_events_url": "https://api.github.com/users/ruhianjum0425-code/received_events", - Network accessline 32
"site_admin": false }, "html_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration", - Network accessline 33
}, "html_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration", "description": "A Python-based data integration project for the apparel and textiles industry. Combines retail sales, inventory, and mater - Network accessline 34
"html_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration", - Network accessline 35
"description": "A Python-based data integration project for the apparel and textiles industry. Combines retail sales, inventory, and material sustainability datasets through data cleaning, normalization, reconciliation, transformation, and - Network accessline 36
"fork": false, "url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration", "forks_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/forks", - Network accessline 37
"url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration", - Network accessline 38
"forks_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/forks", - Network accessline 39
"keys_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/keys{/key_id}", - Network accessline 40
"collaborators_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/collaborators{/collaborator}", - Network accessline 41
"teams_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/teams", - Network accessline 42
"hooks_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/hooks", - Network accessline 43
"issue_events_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/issues/events{/number}", - Network accessline 44
"events_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/events", - Network accessline 45
"assignees_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/assignees{/user}", - Network accessline 46
"branches_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/branches{/branch}", - Network accessline 47
"tags_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/tags", - Network accessline 48
"blobs_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/git/blobs{/sha}", - Network accessline 49
"git_tags_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/git/tags{/sha}", - Network accessline 50
"git_refs_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/git/refs{/sha}", - Network accessline 51
"trees_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/git/trees{/sha}", - Network accessline 52
"statuses_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/statuses/{sha}", - Network accessline 53
"languages_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/languages", - Network accessline 54
"stargazers_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/stargazers", - Network accessline 55
"contributors_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/contributors", - Network accessline 56
"subscribers_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/subscribers", - Network accessline 57
"subscription_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/subscription", - Network accessline 58
"commits_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/commits{/sha}", - Network accessline 59
"git_commits_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/git/commits{/sha}", - Network accessline 60
"comments_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/comments{/number}", - Network accessline 61
"issue_comment_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/issues/comments{/number}", - Network accessline 62
"contents_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/contents/{+path}", - Network accessline 63
"compare_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/compare/{base}...{head}", - Network accessline 64
"merges_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/merges", - Network accessline 65
"archive_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/{archive_format}{/ref}", - Network accessline 66
"downloads_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/downloads", - Network accessline 67
"issues_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/issues{/number}", - Network accessline 68
"pulls_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/pulls{/number}", - Network accessline 69
"milestones_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/milestones{/number}", - Network accessline 70
"notifications_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/notifications{?since,all,participating}", - Network accessline 71
"labels_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/labels{/name}", - Network accessline 72
"releases_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/releases{/id}", - Network accessline 73
"deployments_url": "https://api.github.com/repos/ruhianjum0425-code/apparel-textiles-data-integration/deployments", - Network accessline 77
"git_url": "git://github.com/ruhianjum0425-code/apparel-textiles-data-integration.git", "ssh_url": "git@github.com:ruhianjum0425-code/apparel-textiles-data-integration.git", "clone_url": "https://github.com/ruhianjum0425-code/ap - Network accessline 78
"ssh_url": "git@github.com:ruhianjum0425-code/apparel-textiles-data-integration.git", "clone_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration.git", "svn_url": "https://github.com/ruhianjum0425-code/ - Network accessline 79
"clone_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration.git", - Network accessline 80
"svn_url": "https://github.com/ruhianjum0425-code/apparel-textiles-data-integration", - Network accessline 126
"id": 163707498, "node_id": "U_kgDOCcH6ag", "avatar_url": "https://avatars.githubusercontent.com/u/163707498?v=4", - Network accessline 127
"node_id": "U_kgDOCcH6ag", "avatar_url": "https://avatars.githubusercontent.com/u/163707498?v=4", "gravatar_id": "", - Network accessline 128
"avatar_url": "https://avatars.githubusercontent.com/u/163707498?v=4", - Network accessline 129
"gravatar_id": "", "url": "https://api.github.com/users/ftzon", "html_url": "https://github.com/ftzon", - Network accessline 130
"url": "https://api.github.com/users/ftzon", - Network accessline 131
"html_url": "https://github.com/ftzon", - Network accessline 132
"followers_url": "https://api.github.com/users/ftzon/followers", - Network accessline 133
"following_url": "https://api.github.com/users/ftzon/following{/other_user}", - Network accessline 134
"gists_url": "https://api.github.com/users/ftzon/gists{/gist_id}", - Network accessline 135
"starred_url": "https://api.github.com/users/ftzon/starred{/owner}{/repo}", - Network accessline 136
"subscriptions_url": "https://api.github.com/users/ftzon/subscriptions", - Network accessline 137
"organizations_url": "https://api.github.com/users/ftzon/orgs", - Network accessline 138
"repos_url": "https://api.github.com/users/ftzon/repos", - Network accessline 139
"events_url": "https://api.github.com/users/ftzon/events{/privacy}", - Network accessline 140
"received_events_url": "https://api.github.com/users/ftzon/received_events", - Network accessline 143
"site_admin": false }, "html_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A", - Network accessline 144
}, "html_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A", "description": "Sustainability performance of Dutch firms and the role of digitalization: The case of textile and apparel industry", - Network accessline 145
"html_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A", - Network accessline 146
"description": "Sustainability performance of Dutch firms and the role of digitalization: The case of textile and apparel industry", "fork": false, "url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_Dut - Network accessline 147
"fork": false, "url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A", "forks_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/forks", - Network accessline 148
"url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A", - Network accessline 149
"forks_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/forks", - Network accessline 150
"keys_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/keys{/key_id}", - Network accessline 151
"collaborators_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/collaborators{/collaborator}", - Network accessline 152
"teams_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/teams", - Network accessline 153
"hooks_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/hooks", - Network accessline 154
"issue_events_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/issues/events{/number}", - Network accessline 155
"events_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/events", - Network accessline 156
"assignees_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/assignees{/user}", - Network accessline 157
"branches_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/branches{/branch}", - Network accessline 158
"tags_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/tags", - Network accessline 159
"blobs_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/git/blobs{/sha}", - Network accessline 160
"git_tags_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/git/tags{/sha}", - Network accessline 161
"git_refs_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/git/refs{/sha}", - Network accessline 162
"trees_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/git/trees{/sha}", - Network accessline 163
"statuses_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/statuses/{sha}", - Network accessline 164
"languages_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/languages", - Network accessline 165
"stargazers_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/stargazers", - Network accessline 166
"contributors_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/contributors", - Network accessline 167
"subscribers_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/subscribers", - Network accessline 168
"subscription_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/subscription", - Network accessline 169
"commits_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/commits{/sha}", - Network accessline 170
"git_commits_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/git/commits{/sha}", - Network accessline 171
"comments_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/comments{/number}", - Network accessline 172
"issue_comment_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/issues/comments{/number}", - Network accessline 173
"contents_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/contents/{+path}", - Network accessline 174
"compare_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/compare/{base}...{head}", - Network accessline 175
"merges_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/merges", - Network accessline 176
"archive_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/{archive_format}{/ref}", - Network accessline 177
"downloads_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/downloads", - Network accessline 178
"issues_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/issues{/number}", - Network accessline 179
"pulls_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/pulls{/number}", - Network accessline 180
"milestones_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/milestones{/number}", - Network accessline 181
"notifications_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/notifications{?since,all,participating}", - Network accessline 182
"labels_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/labels{/name}", - Network accessline 183
"releases_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/releases{/id}", - Network accessline 184
"deployments_url": "https://api.github.com/repos/ftzon/SCM_Sustainability_Digitalization_DutchT-A/deployments", - Network accessline 188
"git_url": "git://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A.git", "ssh_url": "git@github.com:ftzon/SCM_Sustainability_Digitalization_DutchT-A.git", "clone_url": "https://github.com/ftzon/SCM_Sustainability_Digi - Network accessline 189
"ssh_url": "git@github.com:ftzon/SCM_Sustainability_Digitalization_DutchT-A.git", "clone_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A.git", "svn_url": "https://github.com/ftzon/SCM_Sustainability_Di - Network accessline 190
"clone_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A.git", - Network accessline 191
"svn_url": "https://github.com/ftzon/SCM_Sustainability_Digitalization_DutchT-A", - Network accessline 237
"id": 208210674, "node_id": "U_kgDODGkK8g", "avatar_url": "https://avatars.githubusercontent.com/u/208210674?v=4", - Network accessline 238
"node_id": "U_kgDODGkK8g", "avatar_url": "https://avatars.githubusercontent.com/u/208210674?v=4", "gravatar_id": "", - Network accessline 239
"avatar_url": "https://avatars.githubusercontent.com/u/208210674?v=4", - Network accessline 240
"gravatar_id": "", "url": "https://api.github.com/users/mahtab2011", "html_url": "https://github.com/mahtab2011", - Network accessline 241
"url": "https://api.github.com/users/mahtab2011", - Network accessline 242
"html_url": "https://github.com/mahtab2011", - Network accessline 243
"followers_url": "https://api.github.com/users/mahtab2011/followers", - Network accessline 244
"following_url": "https://api.github.com/users/mahtab2011/following{/other_user}", - Network accessline 245
"gists_url": "https://api.github.com/users/mahtab2011/gists{/gist_id}", - Network accessline 246
"starred_url": "https://api.github.com/users/mahtab2011/starred{/owner}{/repo}", - Network accessline 247
"subscriptions_url": "https://api.github.com/users/mahtab2011/subscriptions", - Network accessline 248
"organizations_url": "https://api.github.com/users/mahtab2011/orgs", - Network accessline 249
"repos_url": "https://api.github.com/users/mahtab2011/repos", - Network accessline 250
"events_url": "https://api.github.com/users/mahtab2011/events{/privacy}", - Network accessline 251
"received_events_url": "https://api.github.com/users/mahtab2011/received_events", - Network accessline 254
"site_admin": false }, "html_url": "https://github.com/mahtab2011/bangladeshapparel", - Network accessline 255
}, "html_url": "https://github.com/mahtab2011/bangladeshapparel", "description": "Bangladesh Apparel Industry Digital Marketplace connecting global buyers, garment manufacturers, textile mills, accessories suppliers, sustainabil - Network accessline 256
"html_url": "https://github.com/mahtab2011/bangladeshapparel", - Network accessline 257
"description": "Bangladesh Apparel Industry Digital Marketplace connecting global buyers, garment manufacturers, textile mills, accessories suppliers, sustainability initiatives, workforce intelligence and AI-powered factory analytics.", - Network accessline 258
"fork": false, "url": "https://api.github.com/repos/mahtab2011/bangladeshapparel", "forks_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/forks", - Network accessline 259
"url": "https://api.github.com/repos/mahtab2011/bangladeshapparel", - Network accessline 260
"forks_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/forks", - Network accessline 261
"keys_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/keys{/key_id}", - Network accessline 262
"collaborators_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/collaborators{/collaborator}", - Network accessline 263
"teams_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/teams", - Network accessline 264
"hooks_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/hooks", - Network accessline 265
"issue_events_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/issues/events{/number}", - Network accessline 266
"events_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/events", - Network accessline 267
"assignees_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/assignees{/user}", - Network accessline 268
"branches_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/branches{/branch}", - Network accessline 269
"tags_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/tags", - Network accessline 270
"blobs_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/git/blobs{/sha}", - Network accessline 271
"git_tags_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/git/tags{/sha}", - Network accessline 272
"git_refs_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/git/refs{/sha}", - Network accessline 273
"trees_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/git/trees{/sha}", - Network accessline 274
"statuses_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/statuses/{sha}", - Network accessline 275
"languages_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/languages", - Network accessline 276
"stargazers_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/stargazers", - Network accessline 277
"contributors_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/contributors", - Network accessline 278
"subscribers_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/subscribers", - Network accessline 279
"subscription_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/subscription", - Network accessline 280
"commits_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/commits{/sha}", - Network accessline 281
"git_commits_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/git/commits{/sha}", - Network accessline 282
"comments_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/comments{/number}", - Network accessline 283
"issue_comment_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/issues/comments{/number}", - Network accessline 284
"contents_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/contents/{+path}", - Network accessline 285
"compare_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/compare/{base}...{head}", - Network accessline 286
"merges_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/merges", - Network accessline 287
"archive_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/{archive_format}{/ref}", - Network accessline 288
"downloads_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/downloads", - Network accessline 289
"issues_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/issues{/number}", - Network accessline 290
"pulls_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/pulls{/number}", - Network accessline 291
"milestones_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/milestones{/number}", - Network accessline 292
"notifications_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/notifications{?since,all,participating}", - Network accessline 293
"labels_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/labels{/name}", - Network accessline 294
"releases_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/releases{/id}", - Network accessline 295
"deployments_url": "https://api.github.com/repos/mahtab2011/bangladeshapparel/deployments", - Network accessline 299
"git_url": "git://github.com/mahtab2011/bangladeshapparel.git", "ssh_url": "git@github.com:mahtab2011/bangladeshapparel.git", "clone_url": "https://github.com/mahtab2011/bangladeshapparel.git", - Network accessline 300
"ssh_url": "git@github.com:mahtab2011/bangladeshapparel.git", "clone_url": "https://github.com/mahtab2011/bangladeshapparel.git", "svn_url": "https://github.com/mahtab2011/bangladeshapparel", - Network accessline 301
"clone_url": "https://github.com/mahtab2011/bangladeshapparel.git", - Network accessline 302
"svn_url": "https://github.com/mahtab2011/bangladeshapparel", - Network accessline 303
"homepage": "https://bangladeshapparel.vercel.app",
scripts/channels/github_search/github_search.py
scripts/channels/github_search/output-analysis.md
- Network accessline 31
官方来源(资料整理日期:2026-10-25):[REST Search:仓库、代码、Issue 参数与搜索限制](https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28)。
scripts/channels/google_search/README.md
- Access to secretsline 5
[Credential-related source omitted] - Network accessline 24
1. 访问 [Google Cloud Console](https://console.cloud.google.com/apis/credentials) 获取 API Key - Network accessline 25
2. 访问 [Programmable Search Engine](https://programmablesearchengine.google.com/) 创建自定义搜索引擎 - Access to secretsline 28
[Credential-related source omitted] - Network accessline 80
- [Google Custom Search API 文档](https://developers.google.com/custom-search/v1/overview) - Network accessline 81
- [API 配额说明](https://developers.google.com/custom-search/v1/overview#pricing)
scripts/channels/google_search/examples/search-result.json
- Network accessline 9
"title": "Environmental Sustainability in the Fashion Industry", "htmlTitle": "Environmental <b>Sustainability</b> in the <b>Fashion Industry</b>", "link": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable- - Network accessline 10
"htmlTitle": "Environmental <b>Sustainability</b> in the <b>Fashion Industry</b>", "link": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "displayLink": "www.genevaenvironmentnetwork.org", - Network accessline 11
"link": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 13
"snippet": "Sep 17, 2026 ... Discarded clothing often ends up in the Global South, where inadequate waste management leads to dumping, burning, and severe environmental and ...", "htmlSnippet": "Sep 17, 2026 <b>...</b> Discarded <b>cl - Network accessline 14
"htmlSnippet": "Sep 17, 2026 <b>...</b> Discarded <b>clothing</b> often ends up in the Global South, where inadequate waste management leads to dumping, burning, and severe environmental and ...", "formattedUrl": "https://www.gen - Network accessline 15
"formattedUrl": "https://www.genevaenvironmentnetwork.org/resources/.../sustainable-fashio...", - Network accessline 16
"htmlFormattedUrl": "https://www.genevaenvironmentnetwork.org/resources/.../<b>sustainable</b>-fashio...", - Network accessline 18
"cse_thumbnail": [ { "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcST5TQ9wU8_PrzUmHAS_5V7zYo1eAgmuF7FqU5g8cTurfZ6l_OlWXMYNU66&s", - Network accessline 19
{ "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcST5TQ9wU8_PrzUmHAS_5V7zYo1eAgmuF7FqU5g8cTurfZ6l_OlWXMYNU66&s", "width": "290", - Network accessline 20
"src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcST5TQ9wU8_PrzUmHAS_5V7zYo1eAgmuF7FqU5g8cTurfZ6l_OlWXMYNU66&s", - Network accessline 25
"metatags": [ { "og:image": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg", - Network accessline 26
{ "og:image": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg", "og:type": "article", - Network accessline 27
"og:image": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg", - Network accessline 30
"twitter:title": "Environmental Sustainability in the Fashion Industry", "viewport": "width=device-width, initial-scale=1", "twitter:url": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashi - Network accessline 31
"viewport": "width=device-width, initial-scale=1", "twitter:url": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "twitter:description": "Fast fashion comes at an astonishing enviro - Network accessline 32
"twitter:url": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 33
"twitter:description": "Fast fashion comes at an astonishing environmental and social cost. While the impacts of the fashion industry in terms of pollution, water use, carbon emissions, human rights, and gender inequality are increasing, th - Network accessline 34
"og:title": "Environmental Sustainability in the Fashion Industry", "og:url": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "og:description": "Fast fashion comes at an astonishing - Network accessline 35
"og:url": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 36
"og:description": "Fast fashion comes at an astonishing environmental and social cost. While the impacts of the fashion industry in terms of pollution, water use, carbon emissions, human rights, and gender inequality are increasing, the nee - Network accessline 37
"twitter:image": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg" - Network accessline 40
"cse_image": [ { "src": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg" - Network accessline 41
{ "src": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg" } - Network accessline 42
"src": "https://www.genevaenvironmentnetwork.org/wp-content/uploads/2021/03/becca-mchaffie-Fzde_6ITjkw-unsplash-aspect-ratio-2000-1200-1024x614.jpg" - Network accessline 49
"title": "Sustainable Apparel and Textiles Conference: Europe", "htmlTitle": "<b>Sustainable Apparel</b> and <b>Textiles</b> Conference: Europe", "link": "https://innovationforum.co.uk/conferences/sustainable-apparel-and-textile - Network accessline 50
"htmlTitle": "<b>Sustainable Apparel</b> and <b>Textiles</b> Conference: Europe", "link": "https://innovationforum.co.uk/conferences/sustainable-apparel-and-textiles-conference/", "displayLink": "innovationforum.co.uk", - Network accessline 51
"link": "https://innovationforum.co.uk/conferences/sustainable-apparel-and-textiles-conference/", - Network accessline 53
"snippet": "\"The IF conference has really become a meeting point for the textiles and apparel industry that attracts all kinds of important stakeholders. Not only are ...", "htmlSnippet": ""The IF conference has really become a - Network accessline 54
"htmlSnippet": ""The IF conference has really become a meeting point for the <b>textiles</b> and <b>apparel industry</b> that attracts all kinds of important stakeholders. Not only are ...", "formattedUrl": "https://innovati - Network accessline 55
"formattedUrl": "https://innovationforum.co.uk/.../sustainable-apparel-and-textiles-conferenc...", - Network accessline 56
"htmlFormattedUrl": "https://innovationforum.co.uk/.../<b>sustainable</b>-<b>apparel</b>-and-<b>textile</b>s-conferenc...", - Network accessline 58
"Event": [ { "image": "https://innovationforum.co.uk/wp-content/uploads/2025/09/ApparelEU26-BG-under-5MB_.png", - Network accessline 59
{ "image": "https://innovationforum.co.uk/wp-content/uploads/2025/09/ApparelEU26-BG-under-5MB_.png", "endDate": "2026-04-30", - Network accessline 60
"image": "https://innovationforum.co.uk/wp-content/uploads/2025/09/ApparelEU26-BG-under-5MB_.png", - Network accessline 75
"og:title": "Sustainable Apparel and Textiles Conference: Europe - Innovation Forum", "og:locale": "en_GB", "msapplication-tileimage": "https://beta.innovationforum.co.uk/wp-content/uploads/2025/12/if-favicon.svg", - Network accessline 76
"og:locale": "en_GB", "msapplication-tileimage": "https://beta.innovationforum.co.uk/wp-content/uploads/2025/12/if-favicon.svg", "og:url": "https://innovationforum.co.uk/conferences/sustainable-apparel-and-textiles-c - Network accessline 77
"msapplication-tileimage": "https://beta.innovationforum.co.uk/wp-content/uploads/2025/12/if-favicon.svg", - Network accessline 78
"og:url": "https://innovationforum.co.uk/conferences/sustainable-apparel-and-textiles-conference/", - Network accessline 86
"title": "Sustainable fashion is at a turning point - what's needed now", "htmlTitle": "<b>Sustainable fashion</b> is at a turning point - what's needed now", "link": "https://www.weforum.org/stories/climate-action-and-waste - Network accessline 87
"htmlTitle": "<b>Sustainable fashion</b> is at a turning point - what's needed now", "link": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-waste", "displ - Network accessline 88
"link": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-waste", - Network accessline 90
"snippet": "Aug 4, 2026 ... The textile sector is reaching a turning point when it comes to innovative sustainable fashion.Image: Unsplash/VitalyGariev. Avatar Image.", "htmlSnippet": "Aug 4, 2026 <b>...</b> The <b>textile sector</b> - Network accessline 91
"htmlSnippet": "Aug 4, 2026 <b>...</b> The <b>textile sector</b> is reaching a turning point when it comes to innovative <b>sustainable fashion</b>.Image: Unsplash/VitalyGariev. Avatar Image.", "formattedUrl": "https://www.weforum.org - Network accessline 92
"formattedUrl": "https://www.weforum.org/.../sustainable-fashion-innovation-solutions-textil...", - Network accessline 93
"htmlFormattedUrl": "https://www.weforum.org/.../<b>sustainable</b>-fashion-innovation-solutions-<b>textil</b>...", - Network accessline 95
"cse_thumbnail": [ { "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRBH4i_gPQDuyGzcVUIvkfzSzowMYHznTyfSPdF0y4IUgydXrZlWhH8CVvT&s", - Network accessline 96
{ "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRBH4i_gPQDuyGzcVUIvkfzSzowMYHznTyfSPdF0y4IUgydXrZlWhH8CVvT&s", "width": "300", - Network accessline 97
"src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRBH4i_gPQDuyGzcVUIvkfzSzowMYHznTyfSPdF0y4IUgydXrZlWhH8CVvT&s", - Network accessline 102
"metatags": [ { "og:image": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg", - Network accessline 103
{ "og:image": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg", "og:type": "article", - Network accessline 104
"og:image": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg", - Network accessline 108
"og:site_name": "World Economic Forum", "viewport": "width=device-width, initial-scale=1", "twitter:url": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-t - Network accessline 109
"viewport": "width=device-width, initial-scale=1", "twitter:url": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-waste/", "twitter:description": " - Network accessline 110
"twitter:url": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-waste/", - Network accessline 111
"twitter:description": "Circularity in fashion requires new commitments from industry. Here's what the right combination of policy, inclusion and innovation could make possible.", "og:title": "Sustainable fashion is at a turning - Network accessline 112
"og:title": "Sustainable fashion is at a turning point - what's needed now | World Economic Forum", "og:url": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-w - Network accessline 113
"og:url": "https://www.weforum.org/stories/climate-action-and-waste-reduction/sustainable-fashion-innovation-solutions-textile-waste/", - Network accessline 114
"og:description": "Circularity in fashion requires new commitments from industry. Here's what the right combination of policy, inclusion and innovation could make possible.", "twitter:image": "https://assets.weforum.org/article/ - Network accessline 115
"twitter:image": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg" - Network accessline 118
"cse_image": [ { "src": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg" - Network accessline 119
{ "src": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg" } - Network accessline 120
"src": "https://assets.weforum.org/article/image/tGhFA-sRQ5pFWBktaJWnxmu08KxudNZSdNA6A6DQqy4.jpg"
scripts/channels/google_search/google_hk_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "google_hk" ENGINE_DISPLAY_NAME = "Google 香港" SEARCH_URL = "https://www.google.com.hk/search?q={keyword}" - Network accessline 21
ENGINE_DISPLAY_NAME = "Google 香港" SEARCH_URL = "https://www.google.com.hk/search?q={keyword}" REQUIRES_PROXY = True - Network accessline 22
SEARCH_URL = "https://www.google.com.hk/search?q={keyword}"
scripts/channels/google_search/google_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
ENGINE_NAME = "google" ENGINE_DISPLAY_NAME = "Google 搜索" SEARCH_URL = "https://www.google.com/search?q={keyword}" - Network accessline 22
ENGINE_DISPLAY_NAME = "Google 搜索" SEARCH_URL = "https://www.google.com/search?q={keyword}" REQUIRES_PROXY = True - Network accessline 23
SEARCH_URL = "https://www.google.com/search?q={keyword}"
scripts/channels/google_search/google_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 19
[Credential-related source omitted] - Network accessline 25
BASE_URL = "https://www.googleapis.com/customsearch/v1" - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 81
response = requests.get(self.BASE_URL, params=params, timeout=10)
scripts/channels/google_search/output-analysis.md
- Network accessline 35
核查日期:2026-10-25。官方来源:[Custom Search cse.list](https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list)。
scripts/channels/jina/README.md
scripts/channels/jina/examples/search-result.json
- Network accessline 7
{ "title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 8
"title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "body": "The fashion and textiles sector relies heavily on synthetic fib - Network accessline 9
"href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 12
{ "title": "Sustainability in the Textile and Apparel Industries", "href": "https://link.springer.com/book/10.1007/978-3-030-37929-2", - Network accessline 13
"title": "Sustainability in the Textile and Apparel Industries", "href": "https://link.springer.com/book/10.1007/978-3-030-37929-2", "body": "by SS Muthu · Cited by 79 — This volume explores novel trends and concepts in sustaina - Network accessline 14
"href": "https://link.springer.com/book/10.1007/978-3-030-37929-2", - Network accessline 17
{ "title": "Green production and consumption of textiles and apparel", "href": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", - Network accessline 18
"title": "Green production and consumption of textiles and apparel", "href": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", "body": "by MT Rahaman · 2024 · Cited by 248 — To satisfy customer demand for et - Network accessline 19
"href": "https://www.sciencedirect.com/science/article/pii/S219985312400074X",
scripts/channels/jina/jina_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 22
[Credential-related source omitted] - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 30
self.base_url = "https://s.jina.ai/" - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Network accessline 42
response = requests.get(self.base_url, headers=headers, params=params, timeout=30) - Access to secretsline 101
[Credential-related source omitted]
scripts/channels/jina/output-analysis.md
- Network accessline 36
核查日期:2026-10-25。官方来源:[Jina API Reference](https://docs.jina.ai/)。
scripts/channels/jisilu/jisilu_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "jisilu" ENGINE_DISPLAY_NAME = "基Silver" SEARCH_URL = "https://app.jisilu.cn/search/?q={keyword}" - Network accessline 21
ENGINE_DISPLAY_NAME = "基Silver" SEARCH_URL = "https://app.jisilu.cn/search/?q={keyword}" REQUIRES_PROXY = False - Network accessline 22
SEARCH_URL = "https://app.jisilu.cn/search/?q={keyword}"
scripts/channels/jisilu/output-analysis.md
- Network accessline 15
| 参数 | 默认值 | 含义与实现范围 | | --- | --- | --- | | `query` | 必填 | 编码为 `https://app.jisilu.cn/search/` 的 `q` | - Network accessline 16
| --- | --- | --- | | `query` | 必填 | 编码为 `https://app.jisilu.cn/search/` 的 `q` | | `max_results` / `--max-results` | `None` | 解析后本地切片;独立脚本传 `0` 返回空数组 | - Network accessline 17
| `query` | 必填 | 编码为 `https://app.jisilu.cn/search/` 的 `q` | - Network accessline 28
官方来源与核实范围(2026-10-25):[集思录用户指引与常见问题](https://app.jisilu.cn/question/420922)、源码使用的官方搜索入口 `https://app.jisilu.cn/search/`。联网检索未找到官方搜索条数承诺,本次未调用搜索入口重新测试。 - Network accessline 30
`jisilu_no_api.py` 通过 `https://app.jisilu.cn/search/?q=...` 读取网页 HTML,继承 `no_api/base_engine.py`。当前解析对象为 `div.search-result` 与 class 包含 row 的表格 `tr`,偏向名称和表格说明的结构;脚本没有调用金融数据 JSON 接口。
scripts/channels/kimi/README.md
- Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
# 默认 https://api.moonshot.cn/v1 - Network accessline 25
API Key 在 [Kimi 开放平台](https://platform.kimi.com) 创建。 - Network accessline 53
| `--end` | 时间窗口终点 | - | | `--api-key` | API Key(优先于环境变量) | - | | `--base-url` | 接口根地址 | https://api.moonshot.cn/v1 | - Network accessline 54
| `--api-key` | API Key(优先于环境变量) | - | | `--base-url` | 接口根地址 | https://api.moonshot.cn/v1 | | `--timeout` | 服务端超时秒数,1-60 | 30 | - Network accessline 55
| `--base-url` | 接口根地址 | https://api.moonshot.cn/v1 | - Network accessline 77
- [联网搜索指南](https://platform.kimi.com/docs/guide/use-web-search) - Network accessline 78
- [独立搜索实践](https://platform.kimi.com/docs/guide/best-practices-for-web-search) - Network accessline 79
- [搜索计费](https://platform.kimi.com/docs/pricing/websearch)
scripts/channels/kimi/examples/search-result.json
- Network accessline 7
{ "title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 8
"title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "body": "The fashion and textiles sector relies heavily on synthetic fib - Network accessline 9
"href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 16
{ "title": "Sustainable Clothing Manufacturing: Best Practices for Eco ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 17
"title": "Sustainable Clothing Manufacturing: Best Practices for Eco ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", "body": "To achieve sustainable garment manufacturing, minimi - Network accessline 18
"href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 25
{ "title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", - Network accessline 26
"title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", "body": "The Sustainable Apparel Coalition is the apparel, footwear and home text - Network accessline 27
"href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662",
scripts/channels/kimi/kimi_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_BASE_URL = "https://api.moonshot.cn/v1" - Network accessline 19
"""Kimi 独立搜索客户端,接口文档 https://platform.kimi.com/docs/guide/best-practices-for-web-search""" - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Network accessline 32
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 33
self.session = requests.Session() - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Network accessline 145
parser.add_argument("--end", help="时间窗口终点,年、年月或日期") parser.add_argument("--api-key", help="Kimi API Key") parser.add_argument("--base-url", help="接口根地址,默认 https://api.moonshot.cn/v1") - Network accessline 146
parser.add_argument("--api-key", help="Kimi API Key") parser.add_argument("--base-url", help="接口根地址,默认 https://api.moonshot.cn/v1") parser.add_argument("--timeout", type=int, default=30, help="服务端超时秒数,1-60") - Network accessline 147
parser.add_argument("--base-url", help="接口根地址,默认 https://api.moonshot.cn/v1") - Access to secretsline 153
[Credential-related source omitted]
scripts/channels/kimi/output-analysis.md
- Network accessline 37
核查日期:2026-10-25。官方来源:[Web Search 最佳实践](https://platform.kimi.com/docs/guide/best-practices-for-web-search)。以下针对独立搜索 API。
scripts/channels/metaso/README.md
- Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 114
## 1. 标题 **链接**: https://example.com - Network accessline 115
**链接**: https://example.com - Network accessline 132
"position": 1, "title": "标题", "link": "https://example.com", - Network accessline 133
"title": "标题", "link": "https://example.com", "score": "high", - Network accessline 134
"link": "https://example.com", - Access to secretsline 156
[Credential-related source omitted] - Access to secretsline 157
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Network accessline 171
访问秘塔搜索官网获取 API Key:https://metaso.cn
scripts/channels/metaso/examples/search-result.json
- Network accessline 8
"position": 1, "title": "Threading the needle: Weaving the Sustainable Development Goals into the textile, retail and apparel industry", "link": "https://kpmg.com/cn/en/home/insights/2018/12/threading-the-needle-key-highlights.h - Network accessline 9
"title": "Threading the needle: Weaving the Sustainable Development Goals into the textile, retail and apparel industry", "link": "https://kpmg.com/cn/en/home/insights/2018/12/threading-the-needle-key-highlights.html", "score": - Network accessline 10
"link": "https://kpmg.com/cn/en/home/insights/2018/12/threading-the-needle-key-highlights.html", - Network accessline 20
"position": 2, "title": "Navigating the Future – Sustainable Fashion Sourcing Trends in the Textile and Apparel Industry", "link": "http://www.lerockepamort.org/2023/11/12/", - Network accessline 21
"title": "Navigating the Future – Sustainable Fashion Sourcing Trends in the Textile and Apparel Industry", "link": "http://www.lerockepamort.org/2023/11/12/", "score": "high", - Network accessline 22
"link": "http://www.lerockepamort.org/2023/11/12/", - Network accessline 30
"position": 3, "title": "Threading the Needle: Weaving the Sustainable Development Goals into the Textile, Retail and Apparel Industry", "link": "https://apparelinsider.com/new-apparel-sector-guide-launched-on-sdgs/", - Network accessline 31
"title": "Threading the Needle: Weaving the Sustainable Development Goals into the Textile, Retail and Apparel Industry", "link": "https://apparelinsider.com/new-apparel-sector-guide-launched-on-sdgs/", "score": "high", - Network accessline 32
"link": "https://apparelinsider.com/new-apparel-sector-guide-launched-on-sdgs/",
scripts/channels/metaso/metaso_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 10
[Credential-related source omitted] - Network accessline 13
import http.client - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Network accessline 111
for attempt in range(max_retries): conn = http.client.HTTPSConnection(self.API_HOST) - Network accessline 112
conn = http.client.HTTPSConnection(self.API_HOST) - Network accessline 128
data = json.loads(raw_data) raise Exception(f"API 请求失败: {response.status} - {data}") except (http.client.HTTPException, ConnectionError) as e: - Network accessline 129
raise Exception(f"API 请求失败: {response.status} - {data}") except (http.client.HTTPException, ConnectionError) as e: last_exception = e - Network accessline 130
except (http.client.HTTPException, ConnectionError) as e:
scripts/channels/metaso/output-analysis.md
- Network accessline 37
核查日期:2026-10-25。官方核查入口:[搜索 API Playground](https://metaso.cn/search-api/playground);本次无法读取官方参数说明,以下默认值来自当前源码,官方单次数量上限未核实。
scripts/channels/mojeek/mojeek_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 23
ENGINE_NAME = "mojeek" ENGINE_DISPLAY_NAME = "Mojeek 搜索" SEARCH_URL = "https://www.mojeek.com/search?q={keyword}" - Network accessline 24
ENGINE_DISPLAY_NAME = "Mojeek 搜索" SEARCH_URL = "https://www.mojeek.com/search?q={keyword}" REQUIRES_PROXY = False - Network accessline 25
SEARCH_URL = "https://www.mojeek.com/search?q={keyword}" - Network accessline 28
def __init__(self, proxy=None): self.proxy = proxy self.session = requests.Session() - Network accessline 29
self.proxy = proxy self.session = requests.Session() self.session.headers.update({ - Network accessline 30
self.session = requests.Session()
scripts/channels/mojeek/output-analysis.md
- Network accessline 28
官方来源(2026-10-25):[Mojeek 网页搜索技巧](https://www.mojeek.com/support/search/tips.html),已读取正文;[网页偏好设置](https://www2.mojeek.com/preferences),官方页面检索说明偏好通过 Cookie 或生成的 URL 保存。容量结论采用网页帮助中的设置范围。 - Network accessline 30
`mojeek_no_api.py` 使用 requests 请求 `https://www.mojeek.com/search?q=...`,通过 lxml 解析网页 HTML。该类独立实现请求和解析,没有继承 `base_engine.py`,也没有使用 `web_search.result()`。解析范围为 `ul.results-standard` 下的 `li`。
scripts/channels/no_api/__init__.py
- Executable scriptline 1
Executable file
scripts/channels/no_api/base_engine.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 36
self.proxy = proxy or os.getenv("NO_API_KEY_PROXY") self.session = requests.Session() - Network accessline 37
self.session = requests.Session()
scripts/channels/no_api/request_state.py
- Executable scriptline 1
Executable file
scripts/channels/no_api/web_search.py
scripts/channels/ollama_search/README.md
- Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 17
# 默认 https://ollama.com/api/web_search - Network accessline 21
API Key 在 [Ollama Keys](https://ollama.com/settings/keys) 创建。 - Network accessline 38
| `-m, --max-results` | 返回数量,1-10 | 5 | | `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://ollama.com/api/web_search | - Network accessline 39
| `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://ollama.com/api/web_search | | `--timeout` | 请求超时秒数 | 30 | - Network accessline 40
| `--endpoint` | 接口地址 | https://ollama.com/api/web_search | - Network accessline 56
- [Web Search](https://docs.ollama.com/capabilities/web-search) - Network accessline 57
- [官方 Python 示例](https://github.com/ollama/ollama-python/blob/main/examples/web-search.py) - Network accessline 58
- [MCP 示例](https://github.com/ollama/ollama-python/blob/main/examples/web-search-mcp.py)
scripts/channels/ollama_search/examples/search-result.json
- Network accessline 7
{ "title": "Textiles Strategy - Environment - European Commission", "href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", - Network accessline 8
"title": "Textiles Strategy - Environment - European Commission", "href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", "body": "Textiles Strategy - Environment - European Commission\n\n# Sustainable and Circ - Network accessline 9
"href": "https://environment.ec.europa.eu/strategy/textiles-strategy_en", - Network accessline 13
{ "title": "A comprehensive review of circular economy research in the textile and clothing industry - ScienceDirect", "href": "https://www.sciencedirect.com/science/article/pii/S0959652624006991", - Network accessline 14
"title": "A comprehensive review of circular economy research in the textile and clothing industry - ScienceDirect", "href": "https://www.sciencedirect.com/science/article/pii/S0959652624006991", "body": "A comprehensive review - Network accessline 15
"href": "https://www.sciencedirect.com/science/article/pii/S0959652624006991", - Network accessline 19
{ "title": "Sustainability and Circularity in the Textile Value Chain", "href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content", - Network accessline 20
"title": "Sustainability and Circularity in the Textile Value Chain", "href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content", "body": "Sustainability and Circularity in the Textil - Network accessline 21
"href": "https://wedocs.unep.org/rest/api/core/bitstreams/c2f77b11-e92c-4428-a8bf-1a63c9e5ad45/content",
scripts/channels/ollama_search/ollama_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_ENDPOINT = "https://ollama.com/api/web_search" - Network accessline 16
"""Ollama Web Search 客户端,接口文档 https://docs.ollama.com/capabilities/web-search""" - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 30
self.session = requests.Session() - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Network accessline 102
parser.add_argument("-m", "--max-results", type=int, default=None, help="结果数量,1-10,默认不限") parser.add_argument("--api-key", help="Ollama API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://ollama.com/api/web_search") - Network accessline 103
parser.add_argument("--api-key", help="Ollama API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://ollama.com/api/web_search") parser.add_argument("--timeout", type=int, default=30, help="请求超时秒数") - Network accessline 104
parser.add_argument("--endpoint", help="接口地址,默认 https://ollama.com/api/web_search") - Access to secretsline 110
[Credential-related source omitted]
scripts/channels/ollama_search/output-analysis.md
- Network accessline 34
核查日期:2026-10-25。官方来源:[Web Search](https://docs.ollama.com/capabilities/web-search)。 - Network accessline 39
| `max_results` | 官方默认 5、最高 10;模块默认 `None` 时实际请求 10,显式值限制到 1—10 | | `timeout` | 模块 HTTP 超时,默认 30 秒 | | `endpoint` | 模块默认 `https://ollama.com/api/web_search`,环境或构造参数可覆盖 | - Network accessline 41
| `endpoint` | 模块默认 `https://ollama.com/api/web_search`,环境或构造参数可覆盖 |
scripts/channels/parallel_search/README.md
- Network accessline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 18
# 默认 https://api.parallel.ai/v1/search - Network accessline 24
API Key 在 [Parallel Platform](https://platform.parallel.ai) 创建。欧盟节点 `https://eu.parallel.ai` 只接受 `basic` 模式。 - Network accessline 57
| `--after-date` | 发布日期下限,`YYYY-MM-DD` | - | | `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.parallel.ai/v1/search | - Network accessline 58
| `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.parallel.ai/v1/search | | `--timeout` | 请求超时秒数 | 30 | - Network accessline 59
| `--endpoint` | 接口地址 | https://api.parallel.ai/v1/search | - Network accessline 84
- [Search API Quickstart](https://docs.parallel.ai/search/search-quickstart) - Network accessline 85
- [API Reference](https://docs.parallel.ai/api-reference/search/search) - Network accessline 86
- [Rate Limits](https://docs.parallel.ai/getting-started/rate-limits)
scripts/channels/parallel_search/examples/search-result.json
- Network accessline 7
{ "title": "Fashion’s Supply Chain Challenge", "href": "https://unfccc.int/sites/default/files/resource/Fashion%2520supply%2520chain%2520challenge_white%2520paper%25202025.pdf", - Network accessline 8
"title": "Fashion’s Supply Chain Challenge", "href": "https://unfccc.int/sites/default/files/resource/Fashion%2520supply%2520chain%2520challenge_white%2520paper%25202025.pdf", "body": "# **Fashion’s Supply Chain Challenge**\n\n# - Network accessline 9
"href": "https://unfccc.int/sites/default/files/resource/Fashion%2520supply%2520chain%2520challenge_white%2520paper%25202025.pdf", - Network accessline 17
{ "title": "Textile Recycling: Closing the Loop on a Greener Apparel Industry", "href": "https://www.usitc.gov/sites/default/files/publications/332/executive_briefings/ebot_howlett_textile_recycling_closing_the_loop.pdf", - Network accessline 18
"title": "Textile Recycling: Closing the Loop on a Greener Apparel Industry", "href": "https://www.usitc.gov/sites/default/files/publications/332/executive_briefings/ebot_howlett_textile_recycling_closing_the_loop.pdf", "body": - Network accessline 19
"href": "https://www.usitc.gov/sites/default/files/publications/332/executive_briefings/ebot_howlett_textile_recycling_closing_the_loop.pdf", - Network accessline 27
{ "title": "Gap Inc. - Apparel Industry Leaders Launch Sustainable Apparel Coalition", "href": "https://investors.gapinc.com/press-releases/news-details/2011/Apparel-Industry-Leaders-Launch-Sustainable-Apparel-Coalition/default. - Network accessline 28
"title": "Gap Inc. - Apparel Industry Leaders Launch Sustainable Apparel Coalition", "href": "https://investors.gapinc.com/press-releases/news-details/2011/Apparel-Industry-Leaders-Launch-Sustainable-Apparel-Coalition/default.aspx", - Network accessline 29
"href": "https://investors.gapinc.com/press-releases/news-details/2011/Apparel-Industry-Leaders-Launch-Sustainable-Apparel-Coalition/default.aspx", - Network accessline 30
"body": "**_Coalition to set Common Metrics and Standards to_** **_Improve Apparel Sustainability_**\n\nVENTURA, CA – March 1, 2011 – A group of leading apparel and footwear brands, retailers, manufacturers, \nEvents](https://investors.gapi
scripts/channels/parallel_search/output-analysis.md
- Network accessline 37
核查日期:2026-10-25。官方来源:[Search API](https://docs.parallel.ai/api-reference/search/search)。
scripts/channels/parallel_search/parallel_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_ENDPOINT = "https://api.parallel.ai/v1/search" - Network accessline 17
"""Parallel Search 客户端,接口文档 https://docs.parallel.ai/api-reference/search/search""" - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 29
self.session = requests.Session() - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Network accessline 152
parser.add_argument("--after-date", help="只保留该日期之后发布的结果,格式 YYYY-MM-DD") parser.add_argument("--api-key", help="Parallel API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.parallel.ai/v1/search") - Network accessline 153
parser.add_argument("--api-key", help="Parallel API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.parallel.ai/v1/search") parser.add_argument("--timeout", type=int, default=30, help="请求超时秒数") - Network accessline 154
parser.add_argument("--endpoint", help="接口地址,默认 https://api.parallel.ai/v1/search") - Access to secretsline 160
[Credential-related source omitted]
scripts/channels/quark/README.md
- Network accessline 6
python scripts/channels/quark/quark_no_api.py "Python documentation" -m 5 --json python scripts/channels/quark/quark_no_api.py "北京大学" --page 2 --timeout 20 --json python scripts/channels/quark/quark_no_api.py "Python documentation" --proxy - Network accessline 8
python scripts/channels/quark/quark_no_api.py "Python documentation" --proxy http://127.0.0.1:7890 --json - Network accessline 27
端点为 `https://quark.sm.cn/s`,参数为 `q`、`layout=html` 和 `page`。结果来自 `type="application/json"`、`id="s-data-*"`、`data-used-by="hydrate"` 的脚本元素;卡片类别为 `extraData.sc`,卡片内容为 `data.initialData`。
scripts/channels/quark/examples/search-result.json
- Network accessline 7
{ "title": "Sustainability in the Textile and Apparel Industries-中国科学院知识服务平台", "url": "https://www.las.ac.cn/front/ebook/detail?id=356e119c9ca65d7f36886be613126c15", - Network accessline 8
"title": "Sustainability in the Textile and Apparel Industries-中国科学院知识服务平台", "url": "https://www.las.ac.cn/front/ebook/detail?id=356e119c9ca65d7f36886be613126c15", "content": "主题词: Geography,Economic Geography,Sustainable Develo - Network accessline 9
"url": "https://www.las.ac.cn/front/ebook/detail?id=356e119c9ca65d7f36886be613126c15", - Network accessline 21
{ "title": "Towards Sustainable Textile and Apparel Industry: Exploring the Role of Business Intelligence Systems in the Era of Industry 4.0-AMiner", "url": "https://www.aminer.cn/pub/5ea014699fced0a24ba02a5d/towards-sustainable - Network accessline 22
"title": "Towards Sustainable Textile and Apparel Industry: Exploring the Role of Business Intelligence Systems in the Era of Industry 4.0-AMiner", "url": "https://www.aminer.cn/pub/5ea014699fced0a24ba02a5d/towards-sustainable-textile - Network accessline 23
[Credential-related source omitted] - Network accessline 35
{ "title": "Contributions of social manufacturing to sustainable apparel industry-百度学术", "url": "https://xueshu.baidu.com/usercenter/paper/show?paperid=854f20c1c992b7e1f018b782c0bf08ee", - Network accessline 36
"title": "Contributions of social manufacturing to sustainable apparel industry-百度学术", "url": "https://xueshu.baidu.com/usercenter/paper/show?paperid=854f20c1c992b7e1f018b782c0bf08ee", "content": "the current fast-changing fashi - Network accessline 37
"url": "https://xueshu.baidu.com/usercenter/paper/show?paperid=854f20c1c992b7e1f018b782c0bf08ee",
scripts/channels/quark/output-analysis.md
- Network accessline 29
官方来源(2026-10-25):[夸克帮助:快速开始](https://www.quark.cn/documents/help/get-started),已读取正文,确认通过搜索框或地址栏输入查询打开搜索结果,未发现条数限制说明。 - Network accessline 31
`quark_no_api.py` 访问 `https://quark.sm.cn/s` 的 HTML,读取 `script[type="application/json"]` 且 id 以 `s-data-` 开头、`data-used-by="hydrate"` 的内嵌 JSON。卡片类别来自 `extraData.sc`,数据来自 `data.initialData`。来源属于网页内嵌匿名 JSON,没有单独调用搜索 JSON API。函数返回对象数组,脚本 JSON
scripts/channels/quark/quark_no_api.py
- Executable scriptline 1
Executable file - Network accessline 101
raise ValueError('query 不能为空') with create_session(proxy) as session: response = request(session, 'GET', 'https://quark.sm.cn/s', - Network accessline 102
with create_session(proxy) as session: response = request(session, 'GET', 'https://quark.sm.cn/s', timeout=deadline.remaining(), - Network accessline 103
response = request(session, 'GET', 'https://quark.sm.cn/s',
scripts/channels/qwant/output-analysis.md
- Network accessline 28
官方来源与核实范围(2026-10-25):[Qwant 搜索帮助](https://help.qwant.com/en/docs/qwant-search/searching/how-to-search-with-qwant/)、[地区设置帮助](https://help.qwant.com/hc/en-us/articles/49002753227153-Set-My-Region-for-Local-Results)。已检索官方内容,搜索帮助正文抓取返回 HTTP 40 - Network accessline 30
`qwant_no_api.py` 请求 `https://www.qwant.com/?q=...` 的网页 HTML,通过共享 `base_engine.py` 交给 lxml 解析。它没有请求 Qwant 的匿名 JSON 搜索接口,也不运行页面 JavaScript。容器为 class 包含 result 的 `div` 或 class 包含 result-web 的 `article`。
scripts/channels/qwant/qwant_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
ENGINE_NAME = "qwant" ENGINE_DISPLAY_NAME = "Qwant" SEARCH_URL = "https://www.qwant.com/?q={keyword}" - Network accessline 22
ENGINE_DISPLAY_NAME = "Qwant" SEARCH_URL = "https://www.qwant.com/?q={keyword}" REQUIRES_PROXY = True - Network accessline 23
SEARCH_URL = "https://www.qwant.com/?q={keyword}"
scripts/channels/rss_search/README.md
- Network accessline 26
# 搜索单个 RSS 订阅源 python scripts/channels/rss_search/rss_search.py "AI" --feed http://example.com/feed.xml --limit 10 - Network accessline 27
python scripts/channels/rss_search/rss_search.py "AI" --feed http://example.com/feed.xml --limit 10 - Network accessline 29
# 获取最新条目(不使用关键词) python scripts/channels/rss_search/rss_search.py --feed http://example.com/feed.xml --limit 5 - Network accessline 30
python scripts/channels/rss_search/rss_search.py --feed http://example.com/feed.xml --limit 5 - Network accessline 39
# 保存结果到文件 python scripts/channels/rss_search/rss_search.py "机器学习" --feed http://example.com/feed.xml --json --pretty -o results.json - Network accessline 40
python scripts/channels/rss_search/rss_search.py "机器学习" --feed http://example.com/feed.xml --json --pretty -o results.json - Network accessline 46
# 1. 解析并保存RSS结果到文件夹(首次或更新缓存) python scripts/channels/rss_search/rss_search.py "AI" --feed http://example.com/feed.xml --parse-folder ./parsed_results - Network accessline 47
python scripts/channels/rss_search/rss_search.py "AI" --feed http://example.com/feed.xml --parse-folder ./parsed_results - Network accessline 52
# 3. 仅解析保存,不搜索 python scripts/channels/rss_search/rss_search.py --feed http://example.com/feed.xml --parse-folder ./parsed_results --parse-only - Network accessline 53
python scripts/channels/rss_search/rss_search.py --feed http://example.com/feed.xml --parse-folder ./parsed_results --parse-only - Network accessline 129
# AI News http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml - Network accessline 130
http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml - Network accessline 132
# Tech News https://example.com/tech/rss.xml - Network accessline 133
https://example.com/tech/rss.xml - Network accessline 162
- 微信公众号(通过 Kindle4RSS):`http://feedmaker.kindle4rss.com/feeds/`
scripts/channels/rss_search/examples/search-result.json
- Network accessline 2
{ "title": "Lime bike jousts? Why youth culture is embracing the medieval era", "link": "https://www.theguardian.com/global/2026/oct/24/lime-bike-jousts-why-youth-culture-is-embracing-the-medieval-era", - Network accessline 3
"title": "Lime bike jousts? Why youth culture is embracing the medieval era", "link": "https://www.theguardian.com/global/2026/oct/24/lime-bike-jousts-why-youth-culture-is-embracing-the-medieval-era", "weixin_link": "https://www.the - Network accessline 4
"link": "https://www.theguardian.com/global/2026/oct/24/lime-bike-jousts-why-youth-culture-is-embracing-the-medieval-era", - Network accessline 5
"weixin_link": "https://www.theguardian.com/global/2026/oct/24/lime-bike-jousts-why-youth-culture-is-embracing-the-medieval-era", - Network accessline 6
"published": "Sat, 24 Oct 2026 11:00:31 GMT", "author": "Ellie Violet Bramley", "summary": "<p>From chainmail-wearing pop stars to high-fashion catwalks, the spirit of the middle ages is erupting into the zeitgeist</p><p>Medieval kn - Network accessline 7
"author": "Ellie Violet Bramley", "summary": "<p>From chainmail-wearing pop stars to high-fashion catwalks, the spirit of the middle ages is erupting into the zeitgeist</p><p>Medieval knights used to joust on warhorses with wooden lance - Network accessline 8
"summary": "<p>From chainmail-wearing pop stars to high-fashion catwalks, the spirit of the middle ages is erupting into the zeitgeist</p><p>Medieval knights used to joust on warhorses with wooden lances, but this week in east London, two m - Network accessline 10
{ "term": "Culture", "scheme": "https://www.theguardian.com/culture/culture", - Network accessline 11
"term": "Culture", "scheme": "https://www.theguardian.com/culture/culture", "label": null - Network accessline 12
"scheme": "https://www.theguardian.com/culture/culture", - Network accessline 15
{ "term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 16
"term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", "label": null - Network accessline 17
"scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 20
{ "term": "Frieze art fair", "scheme": "https://www.theguardian.com/artanddesign/friezeartfair", - Network accessline 21
"term": "Frieze art fair", "scheme": "https://www.theguardian.com/artanddesign/friezeartfair", "label": null - Network accessline 22
"scheme": "https://www.theguardian.com/artanddesign/friezeartfair", - Network accessline 25
{ "term": "UK news", "scheme": "https://www.theguardian.com/uk/uk", - Network accessline 26
"term": "UK news", "scheme": "https://www.theguardian.com/uk/uk", "label": null - Network accessline 27
"scheme": "https://www.theguardian.com/uk/uk", - Network accessline 30
{ "term": "England", "scheme": "https://www.theguardian.com/uk-news/england", - Network accessline 31
"term": "England", "scheme": "https://www.theguardian.com/uk-news/england", "label": null - Network accessline 32
"scheme": "https://www.theguardian.com/uk-news/england", - Network accessline 35
{ "term": "London", "scheme": "https://www.theguardian.com/uk/london", - Network accessline 36
"term": "London", "scheme": "https://www.theguardian.com/uk/london", "label": null - Network accessline 37
"scheme": "https://www.theguardian.com/uk/london", - Network accessline 40
{ "term": "Troye Sivan", "scheme": "https://www.theguardian.com/music/troye-sivan", - Network accessline 41
"term": "Troye Sivan", "scheme": "https://www.theguardian.com/music/troye-sivan", "label": null - Network accessline 42
"scheme": "https://www.theguardian.com/music/troye-sivan", - Network accessline 45
{ "term": "Andrew Garfield", "scheme": "https://www.theguardian.com/film/andrew-garfield", - Network accessline 46
"term": "Andrew Garfield", "scheme": "https://www.theguardian.com/film/andrew-garfield", "label": null - Network accessline 47
"scheme": "https://www.theguardian.com/film/andrew-garfield", - Network accessline 50
{ "term": "Heritage", "scheme": "https://www.theguardian.com/culture/heritage", - Network accessline 51
"term": "Heritage", "scheme": "https://www.theguardian.com/culture/heritage", "label": null - Network accessline 52
"scheme": "https://www.theguardian.com/culture/heritage", - Network accessline 55
{ "term": "Art and design", "scheme": "https://www.theguardian.com/artanddesign/artanddesign", - Network accessline 56
"term": "Art and design", "scheme": "https://www.theguardian.com/artanddesign/artanddesign", "label": null - Network accessline 57
"scheme": "https://www.theguardian.com/artanddesign/artanddesign", - Network accessline 60
{ "term": "Film", "scheme": "https://www.theguardian.com/film/film", - Network accessline 61
"term": "Film", "scheme": "https://www.theguardian.com/film/film", "label": null - Network accessline 62
"scheme": "https://www.theguardian.com/film/film", - Network accessline 65
{ "term": "Music", "scheme": "https://www.theguardian.com/music/music", - Network accessline 66
"term": "Music", "scheme": "https://www.theguardian.com/music/music", "label": null - Network accessline 67
"scheme": "https://www.theguardian.com/music/music", - Network accessline 70
{ "term": "Art", "scheme": "https://www.theguardian.com/artanddesign/art", - Network accessline 71
"term": "Art", "scheme": "https://www.theguardian.com/artanddesign/art", "label": null - Network accessline 72
"scheme": "https://www.theguardian.com/artanddesign/art", - Network accessline 75
], "feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" - Network accessline 76
"feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" }, - Network accessline 77
"feed_url": "https://www.theguardian.com/fashion/rss" - Network accessline 79
{ "title": "‘A form of anti-status status’ – how much would you pay for a plain tote bag?", "link": "https://www.theguardian.com/fashion/2026/oct/22/how-the-canvas-tote-bag-went-from-supermarket-staple-to-status-symbol", - Network accessline 80
"title": "‘A form of anti-status status’ – how much would you pay for a plain tote bag?", "link": "https://www.theguardian.com/fashion/2026/oct/22/how-the-canvas-tote-bag-went-from-supermarket-staple-to-status-symbol", "weixin_link" - Network accessline 81
"link": "https://www.theguardian.com/fashion/2026/oct/22/how-the-canvas-tote-bag-went-from-supermarket-staple-to-status-symbol", - Network accessline 82
"weixin_link": "https://www.theguardian.com/fashion/2026/oct/22/how-the-canvas-tote-bag-went-from-supermarket-staple-to-status-symbol", - Network accessline 83
"published": "Fri, 23 Oct 2026 06:00:01 GMT", "author": "Ellie Violet Bramley", "summary": "<p>The ubiquitous carrier has been given a four-figure makeover. But why has an everyday bag associated with running errands and US supermar - Network accessline 84
"author": "Ellie Violet Bramley", "summary": "<p>The ubiquitous carrier has been given a four-figure makeover. But why has an everyday bag associated with running errands and US supermarkets become so aspirational?</p><p><strong>• </str - Network accessline 85
"summary": "<p>The ubiquitous carrier has been given a four-figure makeover. But why has an everyday bag associated with running errands and US supermarkets become so aspirational?</p><p><strong>• </strong><a href=\"https://www.theguardian. - Network accessline 87
{ "term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 88
"term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", "label": null - Network accessline 89
"scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 92
{ "term": "Life and style", "scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", - Network accessline 93
"term": "Life and style", "scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", "label": null - Network accessline 94
"scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", - Network accessline 97
{ "term": "Accessories", "scheme": "https://www.theguardian.com/fashion/accessories", - Network accessline 98
"term": "Accessories", "scheme": "https://www.theguardian.com/fashion/accessories", "label": null - Network accessline 99
"scheme": "https://www.theguardian.com/fashion/accessories", - Network accessline 102
], "feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" - Network accessline 103
"feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" }, - Network accessline 104
"feed_url": "https://www.theguardian.com/fashion/rss" - Network accessline 106
{ "title": "‘I wanted to create the female version of a man’s suit’: how Roland Mouret’s Galaxy dress took over the world", "link": "https://www.theguardian.com/fashion/2026/oct/22/i-wanted-to-create-the-female-version-of-a-mans-sui - Network accessline 107
"title": "‘I wanted to create the female version of a man’s suit’: how Roland Mouret’s Galaxy dress took over the world", "link": "https://www.theguardian.com/fashion/2026/oct/22/i-wanted-to-create-the-female-version-of-a-mans-suit-how- - Network accessline 108
"link": "https://www.theguardian.com/fashion/2026/oct/22/i-wanted-to-create-the-female-version-of-a-mans-suit-how-roland-mourets-galaxy-dress-took-over-the-world", - Network accessline 109
"weixin_link": "https://www.theguardian.com/fashion/2026/oct/22/i-wanted-to-create-the-female-version-of-a-mans-suit-how-roland-mourets-galaxy-dress-took-over-the-world", - Network accessline 110
"published": "Thu, 22 Oct 2026 06:00:08 GMT", "author": "Mark C. O'Flaherty", "summary": "<p>One the most famous dresses of this century, it was worn by royalty and A-list celebrities in the noughties. Its latest fans are Maga women - Network accessline 111
"author": "Mark C. O'Flaherty", "summary": "<p>One the most famous dresses of this century, it was worn by royalty and A-list celebrities in the noughties. Its latest fans are Maga women. Here, the designer, and former mentor to Victori - Network accessline 112
"summary": "<p>One the most famous dresses of this century, it was worn by royalty and A-list celebrities in the noughties. Its latest fans are Maga women. Here, the designer, and former mentor to Victoria Beckham, reveals the story behind - Network accessline 114
{ "term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 115
"term": "Fashion", "scheme": "https://www.theguardian.com/fashion/fashion", "label": null - Network accessline 116
"scheme": "https://www.theguardian.com/fashion/fashion", - Network accessline 119
{ "term": "Celebrity", "scheme": "https://www.theguardian.com/lifeandstyle/celebrity", - Network accessline 120
"term": "Celebrity", "scheme": "https://www.theguardian.com/lifeandstyle/celebrity", "label": null - Network accessline 121
"scheme": "https://www.theguardian.com/lifeandstyle/celebrity", - Network accessline 124
{ "term": "Life and style", "scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", - Network accessline 125
"term": "Life and style", "scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", "label": null - Network accessline 126
"scheme": "https://www.theguardian.com/lifeandstyle/lifeandstyle", - Network accessline 129
{ "term": "Victoria Beckham", "scheme": "https://www.theguardian.com/fashion/victoria-beckham", - Network accessline 130
"term": "Victoria Beckham", "scheme": "https://www.theguardian.com/fashion/victoria-beckham", "label": null - Network accessline 131
"scheme": "https://www.theguardian.com/fashion/victoria-beckham", - Network accessline 134
], "feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" - Network accessline 135
"feed_title": "Fashion | The Guardian", "feed_url": "https://www.theguardian.com/fashion/rss" } - Network accessline 136
"feed_url": "https://www.theguardian.com/fashion/rss"
scripts/channels/rss_search/output-analysis.md
- Network accessline 33
官方及库来源(资料整理日期:2026-10-25):[RSS 2.0 规范:item 数量](https://www.rssboard.org/rss-specification)、[feedparser 官方文档](https://feedparser.readthedocs.io/en/latest/)。这些来源没有为各发布者的订阅源承诺统一搜索返回数量。 - Network accessline 63
以真实 Guardian Fashion feed `https://www.theguardian.com/fashion/rss` 查询 `fashion`,成功保存 3 条至 `.work/output-analysis/rss.json`,确认 summary 含 HTML、tags 为对象数组,published 为带 GMT 的日期字符串,weixin_link 实际仍为 Guardian 地址。未穷举各 feed 的扩展字段。实现依据 `search_entri
scripts/channels/rss_search/rss_feeds.txt
- Network accessline 5
# 微信公众号(通过 Kindle4RSS) 新智元 http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml - Network accessline 6
新智元 http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml - Network accessline 7
腾讯科技 http://feedmaker.kindle4rss.com/feeds/qqtech.weixin.xml - Network accessline 8
罗辑思维 http://feedmaker.kindle4rss.com/feeds/luojisw.weixin.xml - Network accessline 9
笔记侠 http://feedmaker.kindle4rss.com/feeds/Notesman.weixin.xml - Network accessline 10
刘润 http://feedmaker.kindle4rss.com/feeds/runliu-pub.weixin.xml - Network accessline 12
# 微信公众号(通过 wechat2rss / bestblogs.dev) 网罗灯下黑 http://www.jintiankansha.me/rss/GEYTMOJYHF6DSYRRGVTGGMTCMYYGEMRSGBTGEOLBHBRDKYZVGRTDKMDCMIYGCZTCMQYWCYZWHEYQ==== - Network accessline 13
网罗灯下黑 http://www.jintiankansha.me/rss/GEYTMOJYHF6DSYRRGVTGGMTCMYYGEMRSGBTGEOLBHBRDKYZVGRTDKMDCMIYGCZTCMQYWCYZWHEYQ==== - Network accessline 14
数字生命卡兹克 https://wechat2rss.bestblogs.dev/feed/ff621c3e98d6ae6fceb3397e57441ffc6ea3c17f.xml - Network accessline 15
机器之心 https://wechat2rss.bestblogs.dev/feed/8d97af31b0de9e48da74558af128a4673d78c9a3.xml - Network accessline 16
夕小瑶科技说 https://wechat2rss.xlab.app/feed/a1cd365aa14ed7d64cabfc8aa086da40ecaba34d.xml - Network accessline 17
AI寒武纪 https://wechat2rss.bestblogs.dev/feed/5903009f48a5e4aa44d8ac941a54fe3aafc3e03c.xml - Network accessline 18
硅星人Pro https://wechat2rss.bestblogs.dev/feed/c62ceda9eed269d851802bdbc5f33c4fabbf7462.xml - Network accessline 19
极客公园 https://wechat2rss.xlab.app/feed/1a5aec98e71c707c8ca092bc2c255b9d4bac477d.xml - Network accessline 20
刘小排r https://wechat2rss.bestblogs.dev/feed/484d4199ae6c0b72ea01e7e0597a1f74933dfb62.xml - Network accessline 21
腾讯研究院 https://wechat2rss.xlab.app/feed/cab007f687d50714b1bd6387d8b2a0824b46b0a6.xml - Network accessline 22
腾讯技术工程 https://wechat2rss.xlab.app/feed/9685937b45fe9c7a526dbc32e4f24ba879a65b9a.xml - Network accessline 23
阿里云开发者 https://wechat2rss.xlab.app/feed/c74ed6db00cfbf16f2a048a165b4453f982681f0.xml - Network accessline 24
阿里技术 https://wechat2rss.xlab.app/feed/6e1f9b775f7a5841ac1a94310f0478b45a02ec01.xml - Network accessline 25
阿里巴巴中间件 https://wechat2rss.xlab.app/feed/ede34e7a9aff5e93ad159ebfd27075710a963f54.xml - Network accessline 26
哔哩哔哩技术 https://wechat2rss.xlab.app/feed/434235d4815fdb8447ff3127fc053ceb8b3aada6.xml - Network accessline 27
爱奇艺技术产品团队 https://wechat2rss.xlab.app/feed/16a4ec12a83a52e1f6e941bce030a4d64ee26c47.xml - Network accessline 28
差评X.PIN https://wechat2rss.xlab.app/feed/8d839de8dd3290a1f1be7a94423cccb30c1b087d.xml - Network accessline 30
# GitHub 逛逛GitHub https://wechat2rss.bestblogs.dev/feed/38be32e5376d852c13d3383e4d7a757fd9a55ff6.xml - Network accessline 31
逛逛GitHub https://wechat2rss.bestblogs.dev/feed/38be32e5376d852c13d3383e4d7a757fd9a55ff6.xml - Network accessline 33
# 独立博客/网站 Latent.Space https://www.latent.space/feed - Network accessline 34
Latent.Space https://www.latent.space/feed - Network accessline 35
One Useful Thing https://www.oneusefulthing.org/feed - Network accessline 36
Owen的博客 https://www.owenyoung.com/atom.xml - Network accessline 37
阮一峰的网络日志 http://www.ruanyifeng.com/blog/atom.xml - Network accessline 38
小米信息部技术团队 https://xiaomi-info.github.io/atom - Network accessline 39
小众软件 https://feeds.appinn.com/appinns/ - Network accessline 40
少数派 https://rsshub.app/sspai/index - Network accessline 42
# AI 相关 AIGC开放社区 https://raw.githubusercontent.com/osnsyc/Wechat-Scholar/main/channels/gh_92a47dd34b3c.xml - Network accessline 43
AIGC开放社区 https://raw.githubusercontent.com/osnsyc/Wechat-Scholar/main/channels/gh_92a47dd34b3c.xml - Network accessline 44
量子位 https://raw.githubusercontent.com/osnsyc/Wechat-Scholar/main/channels/gh_114e76fd6e5d.xml - Network accessline 45
APPSO https://werss.anan.eu.org/2392024520.xml - Network accessline 46
BestBlogs.dev https://www.bestblogs.dev/feeds/rss - Network accessline 47
AI洞察日报 RSS Feed https://justlovemaki.github.io/CloudFlare-AI-Insight-Daily/rss.xml - Network accessline 48
AI排行榜官网 AIGCRank.cn https://aigcrank.cn/feed - Network accessline 50
# 技术团队 美团技术团队 https://tech.meituan.com/feed/ - Network accessline 51
美团技术团队 https://tech.meituan.com/feed/ - Network accessline 52
有赞技术团队 https://tech.youzan.com/rss/ - Network accessline 53
伴鱼技术团队 https://tech.ipalfish.com/blog/atom.xml - Network accessline 54
京东云技术团队 https://feed.cnblogs.com/blog/u/777127/rss/ - Network accessline 55
vivo互联网技术 https://feed.cnblogs.com/blog/u/498089/rss/ - Network accessline 56
蚂蚁金服技术团队 https://rss.csdn.net/weixin_44326589/rss/map?spm=1001.2014.3001.5494 - Network accessline 57
BLACK STACK 黑栈 https://kidsseeghosts.substack.com/feed - Network accessline 58
AIGC Weekly https://quaily.com/op7418/feed/atom - Network accessline 59
人都是产品经理 https://www.woshipm.com/feed
scripts/channels/rss_search/rss_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 16
DEFAULT_RSS_FEEDS = [ "http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml", - Network accessline 17
"http://feedmaker.kindle4rss.com/feeds/AI_era.weixin.xml", - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Network accessline 52
examples = ( "使用示例:\n" " python rss_search.py \"AI\" --feed http://example.com/feed.xml\n" - Network accessline 53
"使用示例:\n" " python rss_search.py \"AI\" --feed http://example.com/feed.xml\n" " python rss_search.py \"机器学习\" --limit 5 --json\n" - Network accessline 54
" python rss_search.py \"AI\" --feed http://example.com/feed.xml\n"
scripts/channels/serper/examples/search-result.json
- Network accessline 7
{ "title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 8
"title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "body": "The fashion and textiles sector relies heavily on synthetic fib - Network accessline 9
"href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 15
{ "title": "Sustainable Practices in the Apparel Industry", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 16
"title": "Sustainable Practices in the Apparel Industry", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", "body": "Apparel companies can improve sustainability by working with low - Network accessline 17
"href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 23
{ "title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", - Network accessline 24
"title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", "body": "The Sustainable Apparel Coalition is the apparel, footwear and home text - Network accessline 25
"href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662",
scripts/channels/serper/output-analysis.md
- Network accessline 36
核查日期:2026-10-25。官方核查入口:[Serper](https://serper.dev/);公开页面未给出本次可核实的 `num` 参数范围,官方单次上限未核实。
scripts/channels/serper/serper_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 6
申请 API Key: https://serper.dev/ - Access to secretsline 7
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Network accessline 27
ENGINE_NAME = "serper" ENGINE_DISPLAY_NAME = "Serper Google 搜索" API_ENDPOINT = "https://google.serper.dev/search" - Network accessline 28
[Credential-related source omitted] - Network accessline 29
API_ENDPOINT = "https://google.serper.dev/search" - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 43
self.session = requests.Session() - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Access to secretsline 208
[Credential-related source omitted]
scripts/channels/so360/examples/search-result.json
- Network accessline 7
{ "title": "Mergü Textile – Sustainable Apparel Production", "url": "https://mergu.com/", - Network accessline 8
"title": "Mergü Textile – Sustainable Apparel Production", "url": "https://mergu.com/", "content": "Product RangeContactMergü Textile provides high-quality woven apparel production for international brands seeking a reliable and - Network accessline 9
"url": "https://mergu.com/", - Network accessline 21
{ "title": "sustainable apparel textile industry - 360翻译", "url": "https://fanyi.so.com/?src=onebox", - Network accessline 22
"title": "sustainable apparel textile industry - 360翻译", "url": "https://fanyi.so.com/?src=onebox", "content": "", - Network accessline 23
"url": "https://fanyi.so.com/?src=onebox", - Network accessline 35
{ "title": "Siyatex – Sourcing Sustainable Textile, Apparel, Home Furnishing & Accessories Solutions", "url": "https://siyatex.com/", - Network accessline 36
"title": "Siyatex – Sourcing Sustainable Textile, Apparel, Home Furnishing & Accessories Solutions", "url": "https://siyatex.com/", "content": "Sourcing Sustainable Textile, Apparel, Home Furnishing & Accessories Solutions We ar - Network accessline 37
"url": "https://siyatex.com/",
scripts/channels/so360/output-analysis.md
- Network accessline 29
官方来源(2026-10-25):[360 搜索网页搜索帮助](https://www.so.com/help/help_2_6.html),已读取正文,未发现固定容量说明。 - Network accessline 31
`so360_no_api.py` 请求 `https://www.so.com/s` 的网页 HTML,使用相同 Session 两次访问后解析 `li.res-list`。本渠道使用 `no_api/web_search.py` 的请求、文档与结果工具,未继承旧 `base_engine.py`。函数返回对象数组;独立 `--json` 命令顶层为 `{results:array<object>}`,没有原生总命中数或分页数据。 - Network accessline 34
| --- | --- | --- | | `title` | 非空 string | 第一条 `h3/a` 的文本,归整空白 | | `url`、`href` | 相同的非空 string | 优先标题链接 `data-mdurl`,其次 `href`,相对地址基于 `https://www.so.com/` 补全 | - Network accessline 35
| `title` | 非空 string | 第一条 `h3/a` 的文本,归整空白 | | `url`、`href` | 相同的非空 string | 优先标题链接 `data-mdurl`,其次 `href`,相对地址基于 `https://www.so.com/` 补全 | | `content`、`body` | 相同的 string,可为 `""` | 摘要节点合并后归整空白 | - Network accessline 36
| `url`、`href` | 相同的非空 string | 优先标题链接 `data-mdurl`,其次 `href`,相对地址基于 `https://www.so.com/` 补全 | - Network accessline 46
证据来自脚本、共享网页工具和联合适配代码。`.work/output-analysis/no-api.json` 的真实查询 `sustainable apparel textile industry` 成功返回 3 条,首条标题为 Mergü Textile – Sustainable Apparel Production,地址为 `https://mergu.com/`,说明包含联系方式及生产介绍。实测确认了标准化字段和摘要内容,HTML 原页没有单独保存,具体链接属性选
scripts/channels/so360/so360_no_api.py
- Executable scriptline 1
Executable file - Network accessline 14
ENGINE_NAME = "so360" ENGINE_DISPLAY_NAME = "360 搜索" SEARCH_URL = "https://www.so.com/s?q={keyword}" - Network accessline 15
ENGINE_DISPLAY_NAME = "360 搜索" SEARCH_URL = "https://www.so.com/s?q={keyword}" REQUIRES_PROXY = False - Network accessline 16
SEARCH_URL = "https://www.so.com/s?q={keyword}" - Network accessline 28
if timelimit: params["adv_t"] = timelimit return "https://www.so.com/s?" + urlencode(params) - Network accessline 30
return "https://www.so.com/s?" + urlencode(params) - Network accessline 43
title = text(link) target = link.get("data-mdurl") or link.get("href") target = urljoin("https://www.so.com/", target) - Network accessline 44
target = link.get("data-mdurl") or link.get("href") target = urljoin("https://www.so.com/", target) parsed = urlsplit(target) - Network accessline 45
target = urljoin("https://www.so.com/", target)
scripts/channels/sogou/examples/search-result.json
- Network accessline 7
{ "title": "Building resilience of the green product supply chain in the apparel industry论文", "url": "https://www.researchgate.net/publication/384352279_Building_resilience_of_the_green_product_supply_chain_in_the_apparel_indust - Network accessline 8
"title": "Building resilience of the green product supply chain in the apparel industry论文", "url": "https://www.researchgate.net/publication/384352279_Building_resilience_of_the_green_product_supply_chain_in_the_apparel_industry", - Network accessline 9
"url": "https://www.researchgate.net/publication/384352279_Building_resilience_of_the_green_product_supply_chain_in_the_apparel_industry", - Network accessline 21
{ "title": "(PDF) Sustainable Textile Industry: An Overview", "url": "https://www.researchgate.net/publication/361829354_Sustainable_Textile_Industry_An_Overview", - Network accessline 22
"title": "(PDF) Sustainable Textile Industry: An Overview", "url": "https://www.researchgate.net/publication/361829354_Sustainable_Textile_Industry_An_Overview", "content": "concerns in the textile industry. T o achieve sustaina - Network accessline 23
"url": "https://www.researchgate.net/publication/361829354_Sustainable_Textile_Industry_An_Overview", - Network accessline 35
{ "title": "Advanced Technology in Apparel Manufacturing | Springer Nature Link", "url": "https://link.springer.com/chapter/10.1007/978-981-99-2142-3_7", - Network accessline 36
"title": "Advanced Technology in Apparel Manufacturing | Springer Nature Link", "url": "https://link.springer.com/chapter/10.1007/978-981-99-2142-3_7", "content": "Ahmad S, Miskon S, Alabdan R, Tlili I (2020) Towards sustainable - Network accessline 37
"url": "https://link.springer.com/chapter/10.1007/978-981-99-2142-3_7",
scripts/channels/sogou/output-analysis.md
- Network accessline 29
官方来源(2026-10-25):[搜狗高级搜索帮助](https://help.sogou.com/advanced.html?v=1),已读取正文并核对每页选项;[搜狗更多功能](https://www.sogou.com/docs/features.htm),官方检索内容说明可通过个性设置调整每页数量。 - Network accessline 31
`sogou_no_api.py` 读取 `https://www.sogou.com/web` 的 HTML,在 class 为 rb 或 vrwrap 的 `div` 中提取结果。使用 `web_search.py` 的网页工具;`base_engine.py` 的旧返回约定不决定本渠道字段。函数返回数组,`--json` 顶层为 `{results:array<object>}`,没有全站命中数。 - Network accessline 40
目标链接基于 `https://www.sogou.com/` 补全相对路径,检查 HTTP(S),按相同目标地址去重。标题为空、缺链接或协议不符的结果跳过。摘要类名包括 ft、attribute-centent、fz-mid、star-wiki、vr-info、str_info;嵌套匹配时保留外层,避免重复合并。摘要可以没有任何匹配节点,输出空字符串。
scripts/channels/sogou/sogou_no_api.py
- Executable scriptline 1
Executable file - Network accessline 14
ENGINE_NAME = "sogou" ENGINE_DISPLAY_NAME = "搜狗搜索" SEARCH_URL = "https://www.sogou.com/web?query={keyword}" - Network accessline 15
ENGINE_DISPLAY_NAME = "搜狗搜索" SEARCH_URL = "https://www.sogou.com/web?query={keyword}" REQUIRES_PROXY = False - Network accessline 16
SEARCH_URL = "https://www.sogou.com/web?query={keyword}" - Network accessline 29
if timelimit: params.update(s_from=self.TIME_FILTERS[timelimit], tsn=1) return "https://www.sogou.com/web?" + urlencode(params) - Network accessline 31
return "https://www.sogou.com/web?" + urlencode(params) - Network accessline 49
title = text(link) target = link.get("href") if urlsplit(urljoin("https://www.sogou.com/", target)).path == "/link": - Network accessline 50
target = link.get("href") if urlsplit(urljoin("https://www.sogou.com/", target)).path == "/link": targets = item.xpath(".//*[@data-url]/@data-url") - Network accessline 51
if urlsplit(urljoin("https://www.sogou.com/", target)).path == "/link": - Network accessline 55
if targets: target = targets[0] target = urljoin("https://www.sogou.com/", target) - Network accessline 56
target = targets[0] target = urljoin("https://www.sogou.com/", target) if not title or urlsplit(target).scheme not in ("http", "https") or target in seen: - Network accessline 57
target = urljoin("https://www.sogou.com/", target)
scripts/channels/startpage/output-analysis.md
- Network accessline 28
官方来源与核实范围(2026-10-25):[Startpage 搜索使用说明](https://support.startpage.com/hc/en-us/articles/4521418101524-How-to-use-Startpage-more-effectively)、[官方设置帮助目录](https://support.startpage.com/hc/en-us/sections/4481942717076-Settings)。已联网检索官方内容,使用说明正 - Network accessline 30
`startpage_no_api.py` 请求 `https://www.startpage.com/do/search?q=...` 的网页 HTML,继承 `no_api/base_engine.py`,通过 lxml 静态解析。结果容器选择 class 包含 result 的 `li` 与 class 包含 search-result 的 `div`;代码未使用匿名 JSON 接口,也没有执行浏览器脚本。
scripts/channels/startpage/startpage_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "startpage" ENGINE_DISPLAY_NAME = "Startpage" SEARCH_URL = "https://www.startpage.com/do/search?q={keyword}" - Network accessline 21
ENGINE_DISPLAY_NAME = "Startpage" SEARCH_URL = "https://www.startpage.com/do/search?q={keyword}" REQUIRES_PROXY = False - Network accessline 22
SEARCH_URL = "https://www.startpage.com/do/search?q={keyword}"
scripts/channels/tavily_search/README.md
- Network accessline 23
1. 访问 [Tavily.com](https://tavily.com) 注册账号(有免费套餐) - Access to secretsline 27
[Credential-related source omitted] - Network accessline 85
1. **API 配额**:免费套餐有请求限制,查看 [定价页面](https://tavily.com/pricing) - Network accessline 91
- [Tavily 官方文档](https://docs.tavily.com/) - Network accessline 92
- [Python SDK 文档](https://github.com/tavily-ai/tavily-python)
scripts/channels/tavily_search/examples/search-result.json
- Network accessline 6
"items": [ { "url": "https://finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", - Network accessline 7
{ "url": "https://finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", "title": "4 Textile-Apparel Stocks Set to Benefit From Strong Industry Momentum", - Network accessline 8
"url": "https://finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", - Network accessline 14
}, { "url": "https://au.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", - Network accessline 15
{ "url": "https://au.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", "title": "4 Textile-Apparel Stocks Set to Benefit From Strong Industry Momentum", - Network accessline 16
"url": "https://au.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", - Network accessline 22
}, { "url": "https://ca.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", - Network accessline 23
{ "url": "https://ca.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html", "title": "4 Textile-Apparel Stocks Set to Benefit From Strong Industry Momentum", - Network accessline 24
"url": "https://ca.finance.yahoo.com/news/4-textile-apparel-stocks-set-160700886.html",
scripts/channels/tavily_search/output-analysis.md
- Network accessline 36
核查日期:2026-10-25。官方来源:[Search API](https://docs.tavily.com/documentation/api-reference/endpoint/search)。
scripts/channels/tavily_search/tavily_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted]
scripts/channels/tinyfish/README.md
- Network accessline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 18
# 默认 https://api.search.tinyfish.ai - Network accessline 22
API Key 在 [TinyFish 控制台](https://www.tinyfish.ai) 创建,注册无需信用卡。 - Network accessline 44
| `--language` | 语言代码,如 `en`、`zh` | 由地区推断 | | `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.search.tinyfish.ai | - Network accessline 45
| `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.search.tinyfish.ai | | `--timeout` | 请求超时秒数 | 15 | - Network accessline 46
| `--endpoint` | 接口地址 | https://api.search.tinyfish.ai | - Network accessline 61
- [TinyFish Search](https://www.tinyfish.ai/search) - [TinyFish 免费搜索与抓取](https://www.tinyfish.ai/free-search-fetch) - Network accessline 62
- [TinyFish 免费搜索与抓取](https://www.tinyfish.ai/free-search-fetch)
scripts/channels/tinyfish/examples/search-result.json
- Network accessline 7
{ "title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 8
"title": "Environmental Sustainability in the Fashion Industry", "href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", "body": "Sep 17, 2026 — The fashion and textiles sector relies heavily o - Network accessline 9
"href": "https://www.genevaenvironmentnetwork.org/resources/updates/sustainable-fashion/", - Network accessline 16
{ "title": "Sustainable Clothing Manufacturing: Best Practices for Eco ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 17
"title": "Sustainable Clothing Manufacturing: Best Practices for Eco ...", "href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", "body": "To achieve sustainable garment manufacturing, minimi - Network accessline 18
"href": "https://www.white2labelmanufacturing.com/blog/sustainable-clothing-manufacturing", - Network accessline 25
{ "title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", - Network accessline 26
"title": "Standards | Certificates | Seals | Initiatives | Responsibility", "href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662", "body": "Sep 1, 2026 — The Sustainable Apparel Coalition is the apparel, footwear - Network accessline 27
"href": "https://guides.library.cornell.edu/c.php?g=662121&p=5277662",
scripts/channels/tinyfish/output-analysis.md
- Network accessline 37
核查日期:2026-10-25。官方来源:[Search API](https://docs.tinyfish.ai/search-api)。
scripts/channels/tinyfish/tinyfish_search.py
- Executable scriptline 1
Executable file - Access to secretsline 10
[Credential-related source omitted] - Network accessline 12
DEFAULT_ENDPOINT = "https://api.search.tinyfish.ai" - Network accessline 16
"""TinyFish 搜索客户端,接口文档 https://www.tinyfish.ai/search""" - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Network accessline 27
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 28
self.session = requests.Session() - Access to secretsline 29
[Credential-related source omitted] - Network accessline 60
url = (item.get("url") or "").strip() if url and not urlparse(url).scheme: url = f"https://{url}" - Network accessline 61
if url and not urlparse(url).scheme: url = f"https://{url}" if not url: - Network accessline 62
url = f"https://{url}" - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Network accessline 109
parser.add_argument("--language", help="语言代码,如 en、zh") parser.add_argument("--api-key", help="TinyFish API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.search.tinyfish.ai") - Network accessline 110
parser.add_argument("--api-key", help="TinyFish API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.search.tinyfish.ai") parser.add_argument("--timeout", type=int, default=15, help="请求超时秒数") - Network accessline 111
parser.add_argument("--endpoint", help="接口地址,默认 https://api.search.tinyfish.ai") - Access to secretsline 117
[Credential-related source omitted]
scripts/channels/toutiao/output-analysis.md
- Network accessline 28
官方来源与核实范围(2026-10-25):官方产品入口 [今日头条](https://www.toutiao.com/),源码使用 `https://www.toutiao.com/search/?keyword=...`。本次只检索官方容量资料,未重新调用搜索服务,未找到可引用的官方条数承诺。 - Network accessline 30
`toutiao_no_api.py` 请求 `https://www.toutiao.com/search/?keyword=...`,来源为网页 HTML。它继承 `base_engine.py` 并用 lxml 解析响应,未调用头条匿名 JSON 接口或浏览器执行后的内容。匹配容器为 class 包含 article 或 result 的 `div`。
scripts/channels/toutiao/toutiao_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "toutiao" ENGINE_DISPLAY_NAME = "今日头条" SEARCH_URL = "https://www.toutiao.com/search/?keyword={keyword}" - Network accessline 21
ENGINE_DISPLAY_NAME = "今日头条" SEARCH_URL = "https://www.toutiao.com/search/?keyword={keyword}" REQUIRES_PROXY = False - Network accessline 22
SEARCH_URL = "https://www.toutiao.com/search/?keyword={keyword}"
scripts/channels/volcengine/README.md
- Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 39
在环境变量或项目 `.env` 中设置 `VOLCENGINE_SEARCH_VERSION=global`。Global 与 Custom 使用同一个按量 API Key,调用地址为 `https://open.feedcoopapi.com/search_api/global_search`。未设置版本时保持 Custom 行为,也可通过 `VOLCENGINE_SEARCH_VERSION=custom` 或命令行 `--version custom` 显式选择。 - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Network accessline 206
1. 访问火山引擎控制台:https://console.volcengine.com/ask-echo/api-key
scripts/channels/volcengine/examples/search-result.json
- Network accessline 7
{ "Rank": 0, "Url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf", - Network accessline 8
"Rank": 0, "Url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf", "Title": "Sustainability in the Fashion Industry", - Network accessline 9
"Url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf", - Network accessline 22
}, "title": "Sustainability in the Fashion Industry", "url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf" - Network accessline 23
"title": "Sustainability in the Fashion Industry", "url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf" }, - Network accessline 24
"url": "https://www.hucbe.org/_files/ugd/f3769f_073e6c68933a4bb4ae8b2dcd08c08887.pdf" - Network accessline 26
{ "Rank": 1, "Url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html", - Network accessline 27
"Rank": 1, "Url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html", "Title": "中国纺织工业联合会", - Network accessline 28
"Url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html", - Network accessline 37
"HostInfo": { "Hostname": "中国纺织工业联合会", "IconUrl": "https://p11-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/8ea6419c3fa44f28c35f654c01d053f8~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=Buu - Network accessline 38
"Hostname": "中国纺织工业联合会", "IconUrl": "https://p11-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/8ea6419c3fa44f28c35f654c01d053f8~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=BuuyzNMiBknyRpEIkkwOxb3Tm - Network accessline 39
"IconUrl": "https://p11-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/8ea6419c3fa44f28c35f654c01d053f8~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=BuuyzNMiBknyRpEIkkwOxb3TmEo%3D", - Network accessline 41
}, "title": "中国纺织工业联合会", "url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html" - Network accessline 42
"title": "中国纺织工业联合会", "url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html" }, - Network accessline 43
"url": "http://www.cntac.org.cn/jinghua/202511/t20251116_4396465.html" - Network accessline 45
{ "Rank": 2, "Url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends", - Network accessline 46
"Rank": 2, "Url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends", "Title": "8 Sustainable Fashion Trends: 2026 Guide - Shopify Canada", - Network accessline 47
"Url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends", - Network accessline 56
"HostInfo": { "Hostname": "Shopify", "IconUrl": "https://p26-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/dff0408efdf99ebbdb5ff8d063185885~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=qvLWC - Network accessline 57
"Hostname": "Shopify", "IconUrl": "https://p26-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/dff0408efdf99ebbdb5ff8d063185885~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=qvLWC5mkmgjffMnP2G4Q9rIKCO4 - Network accessline 58
"IconUrl": "https://p26-volcsearch-d-sign.byteimg.com/isp-i18n-media/img/dff0408efdf99ebbdb5ff8d063185885~tplv-be4g95zd3a-224x224.jpeg?lk3s=feb11e32&x-expires=1798074046&x-signature=qvLWC5mkmgjffMnP2G4Q9rIKCO4%3D", - Network accessline 60
}, "title": "8 Sustainable Fashion Trends: 2026 Guide - Shopify Canada", "url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends" - Network accessline 61
"title": "8 Sustainable Fashion Trends: 2026 Guide - Shopify Canada", "url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends" } - Network accessline 62
"url": "https://www.shopify.com/ca/blog/sustainable-fashion-trends"
scripts/channels/volcengine/output-analysis.md
- Network accessline 37
核查日期:2026-10-25。官方来源:[Collab 智能体 API](https://docs.volcengine.com/docs/NetworkedQAAgent/CollabAgentAPI?lang=zh)。官方搜索可见参数说明确认 `Count` 最高 50、`DocCount` 最高 20,二者默认均为 10;页面正文直取为空,因此其他参数的官方完整约束未核实。
scripts/channels/volcengine/volcengine_search.py
- Executable scriptline 1
Executable file - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 37
raise ValueError("VOLCENGINE_SEARCH_VERSION 仅支持 global 或 custom") endpoint = "global_search" if self.version == "global" else "web_search" self.base_url = f"https://open.feedcoopapi.com/search_api/{endpoint}" - Network accessline 38
endpoint = "global_search" if self.version == "global" else "web_search" self.base_url = f"https://open.feedcoopapi.com/search_api/{endpoint}" self.headers = { - Network accessline 39
self.base_url = f"https://open.feedcoopapi.com/search_api/{endpoint}" - Access to secretsline 41
[Credential-related source omitted] - Network accessline 293
response = requests.post( - Access to secretsline 399
[Credential-related source omitted] - Access to secretsline 412
[Credential-related source omitted] - Access to secretsline 455
[Credential-related source omitted] - Access to secretsline 457
[Credential-related source omitted] - Access to secretsline 458
[Credential-related source omitted] - Access to secretsline 460
[Credential-related source omitted] - Access to secretsline 461
[Credential-related source omitted] - Access to secretsline 464
[Credential-related source omitted]
scripts/channels/wechat/examples/search-result.json
- Network accessline 5
{ "title": "透视羽绒服装行业:技术迭代背后的机遇与短板", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd9KlpWrqafLzseh_rsn4C_Bg_B3gIzGk6C4unRvgcyxR8RllKulLQoVx - Network accessline 6
"title": "透视羽绒服装行业:技术迭代背后的机遇与短板", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd9KlpWrqafLzseh_rsn4C_Bg_B3gIzGk6C4unRvgcyxR8RllKulLQoVxdbEW-_QC - Network accessline 7
[Credential-related source omitted] - Network accessline 14
{ "title": "泰欧FTA倒计时:泰国服装业如何借自贸协定抢占欧洲市场?", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd9WGntxYssgy_For_wu5N5kbPvPTVL7d9mvOeV3A7y2ZqCOXk - Network accessline 15
"title": "泰欧FTA倒计时:泰国服装业如何借自贸协定抢占欧洲市场?", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd9WGntxYssgy_For_wu5N5kbPvPTVL7d9mvOeV3A7y2ZqCOXkzMQdpntD - Network accessline 16
[Credential-related source omitted] - Network accessline 23
{ "title": "为什么说大部分顶级富豪都来自服装行业?", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd92WQ5x8gs6CRbLaYVi02QHV3rz7tLfg9JKE9K4Xne8hOJjtVKMHAg2_lo - Network accessline 24
"title": "为什么说大部分顶级富豪都来自服装行业?", "url": "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSxyYmItiLO7oVJUk2qg3OBjzDcrSD_hwjVqXa8Fplpd92WQ5x8gs6CRbLaYVi02QHV3rz7tLfg9JKE9K4Xne8hOJjtVKMHAg2_loRvkMAt4B - Network accessline 25
[Credential-related source omitted]
scripts/channels/wechat/output-analysis.md
- Network accessline 33
官方来源(资料整理日期:2026-10-25):[搜狗微信搜索入口](https://weixin.sogou.com/)。已核对页面入口,未发现固定每页数量承诺;50 条与最多五页均为本实现限制。
scripts/channels/wechat/package.json
- Executable scriptline 1
Executable file
scripts/channels/wechat/search_wechat.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 51
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'Host': 'weixin.sogou.com', 'Referer': 'https://weixin.sogou.com/', - Network accessline 52
'Host': 'weixin.sogou.com', 'Referer': 'https://weixin.sogou.com/', }; - Network accessline 53
'Referer': 'https://weixin.sogou.com/', - Network accessline 163
try { const resp = await request({ url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600', - Network accessline 164
const resp = await request({ url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600', headers: { - Network accessline 165
url: 'https://v.sogou.com/v?ie=utf8&query=&p=40030600', - Network accessline 484
if (url.startsWith('/')) { url = `https://weixin.sogou.com${url}`; - Network accessline 485
url = `https://weixin.sogou.com${url}`; - Network accessline 583
const encodedQuery = encodeURIComponent(query); const url = `https://weixin.sogou.com/weixin?query=${encodedQuery}&s_from=input&_sug_=n&type=2&page=${page}&ie=utf8`; - Network accessline 584
const url = `https://weixin.sogou.com/weixin?query=${encodedQuery}&s_from=input&_sug_=n&type=2&page=${page}&ie=utf8`;
scripts/channels/wechat/wechat_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
ENGINE_NAME = "wechat" ENGINE_DISPLAY_NAME = "微信搜索" SEARCH_URL = "https://weixin.sogou.com/weixin?type=1&query={keyword}" - Network accessline 21
ENGINE_DISPLAY_NAME = "微信搜索" SEARCH_URL = "https://weixin.sogou.com/weixin?type=1&query={keyword}" REQUIRES_PROXY = False - Network accessline 22
SEARCH_URL = "https://weixin.sogou.com/weixin?type=1&query={keyword}"
scripts/channels/wikipedia/README.md
- Network accessline 32
# 使用代理 python scripts/channels/wikipedia/wikipedia_search.py "search query" --proxy http://127.0.0.1:7890 - Network accessline 33
python scripts/channels/wikipedia/wikipedia_search.py "search query" --proxy http://127.0.0.1:7890 - Network accessline 50
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Network accessline 51
WIKIPEDIA_PROXY=http://127.0.0.1:7890
scripts/channels/wikipedia/examples/search-result.json
- Network accessline 7
{ "title": "Clothing industry", "href": "https://en.wikipedia.org/?curid=39751285", - Network accessline 8
"title": "Clothing industry", "href": "https://en.wikipedia.org/?curid=39751285", "body": "includes the textile industry (producers of cotton, wool, fur, and synthetic fibre), embellishment using embroidery, the fashion industry - Network accessline 9
"href": "https://en.wikipedia.org/?curid=39751285", - Network accessline 12
{ "title": "Textile industry in Bangladesh", "href": "https://en.wikipedia.org/?curid=13798677", - Network accessline 13
"title": "Textile industry in Bangladesh", "href": "https://en.wikipedia.org/?curid=13798677", "body": "The textile industry in Bangladesh comprises primary textile manufacturing, including spinning, weaving and knitting, and dy - Network accessline 14
"href": "https://en.wikipedia.org/?curid=13798677", - Network accessline 17
{ "title": "Textile industry", "href": "https://en.wikipedia.org/?curid=1943311", - Network accessline 18
"title": "Textile industry", "href": "https://en.wikipedia.org/?curid=1943311", "body": "February 2018). \"Sustainable chemistry: A solution to the textile industry in a developing world\". Current Opinion in Green and Sustainab - Network accessline 19
"href": "https://en.wikipedia.org/?curid=1943311",
scripts/channels/wikipedia/output-analysis.md
- Network accessline 29
官方来源(资料整理日期:2026-10-25):[MediaWiki API:Search:srlimit、snippet 与 continuation](https://www.mediawiki.org/wiki/API:Search)。
scripts/channels/wikipedia/wikipedia_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 21
[Credential-related source omitted] - Network accessline 31
Args: lang: 语言代码 (默认: en) proxy: 代理地址 (如 http://127.0.0.1:7890) - Network accessline 32
lang: 语言代码 (默认: en) proxy: 代理地址 (如 http://127.0.0.1:7890) """ - Network accessline 33
proxy: 代理地址 (如 http://127.0.0.1:7890) - Network accessline 35
self.lang = lang self.proxy = proxy or os.getenv("WIKIPEDIA_PROXY") self.session = requests.Session() - Network accessline 36
self.proxy = proxy or os.getenv("WIKIPEDIA_PROXY") self.session = requests.Session() self.session.headers.update({ - Network accessline 37
self.session = requests.Session() - Network accessline 59
search_url = f"https://{self.lang}.wikipedia.org/w/api.php" - Network accessline 83
results.append({ 'title': title, 'href': f"https://{self.lang}.wikipedia.org/?curid={pageid}" if pageid else "", - Network accessline 84
'title': title, 'href': f"https://{self.lang}.wikipedia.org/?curid={pageid}" if pageid else "", 'body': body - Network accessline 85
'href': f"https://{self.lang}.wikipedia.org/?curid={pageid}" if pageid else "",
scripts/channels/wolfram/output-analysis.md
- Network accessline 28
官方来源(2026-10-25):[Wolfram Alpha FAQ](https://www.wolframalpha.com/faqs/),已读取正文并核对 pod/subpod 的说明,未发现固定数量承诺。 - Network accessline 30
`wolfram_no_api.py` 请求 `https://www.wolframalpha.com/input?i=...` 的网页 HTML,继承共享 `base_engine.py`。它未调用 Wolfram 官方计算 API,没有读取完整的计算响应 JSON,也不执行动态页面脚本。解析容器为 class 包含 result 或 pod 的 `div`,同页可能有多个知识展示区域。
scripts/channels/wolfram/wolfram_no_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
ENGINE_NAME = "wolfram" ENGINE_DISPLAY_NAME = "Wolfram Alpha" SEARCH_URL = "https://www.wolframalpha.com/input?i={keyword}" - Network accessline 22
ENGINE_DISPLAY_NAME = "Wolfram Alpha" SEARCH_URL = "https://www.wolframalpha.com/input?i={keyword}" REQUIRES_PROXY = True - Network accessline 23
SEARCH_URL = "https://www.wolframalpha.com/input?i={keyword}"
scripts/channels/xiaoyuzhoufm/README.md
scripts/channels/xiaoyuzhoufm/examples/search-result.json
- Network accessline 7
{ "title": "预测一下 2050 年流行什么衣服 (feat. 崔丹)", "link": "https://www.xiaoyuzhoufm.com/episode/64f5bb3680c9ec4c5f239480", - Network accessline 8
"title": "预测一下 2050 年流行什么衣服 (feat. 崔丹)", "link": "https://www.xiaoyuzhoufm.com/episode/64f5bb3680c9ec4c5f239480", "score": "medium", - Network accessline 9
"link": "https://www.xiaoyuzhoufm.com/episode/64f5bb3680c9ec4c5f239480", - Network accessline 19
{ "title": "vol29. 我用AI 解锁了时尚产业 11%的新生意", "link": "https://www.xiaoyuzhoufm.com/episode/65e8836ee80d0dbe63cd0197", - Network accessline 20
"title": "vol29. 我用AI 解锁了时尚产业 11%的新生意", "link": "https://www.xiaoyuzhoufm.com/episode/65e8836ee80d0dbe63cd0197", "score": "medium", - Network accessline 21
"link": "https://www.xiaoyuzhoufm.com/episode/65e8836ee80d0dbe63cd0197", - Network accessline 31
{ "title": "SS.1 Sustainability Series | Fashion - Sustainability is the New Sexy", "link": "https://www.xiaoyuzhoufm.com/episode/61397a63fb4acd247422eab7", - Network accessline 32
"title": "SS.1 Sustainability Series | Fashion - Sustainability is the New Sexy", "link": "https://www.xiaoyuzhoufm.com/episode/61397a63fb4acd247422eab7", "score": "low", - Network accessline 33
"link": "https://www.xiaoyuzhoufm.com/episode/61397a63fb4acd247422eab7",
scripts/channels/xiaoyuzhoufm/output-analysis.md
- Network accessline 30
官方来源(资料整理日期:2026-10-25):[秘塔搜索 API Playground](https://metaso.cn/search-api/playground)。已核对公开入口;podcast 专属最大条数及有效范围未取得可确认的官方说明。
scripts/channels/xiaoyuzhoufm/xiaoyuzhou_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 6
[Credential-related source omitted] - Network accessline 9
import http.client - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Network accessline 72
conn = http.client.HTTPSConnection(base_url, timeout=timeout)
scripts/channels/yahoo/README.md
- Network accessline 8
python scripts/channels/yahoo/yahoo_search.py "python documentation" --json --pretty python scripts/channels/yahoo/yahoo_no_api.py "人工智能 新闻" --page 2 --timelimit w --safesearch strict --timeout 45 --json python scripts/channels/yahoo/yahoo_ - Network accessline 10
python scripts/channels/yahoo/yahoo_search.py "search query" --proxy http://127.0.0.1:7890 --json
scripts/channels/yahoo/examples/search-result.json
- Network accessline 7
{ "title": "Green production and consumption of textiles and apparel ...", "url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", - Network accessline 8
"title": "Green production and consumption of textiles and apparel ...", "url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", "content": "Jun 1, 2024 · Future considerations and developments in sustainab - Network accessline 9
"url": "https://www.sciencedirect.com/science/article/pii/S219985312400074X", - Network accessline 21
{ "title": "Review on Sustainability in the Textiles and Apparel Industry ...", "url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-of-Envir - Network accessline 22
"title": "Review on Sustainability in the Textiles and Apparel Industry ...", "url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-of-Environmental - Network accessline 23
"url": "https://ijsmt.org/wp-content/uploads/2026/04/Review-on-Sustainability-in-the-Textiles-and-Apparel-Industry-A-Comprehensive-Analysis-of-Environmental-and-Social-Impacts.pdf", - Network accessline 35
{ "title": "Review on Sustainability in the Textiles and Apparel Industry ...", "url": "https://ijsmt.org/article/review-on-sustainability-in-the-textiles-and-apparel-industry-a-comprehensive-analysis-of-environmental-and-social - Network accessline 36
"title": "Review on Sustainability in the Textiles and Apparel Industry ...", "url": "https://ijsmt.org/article/review-on-sustainability-in-the-textiles-and-apparel-industry-a-comprehensive-analysis-of-environmental-and-social-impacts - Network accessline 37
"url": "https://ijsmt.org/article/review-on-sustainability-in-the-textiles-and-apparel-industry-a-comprehensive-analysis-of-environmental-and-social-impacts/",
scripts/channels/yahoo/output-analysis.md
- Network accessline 30
官方来源与核实范围(2026-10-25):[Yahoo SafeSearch 官方帮助](https://in.help.yahoo.com/kb/search-for-desktop/select-setting-yahoo-safesearch-sln2247.html)。官方检索内容确认 Strict、Moderate、Off 三种模式;正文抓取未成功,检索内容未给出固定每页容量。 - Network accessline 32
`yahoo_search.py` 读取 `https://search.yahoo.com/search` 的网页 HTML,从 `div.algo-sr` 提取网页结果。`yahoo_no_api.py` 继承相同搜索类;联合别名 `yahoo_direct` 归并到 `yahoo`,两种入口共用本篇格式说明。分页通过页面的 next 链接继续访问,输出为指定页的结果。
scripts/channels/yahoo/yahoo_no_api.py
- Executable scriptline 1
Executable file
scripts/channels/yahoo/yahoo_search.py
- Executable scriptline 1
Executable file - Network accessline 13
ENGINE_NAME = 'yahoo' ENGINE_DISPLAY_NAME = 'Yahoo 搜索' SEARCH_URL = 'https://search.yahoo.com/search' - Network accessline 14
ENGINE_DISPLAY_NAME = 'Yahoo 搜索' SEARCH_URL = 'https://search.yahoo.com/search' REQUIRES_PROXY = True - Network accessline 15
SEARCH_URL = 'https://search.yahoo.com/search'
scripts/channels/yandex/README.md
- Network accessline 8
python scripts/channels/yandex/yandex_no_api.py "Python documentation" -m 5 --json python scripts/channels/yandex/yandex_no_api.py "北京大学" --page 2 --timeout 20 --json python scripts/channels/yandex/yandex_no_api.py "Python documentation" -- - Network accessline 10
python scripts/channels/yandex/yandex_no_api.py "Python documentation" --proxy http://127.0.0.1:7890 --json - Network accessline 29
请求端点为 `https://yandex.com/search/site/`,参数包括 `text`、`tmpl_version=releases`、`web=1`、`frame=1`、`searchid=3131712`。HTML 结果来自 `b-serp-item`,标题链接来自 `b-serp-item__title-link`,摘要来自 `b-serp-item__text`。端点与字段事实参考本地 SearXNG 引擎资料,模块独立实现,未引入其代码。
scripts/channels/yandex/examples/search-result-yandex_direct.json
- Network accessline 7
{ "title": "Sustainability trends and gaps in the textile, apparel and fashion...", "url": "https://link.springer.com/article/10.1007/s10668-022-02887-2", - Network accessline 8
"title": "Sustainability trends and gaps in the textile, apparel and fashion...", "url": "https://link.springer.com/article/10.1007/s10668-022-02887-2", "content": "(2019) reviewed different CSR theories and methods used in the - Network accessline 9
"url": "https://link.springer.com/article/10.1007/s10668-022-02887-2", - Network accessline 21
{ "title": "Textile Sustainability Hub", "url": "https://www.textilesustainability.com/", - Network accessline 22
"title": "Textile Sustainability Hub", "url": "https://www.textilesustainability.com/", "content": "Decarbonizing the Textile and Apparel Industry. Driving sustainability in the textile and apparel industry through innovative so - Network accessline 23
"url": "https://www.textilesustainability.com/", - Network accessline 35
{ "title": "Sustainable Apparel Market, Global Market Analysis Report - 2036", "url": "https://www.factmr.com/report/sustainable-apparel-market", - Network accessline 36
"title": "Sustainable Apparel Market, Global Market Analysis Report - 2036", "url": "https://www.factmr.com/report/sustainable-apparel-market", "content": "Europe is a policy-led market for sustainable apparel. Textile waste rul - Network accessline 37
"url": "https://www.factmr.com/report/sustainable-apparel-market",
scripts/channels/yandex/examples/search-result.json
- Network accessline 7
{ "title": "Sustainable Practices in the Apparel Industry | NetSuite", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 8
"title": "Sustainable Practices in the Apparel Industry | NetSuite", "href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", "body": "Sustainability Strategies in the Apparel Industry. Ap - Network accessline 9
"href": "https://www.netsuite.com/portal/resource/articles/erp/sustainability-in-apparel.shtml", - Network accessline 13
{ "title": "The Future of Fashion: Sustainability in the Textile Industry", "href": "https://www.thedesignagent.com/blog-posts/the-future-of-fashion-sustainability-in-the-textile-industry", - Network accessline 14
"title": "The Future of Fashion: Sustainability in the Textile Industry", "href": "https://www.thedesignagent.com/blog-posts/the-future-of-fashion-sustainability-in-the-textile-industry", "body": "The production of textiles, par - Network accessline 15
"href": "https://www.thedesignagent.com/blog-posts/the-future-of-fashion-sustainability-in-the-textile-industry", - Network accessline 19
{ "title": "Innovation is the Future for the Textile and Apparel Industry", "href": "https://www.sgs.com/en-us/news/2025/07/cc-2025-q2-innovation-is-the-future-for-the-textile-and-apparel-industry", - Network accessline 20
"title": "Innovation is the Future for the Textile and Apparel Industry", "href": "https://www.sgs.com/en-us/news/2025/07/cc-2025-q2-innovation-is-the-future-for-the-textile-and-apparel-industry", "body": "Sustainable dyeing and - Network accessline 21
"href": "https://www.sgs.com/en-us/news/2025/07/cc-2025-q2-innovation-is-the-future-for-the-textile-and-apparel-industry",
scripts/channels/yandex/output-analysis.md
- Network accessline 34
核查日期:2026-10-25。官方来源:[SerpAPI Yandex Search API](https://serpapi.com/yandex-search-api)。当前商业入口使用 SerpAPI。
scripts/channels/yandex/yandex_no_api.py
- Executable scriptline 1
Executable file - Network accessline 33
params['p'] = page - 1 with create_session(proxy) as session: response = request(session, 'GET', 'https://yandex.com/search/site/', - Network accessline 34
with create_session(proxy) as session: response = request(session, 'GET', 'https://yandex.com/search/site/', timeout=deadline.remaining(), params=params) - Network accessline 35
response = request(session, 'GET', 'https://yandex.com/search/site/',
scripts/channels/yandex/yandex_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted]
scripts/channels/youtube/README.md
scripts/channels/youtube/examples/search-result.json
- Network accessline 12
"channel_id": "UCXWToxAeK_liUtbx1u8Ntbg", "published_at": "2023-05-09T15:10:22Z", "description": "Textiles are all around us, but understanding textiles themselves is complex. We use 100 million tonnes of textile materials each - Network accessline 13
"published_at": "2023-05-09T15:10:22Z", "description": "Textiles are all around us, but understanding textiles themselves is complex. We use 100 million tonnes of textile materials each year but more than 70% end up in landfill, produ - Network accessline 14
"description": "Textiles are all around us, but understanding textiles themselves is complex. We use 100 million tonnes of textile materials each year but more than 70% end up in landfill, producing a lot of stress on our planet. Associate - Network accessline 15
"thumbnails": { "default": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/default.jpg", - Network accessline 16
"default": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/default.jpg", "width": 120, - Network accessline 17
"url": "https://i.ytimg.com/vi/OAoCxMifgd8/default.jpg", - Network accessline 20
}, "medium": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/mqdefault.jpg", - Network accessline 21
"medium": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/mqdefault.jpg", "width": 320, - Network accessline 22
"url": "https://i.ytimg.com/vi/OAoCxMifgd8/mqdefault.jpg", - Network accessline 25
}, "high": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/hqdefault.jpg", - Network accessline 26
"high": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/hqdefault.jpg", "width": 480, - Network accessline 27
"url": "https://i.ytimg.com/vi/OAoCxMifgd8/hqdefault.jpg", - Network accessline 30
}, "standard": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/sddefault.jpg", - Network accessline 31
"standard": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/sddefault.jpg", "width": 640, - Network accessline 32
"url": "https://i.ytimg.com/vi/OAoCxMifgd8/sddefault.jpg", - Network accessline 35
}, "maxres": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/maxresdefault.jpg", - Network accessline 36
"maxres": { "url": "https://i.ytimg.com/vi/OAoCxMifgd8/maxresdefault.jpg", "width": 1280, - Network accessline 37
"url": "https://i.ytimg.com/vi/OAoCxMifgd8/maxresdefault.jpg", - Network accessline 51
"comment_count": 0 }, "url": "https://www.youtube.com/watch?v=OAoCxMifgd8" - Network accessline 52
}, "url": "https://www.youtube.com/watch?v=OAoCxMifgd8" }, - Network accessline 53
"url": "https://www.youtube.com/watch?v=OAoCxMifgd8" - Network accessline 60
"channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "published_at": "2021-11-08T18:26:59Z", "description": "Textile production is one of the most polluting industries, producing 1.2 billion tonnes of CO2, which is more emissions than inte - Network accessline 61
"published_at": "2021-11-08T18:26:59Z", "description": "Textile production is one of the most polluting industries, producing 1.2 billion tonnes of CO2, which is more emissions than international flights and maritime shipping. Over 60 - Network accessline 62
"description": "Textile production is one of the most polluting industries, producing 1.2 billion tonnes of CO2, which is more emissions than international flights and maritime shipping. Over 60% of textiles are used in the clothing industr - Network accessline 63
"thumbnails": { "default": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/default.jpg", - Network accessline 64
"default": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/default.jpg", "width": 120, - Network accessline 65
"url": "https://i.ytimg.com/vi/bOhwpv-C_zY/default.jpg", - Network accessline 68
}, "medium": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/mqdefault.jpg", - Network accessline 69
"medium": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/mqdefault.jpg", "width": 320, - Network accessline 70
"url": "https://i.ytimg.com/vi/bOhwpv-C_zY/mqdefault.jpg", - Network accessline 73
}, "high": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/hqdefault.jpg", - Network accessline 74
"high": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/hqdefault.jpg", "width": 480, - Network accessline 75
"url": "https://i.ytimg.com/vi/bOhwpv-C_zY/hqdefault.jpg", - Network accessline 78
}, "standard": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/sddefault.jpg", - Network accessline 79
"standard": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/sddefault.jpg", "width": 640, - Network accessline 80
"url": "https://i.ytimg.com/vi/bOhwpv-C_zY/sddefault.jpg", - Network accessline 83
}, "maxres": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/maxresdefault.jpg", - Network accessline 84
"maxres": { "url": "https://i.ytimg.com/vi/bOhwpv-C_zY/maxresdefault.jpg", "width": 1280, - Network accessline 85
"url": "https://i.ytimg.com/vi/bOhwpv-C_zY/maxresdefault.jpg", - Network accessline 108
"comment_count": 1 }, "url": "https://www.youtube.com/watch?v=bOhwpv-C_zY" - Network accessline 109
}, "url": "https://www.youtube.com/watch?v=bOhwpv-C_zY" }, - Network accessline 110
"url": "https://www.youtube.com/watch?v=bOhwpv-C_zY" - Network accessline 117
"channel_id": "UCm4TA3kTGh-3p5Kp1eraSZQ", "published_at": "2021-08-11T17:54:28Z", "description": "it's been a while since the last update video so I'm stoked to be able to share with you the pre-production sample I received! If - Network accessline 118
"published_at": "2021-08-11T17:54:28Z", "description": "it's been a while since the last update video so I'm stoked to be able to share with you the pre-production sample I received! If you haven't already, be sure to sign up for the - Network accessline 119
"description": "it's been a while since the last update video so I'm stoked to be able to share with you the pre-production sample I received! If you haven't already, be sure to sign up for the mailing list 👉🏼http://www.lessshiddy.com\n\n\n - Network accessline 120
"thumbnails": { "default": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/default.jpg", - Network accessline 121
"default": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/default.jpg", "width": 120, - Network accessline 122
"url": "https://i.ytimg.com/vi/yjKQpLmTtNs/default.jpg", - Network accessline 125
}, "medium": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/mqdefault.jpg", - Network accessline 126
"medium": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/mqdefault.jpg", "width": 320, - Network accessline 127
"url": "https://i.ytimg.com/vi/yjKQpLmTtNs/mqdefault.jpg", - Network accessline 130
}, "high": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/hqdefault.jpg", - Network accessline 131
"high": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/hqdefault.jpg", "width": 480, - Network accessline 132
"url": "https://i.ytimg.com/vi/yjKQpLmTtNs/hqdefault.jpg", - Network accessline 135
}, "standard": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/sddefault.jpg", - Network accessline 136
"standard": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/sddefault.jpg", "width": 640, - Network accessline 137
"url": "https://i.ytimg.com/vi/yjKQpLmTtNs/sddefault.jpg", - Network accessline 140
}, "maxres": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/maxresdefault.jpg", - Network accessline 141
"maxres": { "url": "https://i.ytimg.com/vi/yjKQpLmTtNs/maxresdefault.jpg", "width": 1280, - Network accessline 142
"url": "https://i.ytimg.com/vi/yjKQpLmTtNs/maxresdefault.jpg", - Network accessline 156
"comment_count": 175 }, "url": "https://www.youtube.com/watch?v=yjKQpLmTtNs" - Network accessline 157
}, "url": "https://www.youtube.com/watch?v=yjKQpLmTtNs" } - Network accessline 158
"url": "https://www.youtube.com/watch?v=yjKQpLmTtNs"
scripts/channels/youtube/output-analysis.md
- Network accessline 33
官方来源(资料整理日期:2026-10-25):[search.list 参数与分页](https://developers.google.com/youtube/v3/docs/search/list)、[commentThreads.list 参数](https://developers.google.com/youtube/v3/docs/commentThreads/list)。
scripts/channels/youtube/youtube_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 108
[Credential-related source omitted] - Network accessline 118
url = "https://www.googleapis.com/youtube/v3/search" - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Network accessline 160
url = "https://www.googleapis.com/youtube/v3/videos" - Access to secretsline 162
[Credential-related source omitted] - Network accessline 194
"comment_count": int(statistics.get("commentCount", 0)), }, "url": f"https://www.youtube.com/watch?v={video_id}", - Network accessline 195
}, "url": f"https://www.youtube.com/watch?v={video_id}", } - Network accessline 196
"url": f"https://www.youtube.com/watch?v={video_id}", - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 211
[Credential-related source omitted] - Access to secretsline 219
[Credential-related source omitted] - Network accessline 226
url = "https://www.googleapis.com/youtube/v3/commentThreads" - Access to secretsline 228
[Credential-related source omitted] - Access to secretsline 409
[Credential-related source omitted] - Access to secretsline 420
[Credential-related source omitted] - Access to secretsline 421
[Credential-related source omitted] - Access to secretsline 423
[Credential-related source omitted] - Access to secretsline 424
[Credential-related source omitted] - Access to secretsline 435
[Credential-related source omitted] - Access to secretsline 448
[Credential-related source omitted]
scripts/channels/yuanbao/README.md
- Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 19
# 默认 https://api.wsa.cloud.tencent.com/SearchPro - Network accessline 56
| `--deeplinks` | 返回子链接(旗舰版) | False | | `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.wsa.cloud.tencent.com/SearchPro | - Network accessline 57
| `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://api.wsa.cloud.tencent.com/SearchPro | | `--timeout` | 请求超时秒数 | 30 | - Network accessline 58
| `--endpoint` | 接口地址 | https://api.wsa.cloud.tencent.com/SearchPro | - Network accessline 81
- [SearchPro 接口文档](https://cloud.tencent.com/document/api/1806/121811) - Network accessline 82
- [服务 API KEY 方式](https://cloud.tencent.com/document/product/1806/130615)
scripts/channels/yuanbao/examples/search-result.json
- Network accessline 7
{ "title": "一块布,如何“织”出新潮流?", "href": "https://www.ce.cn/xwzx/gnsz/gdxw/202603/t20260317_2833561.shtml", - Network accessline 8
"title": "一块布,如何“织”出新潮流?", "href": "https://www.ce.cn/xwzx/gnsz/gdxw/202603/t20260317_2833561.shtml", "body": "一块布,如何“织”出新潮流? 中国经济网。该公司副总经理赵晓勤说。 此外,绿色循环也成为纺织行业重要发展方向。盛虹控股集团创新打造“二氧化碳捕集利用—绿色乙二醇—低碳环保聚酯纤维”低碳循环绿色产业链;上海德福伦新材料科技有限公司采用生 - Network accessline 9
"href": "https://www.ce.cn/xwzx/gnsz/gdxw/202603/t20260317_2833561.shtml", - Network accessline 15
"score": 0.772, "authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_ce_cn.ico", - Network accessline 16
"authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_ce_cn.ico", "images": [], - Network accessline 17
"favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_ce_cn.ico", - Network accessline 21
{ "title": "पतर सचन करयलय", "href": "https://pib.gov.in/PressNoteDetails.aspx?NoteId=159187&ModuleId=3", - Network accessline 22
"title": "पतर सचन करयलय", "href": "https://pib.gov.in/PressNoteDetails.aspx?NoteId=159187&ModuleId=3", "body": "पत्र सूचना कार्यालय Press Information Bureau。भारत सरकार पत्र सूचना कार्यालय Economy Weaving Sustainability into Indi - Network accessline 23
"href": "https://pib.gov.in/PressNoteDetails.aspx?NoteId=159187&ModuleId=3", - Network accessline 29
"score": 0.777, "authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/pib_gov_in.ico", - Network accessline 30
"authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/pib_gov_in.ico", "images": [], - Network accessline 31
"favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/pib_gov_in.ico", - Network accessline 35
{ "title": "Sustainable Textile Industry", "href": "https://www.sustainability-directory.com/area/sustainable-textile-industry/", - Network accessline 36
"title": "Sustainable Textile Industry", "href": "https://www.sustainability-directory.com/area/sustainable-textile-industry/", "body": "Sustainable Textile Industry。Sense → A sustainable textile industry is a global sector for - Network accessline 37
"href": "https://www.sustainability-directory.com/area/sustainable-textile-industry/", - Network accessline 43
"score": 0.791, "authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_sustainability-directory_com.ico", - Network accessline 44
"authority_level": null, "favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_sustainability-directory_com.ico", "images": [], - Network accessline 45
"favicon": "https://cdn-yb.icon.qq.com/zuowei_dir/www_sustainability-directory_com.ico",
scripts/channels/yuanbao/output-analysis.md
- Network accessline 39
核查日期:2026-10-25。官方来源:[SearchPro](https://cloud.tencent.com/document/api/1806/121811)。
scripts/channels/yuanbao/yuanbao_search.py
- Executable scriptline 1
Executable file - Access to secretsline 10
[Credential-related source omitted] - Network accessline 12
DEFAULT_ENDPOINT = "https://api.wsa.cloud.tencent.com/SearchPro" - Network accessline 27
"""腾讯元宝搜索(腾讯云联网搜索 Web Search API),接口文档 https://cloud.tencent.com/document/api/1806/121811""" - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Network accessline 38
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 39
self.session = requests.Session() - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 159
parser.add_argument("--deeplinks", action="store_true", help="返回子链接(旗舰版)") parser.add_argument("--api-key", help="服务 API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.wsa.cloud.tencent.com/SearchPro") - Network accessline 160
parser.add_argument("--api-key", help="服务 API Key") parser.add_argument("--endpoint", help="接口地址,默认 https://api.wsa.cloud.tencent.com/SearchPro") parser.add_argument("--timeout", type=int, default=30, help="请求超时秒数") - Network accessline 161
parser.add_argument("--endpoint", help="接口地址,默认 https://api.wsa.cloud.tencent.com/SearchPro") - Access to secretsline 167
[Credential-related source omitted]
scripts/channels/zhihu_official/README.md
scripts/channels/zhihu_official/examples/search-result.json
- Network accessline 7
{ "title": "对于纺织和时装行业的可持续发展,你有什么建议? - 知乎", "href": "https://www.zhihu.com/question/396090327/answer/3295605545?utm_medium=openapi_platform&utm_source=cf621feb3f2d", - Network accessline 8
"title": "对于纺织和时装行业的可持续发展,你有什么建议? - 知乎", "href": "https://www.zhihu.com/question/396090327/answer/3295605545?utm_medium=openapi_platform&utm_source=cf621feb3f2d", "body": "时装领域的可持续发展,是个大问题。在今天的一键购买、随后在垃圾填埋场处理的文化中,快速时尚带来的破坏性影响,是不 - Network accessline 9
"href": "https://www.zhihu.com/question/396090327/answer/3295605545?utm_medium=openapi_platform&utm_source=cf621feb3f2d", - Network accessline 17
{ "title": "27春夏功能纺织趋势:轻量化下的可持续 + 黑科技 - 知乎", "href": "https://zhuanlan.zhihu.com/p/1987492142852093802?utm_medium=openapi_platform&utm_source=cf621feb3f2d", - Network accessline 18
"title": "27春夏功能纺织趋势:轻量化下的可持续 + 黑科技 - 知乎", "href": "https://zhuanlan.zhihu.com/p/1987492142852093802?utm_medium=openapi_platform&utm_source=cf621feb3f2d", "body": "2026 FUNCTIONAL TEXTILES SHANGHAI\n功能科技 塑造未来\n2026年3月5日-6日\nINSP - Network accessline 19
"href": "https://zhuanlan.zhihu.com/p/1987492142852093802?utm_medium=openapi_platform&utm_source=cf621feb3f2d", - Network accessline 27
{ "title": "福恩股份上市,为全球消费者带来环保织物多元化的体验 - 知乎", "href": "https://zhuanlan.zhihu.com/p/2029859575847965386?utm_medium=openapi_platform&utm_source=cf621feb3f2d", - Network accessline 28
"title": "福恩股份上市,为全球消费者带来环保织物多元化的体验 - 知乎", "href": "https://zhuanlan.zhihu.com/p/2029859575847965386?utm_medium=openapi_platform&utm_source=cf621feb3f2d", "body": "杭州福恩股份有限公司(简称:福恩股份)是一家以可持续发展为核心的全球生态环保面料供应商,现已成为集面料设计、研发、纺纱、织造、印 - Network accessline 29
"href": "https://zhuanlan.zhihu.com/p/2029859575847965386?utm_medium=openapi_platform&utm_source=cf621feb3f2d",
scripts/channels/zhihu_official/output-analysis.md
- Network accessline 20
| 统一 `--limit` | 每渠道输出上限 | 未指定或 `0` 解析为 `None`,搜索仍请求 10 | 正整数传给 max-results,再受对应 scope 的夹取限制,返回后另有本地截断;统一渠道不调用 hot/ask | | `--timeout` | 单次 HTTP 请求超时 | 搜索/热榜为 `10` 秒,ask 为 `60` 秒 | CLI 接受整数;实际网络库验证有效值 | | `--base-url` | 开放平台地址 | 已有配置或 `http - Network accessline 21
| `--timeout` | 单次 HTTP 请求超时 | 搜索/热榜为 `10` 秒,ask 为 `60` 秒 | CLI 接受整数;实际网络库验证有效值 | | `--base-url` | 开放平台地址 | 已有配置或 `https://developer.zhihu.com` | 去除末尾斜线;接口路径保持不变 | | `--access-secret` | 开放平台认证 | 使用已有 `ZHIHU_ACCESS_SECRET` | 缺少时直接失败;访问权限由账号决 - Network accessline 22
| `--base-url` | 开放平台地址 | 已有配置或 `https://developer.zhihu.com` | 去除末尾斜线;接口路径保持不变 | - Network accessline 31
官方来源(资料整理日期:2026-10-25):[知乎开放平台文档](https://developer.zhihu.com/docs)。对应实现路径为 `/api/v1/content/zhihu_search`、`/api/v1/content/global_search`、`/api/v1/content/hot_list`;官方参数正文此次不可读取,默认值与上限的官方证据均待确认。
scripts/channels/zhihu_official/zhihu_official_search.py
- Executable scriptline 1
Executable file - Access to secretsline 10
[Credential-related source omitted] - Network accessline 12
DEFAULT_BASE_URL = "https://developer.zhihu.com" - Network accessline 23
"""知乎开放平台客户端,接口文档 https://developer.zhihu.com/docs""" - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Network accessline 34
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 35
self.session = requests.Session() - Network accessline 185
sub.add_argument("-m", "--max-results", type=int, default=None, help="结果数量,站内最多 10,全网最多 20") sub.add_argument("--access-secret", help="知乎 Access Secret") sub.add_argument("--base-url", help="接口地址,默认 https://developer.zhihu.c - Network accessline 186
sub.add_argument("--access-secret", help="知乎 Access Secret") sub.add_argument("--base-url", help="接口地址,默认 https://developer.zhihu.com") sub.add_argument("--timeout", type=int, default=10, help="请求超时秒数") - Network accessline 187
sub.add_argument("--base-url", help="接口地址,默认 https://developer.zhihu.com")
scripts/channels/zhipu/README.md
- Access to secretsline 17
[Credential-related source omitted] - Network accessline 18
# 默认 search_std,可选 search_pro、search_pro_sogou、search_pro_quark ZHIPU_SEARCH_ENGINE=search_std # 默认 https://open.bigmodel.cn/api/paas/v4/web_search - Network accessline 19
ZHIPU_SEARCH_ENGINE=search_std # 默认 https://open.bigmodel.cn/api/paas/v4/web_search ZHIPU_WEB_SEARCH_ENDPOINT= - Network accessline 20
# 默认 https://open.bigmodel.cn/api/paas/v4/web_search - Network accessline 24
API Key 在 [智谱开放平台](https://bigmodel.cn/apikey/platform) 创建。 - Network accessline 49
| `--search-intent` | 开启意图识别 | 关闭 | | `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://open.bigmodel.cn/api/paas/v4/web_search | - Network accessline 50
| `--api-key` | API Key(优先于环境变量) | - | | `--endpoint` | 接口地址 | https://open.bigmodel.cn/api/paas/v4/web_search | | `--timeout` | 请求超时秒数 | 30 | - Network accessline 51
| `--endpoint` | 接口地址 | https://open.bigmodel.cn/api/paas/v4/web_search | - Network accessline 74
- [联网搜索指南](https://docs.bigmodel.cn/cn/guide/tools/web-search) - Network accessline 75
- [网络搜索 API](https://docs.bigmodel.cn/api-reference/工具-api/网络搜索)
scripts/channels/zhipu/examples/search-result.json
- Network accessline 7
{ "title": "SCI特刊征稿:纺织服装业的可持续发展转型", "href": "http://mp.weixin.qq.com/s?__biz=MzU5NDgyNjYxMw==&mid=2247495596&idx=1&sn=fbf52ace373dd3771d25e735168b19f1", - Network accessline 8
"title": "SCI特刊征稿:纺织服装业的可持续发展转型", "href": "http://mp.weixin.qq.com/s?__biz=MzU5NDgyNjYxMw==&mid=2247495596&idx=1&sn=fbf52ace373dd3771d25e735168b19f1", "body": "Journal of Cleaner Production11.07215.8ENGINEERING, ENVIRONMENTAL, Q - Network accessline 9
"href": "http://mp.weixin.qq.com/s?__biz=MzU5NDgyNjYxMw==&mid=2247495596&idx=1&sn=fbf52ace373dd3771d25e735168b19f1", - Network accessline 10
"body": "Journal of Cleaner Production11.07215.8ENGINEERING, ENVIRONMENTAL, Q1, 9/54ENVIRONMENTAL SCIENCE, Q1, 24/279GREEN & SUSTAINABLE SCIENCE & TECHNOLOGY, Q1, 5/47大类及分区环境科学与生态学1区top小类及分区ENVIRONMENTAL SCIENCE环境科学1区ENGINEERING, ENVIRONMEN - Network accessline 18
{ "title": "可持续引领纺织服装行业绿色复苏持续向上", "href": "http://baby.ifeng.com/c/7yJJMdCuUzZ", - Network accessline 19
"title": "可持续引领纺织服装行业绿色复苏持续向上", "href": "http://baby.ifeng.com/c/7yJJMdCuUzZ", "body": "7月15日-17日,2020大湾区国际纺织面料及辅料博览会在深圳成功举办。由中国纺织工业联合会社会责任办公室主办,中国国际贸易促进委员会纺织行业分会、中国纺织信息中心支持的可持续发展专区”以及2020中国可持续时尚周深圳季”首次亮相粤港澳大湾区(深圳国际会展中心14号馆C45)。 - Network accessline 20
"href": "http://baby.ifeng.com/c/7yJJMdCuUzZ", - Network accessline 29
{ "title": "科德宝与拉蒂携手 通过重复利用丝绸生产高性能隔热填充物", "href": "https://baijiahao.baidu.com/s?id=1688364412293106062", - Network accessline 30
"title": "科德宝与拉蒂携手 通过重复利用丝绸生产高性能隔热填充物", "href": "https://baijiahao.baidu.com/s?id=1688364412293106062", "body": "Freudenberg Performance Materials and Italian fashion textile company, Ratti, have been working on sustainability p - Network accessline 31
"href": "https://baijiahao.baidu.com/s?id=1688364412293106062",
scripts/channels/zhipu/output-analysis.md
- Network accessline 38
核查日期:2026-10-25。官方来源:[网络搜索 API](https://docs.bigmodel.cn/api-reference/工具-api/网络搜索)。
scripts/channels/zhipu/zhipu_search.py
- Executable scriptline 1
Executable file - Access to secretsline 9
[Credential-related source omitted] - Network accessline 11
DEFAULT_ENDPOINT = "https://open.bigmodel.cn/api/paas/v4/web_search" - Network accessline 21
"""智谱网络搜索客户端,接口文档 https://docs.bigmodel.cn/api-reference/工具-api/网络搜索""" - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 34
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 35
self.session = requests.Session() - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 166
[Credential-related source omitted]
scripts/cli/README.md
- Access to secretsline 31
[Credential-related source omitted] - Network accessline 37
python union_search_cli.py search "AI agent" --platforms youtube --limit 3 -o ./out/search.json --pretty python union_search_cli.py image "cat" --platforms pixabay --limit 5 --output-dir ./search_output/images --pretty python union_search_c - Network accessline 38
python union_search_cli.py image "cat" --platforms pixabay --limit 5 --output-dir ./search_output/images --pretty python union_search_cli.py download "https://www.youtube.com/watch?v=dQw4w9WgXcQ" --max-height 1080 --output-dir ./downloads - - Network accessline 39
python union_search_cli.py download "https://www.youtube.com/watch?v=dQw4w9WgXcQ" --max-height 1080 --output-dir ./downloads --pretty - Network accessline 40
python union_search_cli.py download "https://youtu.be/Zh9IscszDQg" --cookies-file C:/path/cookies.txt --restrict-filenames --continue-download --pretty - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Network accessline 117
python union_search_cli.py defuddle https://example.com --json --pretty - Network accessline 118
python union_search_cli.py defuddle --url https://example.com --format markdown -o ./out/article.md - Access to secretsline 133
[Credential-related source omitted]
scripts/cli/__init__.py
- Executable scriptline 1
Executable file
scripts/cli/adapters.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 213
try: client = DefuddleEngine(timeout=timeout) result = client.fetch( - Network accessline 214
client = DefuddleEngine(timeout=timeout) result = client.fetch( url=url, - Network accessline 215
result = client.fetch( - Access to secretsline 241
[Credential-related source omitted] - Access to secretsline 289
[Credential-related source omitted]
scripts/cli/errors.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/cli/main.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 67
" python scripts/cli/main.py bsearch \"AI Agent\" --limit 5 --pretty\n" " python scripts/cli/main.py image \"cats\" --platforms baidu bing --limit 20 --output-dir ./image_downloads\n" " python scripts/cli/main.py - Network accessline 68
" python scripts/cli/main.py image \"cats\" --platforms baidu bing --limit 20 --output-dir ./image_downloads\n" " python scripts/cli/main.py download \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\" --output-dir ./downloads\n" - Network accessline 69
" python scripts/cli/main.py download \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\" --output-dir ./downloads\n" - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Access to secretsline 160
[Credential-related source omitted] - Access to secretsline 203
[Credential-related source omitted] - Network accessline 388
raise CliUsageError( "Provide at least one URL or use --from-file", details={"example": 'union-search download "https://example.com/video" --output-dir ./downloads'}, - Network accessline 389
"Provide at least one URL or use --from-file", details={"example": 'union-search download "https://example.com/video" --output-dir ./downloads'}, ) - Network accessline 390
details={"example": 'union-search download "https://example.com/video" --output-dir ./downloads'}, - Access to secretsline 405
[Credential-related source omitted] - Access to secretsline 643
[Credential-related source omitted] - Access to secretsline 645
[Credential-related source omitted] - Network accessline 723
raise CliUsageError( "URL is required for defuddle command. Use: defuddle <url> or defuddle --url <url>", details={"example": "union-search defuddle https://example.com"}, - Network accessline 724
"URL is required for defuddle command. Use: defuddle <url> or defuddle --url <url>", details={"example": "union-search defuddle https://example.com"}, ) - Network accessline 725
details={"example": "union-search defuddle https://example.com"}, - Network accessline 729
try: client = DefuddleEngine(timeout=args.timeout) result = client.fetch( - Network accessline 730
client = DefuddleEngine(timeout=args.timeout) result = client.fetch( url=url, - Network accessline 731
result = client.fetch( - Access to secretsline 796
[Credential-related source omitted]
scripts/cli/output.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/cli/registry.py
scripts/cli/validators.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/downloader/__init__.py
- Executable scriptline 1
Executable file
scripts/downloader/yt_dlp_downloader.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Network accessline 42
video_id = item.get("video_id") if video_id: return f"https://www.youtube.com/watch?v={video_id}" - Network accessline 44
return f"https://www.youtube.com/watch?v={video_id}" - Network accessline 47
bvid = item.get("bvid") if bvid: return f"https://www.bilibili.com/video/{bvid}" - Network accessline 49
return f"https://www.bilibili.com/video/{bvid}" - Network accessline 56
) if aweme_id: return f"https://www.douyin.com/video/{aweme_id}" - Network accessline 58
return f"https://www.douyin.com/video/{aweme_id}" - Access to secretsline 229
[Credential-related source omitted] - Access to secretsline 251
[Credential-related source omitted] - Access to secretsline 252
[Credential-related source omitted] - Access to secretsline 313
[Credential-related source omitted] - Access to secretsline 338
[Credential-related source omitted]
scripts/evals/README.md
- Network accessline 30
| GitHub 单渠道搜索 | 返回两条真实结果,`ok=true` | | GitHub 与 Wikipedia 联合搜索 | 两个渠道分别返回两条结果,`ok=true` | | Defuddle 提取 `https://example.com` | 返回 `Example Domain` 标题及正文,`ok=true` | - Network accessline 31
| GitHub 与 Wikipedia 联合搜索 | 两个渠道分别返回两条结果,`ok=true` | | Defuddle 提取 `https://example.com` | 返回 `Example Domain` 标题及正文,`ok=true` | | Bing 图片搜索与下载 | 实际保存一张 JPEG,3,512,465 字节,`ok=true` | - Network accessline 32
| Defuddle 提取 `https://example.com` | 返回 `Example Domain` 标题及正文,`ok=true` | - Network accessline 39
正文提取的 JSON 调用成功;随后两次 `defuddle https://example.com --format markdown` 调用遇到 TLS 连接中断,返回退出码 `4` 和 `PLATFORM_FAILURE`,写出的 Markdown 是错误报告。Markdown 参数已经通过真实帮助和输出渲染代码核对,本次没有取得该格式的成功远程结果。
scripts/tests/test_ai_native_json.py
- Executable scriptline 1
Executable file - Network accessline 16
def test_grok_concatenated_draft_and_final(self): draft = {"results": [{"title": "draft", "url": "", "snippet": "searching"}]} final = {"results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}] - Network accessline 17
draft = {"results": [{"title": "draft", "url": "", "snippet": "searching"}]} final = {"results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}]} raw = json.dumps({"structuredOutput": None, "tex - Network accessline 18
final = {"results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}]} - Network accessline 22
def test_envelopes_fences_and_braces_in_strings(self): page = {"title": "Example", "url": "https://example.com", "markdown": 'Literal {braces} and "quotes"'} - Network accessline 23
page = {"title": "Example", "url": "https://example.com", "markdown": 'Literal {braces} and "quotes"'}
scripts/tests/test_ai_tools.py
- Executable scriptline 1
Executable file - Network accessline 30
for platform, backend in adapter.BACKENDS.items(): module = Mock() module.search.return_value = {"backend": backend, "results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}]} - Network accessline 31
module = Mock() module.search.return_value = {"backend": backend, "results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}]} with patch.object(worker.importlib, "import_module", return_ - Network accessline 32
module.search.return_value = {"backend": backend, "results": [{"title": "SQLite", "url": "https://sqlite.org/wal.html", "snippet": "WAL"}]} - Network accessline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Network accessline 81
self.assertNotIn(platform, engine.PLATFORM_GROUPS[group]) with patch.object(adapter, "search", return_value=[{"title": "native", "url": "https://example.com/native", "snippet": "body"}]) as run: _, result = engin - Network accessline 82
with patch.object(adapter, "search", return_value=[{"title": "native", "url": "https://example.com/native", "snippet": "body"}]) as run:
scripts/tests/test_platform_groups.py
- Executable scriptline 1
Executable file - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted]
scripts/tests/test_result_cleaning.py
- Executable scriptline 1
Executable file - Network accessline 18
class ResultCleaningTest(unittest.TestCase): def test_redirects_and_www_collapse_to_the_same_page(self): target = "https://www.merriam-webster.com/dictionary/sustainable" - Network accessline 19
[Credential-related source omitted] - Network accessline 20
target = "https://www.merriam-webster.com/dictionary/sustainable" - Network accessline 21
[Credential-related source omitted] - Network accessline 22
bing = "https://www.bing.com/ck/a?!&&p=abc&u=%s&ntb=1" % token - Network accessline 23
yahoo = "https://r.search.yahoo.com/_ylt=abc/RV=2/RE=3/RU=%s/RK=4/RS=def" % target - Network accessline 30
self.assertEqual(removed, 2) self.assertEqual(len(merged), 1) self.assertEqual(merged[0]["url"], "https://merriam-webster.com/dictionary/sustainable") - Network accessline 31
self.assertEqual(len(merged), 1) self.assertEqual(merged[0]["url"], "https://merriam-webster.com/dictionary/sustainable") self.assertEqual(merged[0]["title"], "SUSTAINABLE Definition") - Network accessline 32
self.assertEqual(merged[0]["url"], "https://merriam-webster.com/dictionary/sustainable") - Network accessline 39
"name": "apparel-data", "full_name": "owner/apparel-data", "url": "https://api.github.com/repos/owner/apparel-data", - Network accessline 40
"full_name": "owner/apparel-data", "url": "https://api.github.com/repos/owner/apparel-data", "html_url": "https://github.com/owner/apparel-data", - Network accessline 41
"url": "https://api.github.com/repos/owner/apparel-data", - Network accessline 42
"html_url": "https://github.com/owner/apparel-data", - Network accessline 44
}, "github", 1) self.assertEqual(row["title"], "apparel-data") self.assertEqual(row["url"], "https://github.com/owner/apparel-data") - Network accessline 45
self.assertEqual(row["title"], "apparel-data") self.assertEqual(row["url"], "https://github.com/owner/apparel-data") self.assertEqual(row["content"], "apparel data") - Network accessline 46
self.assertEqual(row["url"], "https://github.com/owner/apparel-data") - Network accessline 50
row = cleaning.normalize_item({ "title": "Python Release Python 3.13.0", "href": "https://www.python.org/downloads/release/python-3130/", - Network accessline 51
"title": "Python Release Python 3.13.0", "href": "https://www.python.org/downloads/release/python-3130/", "body": "Release date: Oct. 7, 2024.", - Network accessline 52
"href": "https://www.python.org/downloads/release/python-3130/", - Network accessline 53
"body": "Release date: Oct. 7, 2024.", }, "serper", 2) self.assertEqual(row["url"], "https://python.org/downloads/release/python-3130") - Network accessline 54
}, "serper", 2) self.assertEqual(row["url"], "https://python.org/downloads/release/python-3130") self.assertEqual(row["content"], "Release date: Oct. 7, 2024.") - Network accessline 55
self.assertEqual(row["url"], "https://python.org/downloads/release/python-3130") - Network accessline 59
def test_similar_titles_on_different_pages_stay_separate(self): rows = [ item("baidu", "4步拆解2025服装爆款公式", "https://example.com/a", "short"), - Network accessline 60
rows = [ item("baidu", "4步拆解2025服装爆款公式", "https://example.com/a", "short"), item("brave", "4步拆解2025服装爆款公式→", "https://example.com/b", "longer content"), - Network accessline 61
item("baidu", "4步拆解2025服装爆款公式", "https://example.com/a", "short"), - Network accessline 62
item("brave", "4步拆解2025服装爆款公式→", "https://example.com/b", "longer content"), - Network accessline 63
item("sogou", "服装店铺爆款复盘", "https://example.com/c"), - Network accessline 65
merged, removed = cleaning.merge_items(rows) self.assertEqual((len(merged), removed), (3, 0)) self.assertEqual(merged[0]["url"], "https://example.com/a") - Network accessline 66
self.assertEqual((len(merged), removed), (3, 0)) self.assertEqual(merged[0]["url"], "https://example.com/a") self.assertEqual(merged[0]["title"], "4步拆解2025服装爆款公式") - Network accessline 67
self.assertEqual(merged[0]["url"], "https://example.com/a")
scripts/tests/test_unlimited_results.py
- Executable scriptline 1
Executable file - Network accessline 25
def rows(count=37): return [{"title": "Result %s" % i, "url": "https://example.com/%s" % i, "snippet": "source"} for i in range(count)] - Network accessline 26
return [{"title": "Result %s" % i, "url": "https://example.com/%s" % i, "snippet": "source"} for i in range(count)] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Network accessline 105
cli = importlib.util.module_from_spec(spec) spec.loader.exec_module(cli) for argv in [["search", "test"], ["platform", "codex", "test"], ["codex", "test"], ["download", "https://example.com/video"]]: - Network accessline 106
spec.loader.exec_module(cli) for argv in [["search", "test"], ["platform", "codex", "test"], ["codex", "test"], ["download", "https://example.com/video"]]: with patch.object(sys, "argv", ["union_search_cli.py", *argv]): - Network accessline 107
for argv in [["search", "test"], ["platform", "codex", "test"], ["codex", "test"], ["download", "https://example.com/video"]]:
scripts/union_image_search/README.md
scripts/union_image_search/multi_platform_image_search.py
scripts/union_image_search/native_images.py
- Executable scriptline 1
Executable file
scripts/union_image_search/providers/catalogs.py
- Executable scriptline 1
Executable file - Network accessline 31
def _pixabay(session, query, count, deadline): response = request(session, 'GET', f'https://pixabay.com/images/search/{quote(query, safe="")}/', - Network accessline 32
response = request(session, 'GET', f'https://pixabay.com/images/search/{quote(query, safe="")}/', timeout=deadline.remaining(), headers={'Accept': 'application/json', 'x-fetch-bootstrap': '1', ' - Network accessline 40
download = item['sources'].get('downloadUrl') records.append(_record('pixabay', item.get('name'), urljoin('https://pixabay.com', download) if download else None, - Network accessline 41
records.append(_record('pixabay', item.get('name'), urljoin('https://pixabay.com', download) if download else None, urljoin('https://pixabay.com', item['href']), item['sources'].get('1x'), - Network accessline 42
urljoin('https://pixabay.com', download) if download else None, - Network accessline 43
urljoin('https://pixabay.com', item['href']), item['sources'].get('1x'), - Network accessline 48
def _pinterest(session, query, count, deadline): options = {'options': {'query': query, 'bookmarks': ['']}, 'context': {}} response = request(session, 'GET', 'https://www.pinterest.com/resource/BaseSearchResource/get/', - Network accessline 49
options = {'options': {'query': query, 'bookmarks': ['']}, 'context': {}} response = request(session, 'GET', 'https://www.pinterest.com/resource/BaseSearchResource/get/', timeout=deadline.remaining(), params={'dat - Network accessline 50
response = request(session, 'GET', 'https://www.pinterest.com/resource/BaseSearchResource/get/', - Network accessline 61
original = item['images'].get('orig') or {} records.append(_record('pinterest', item.get('title'), original.get('url'), f'https://www.pinterest.com/pin/{quote(str(item["id"]), safe="")}/', - Network accessline 62
records.append(_record('pinterest', item.get('title'), original.get('url'), f'https://www.pinterest.com/pin/{quote(str(item["id"]), safe="")}/', item['images'].get('236x', {}).get('url'), original.get('width'), origi - Network accessline 63
f'https://www.pinterest.com/pin/{quote(str(item["id"]), safe="")}/', - Network accessline 78
def _fivehundredpx(session, query, count, deadline): response = request(session, 'POST', 'https://api-neo.500px.com/graphql', - Network accessline 79
response = request(session, 'POST', 'https://api-neo.500px.com/graphql', - Network accessline 84
item = edge['node'] records.append(_record('500px', item.get('title'), item['urls'].get('size_4k'), f'https://500px.com/photo/{item["id"]}', item['urls'].get('size_600'), - Network accessline 85
records.append(_record('500px', item.get('title'), item['urls'].get('size_4k'), f'https://500px.com/photo/{item["id"]}', item['urls'].get('size_600'), author=(item.get('uploader') or {}).get('displayName'), image_var - Network accessline 86
f'https://500px.com/photo/{item["id"]}', item['urls'].get('size_600'), - Network accessline 91
_FLICKR_LICENSES = { 0: 'All Rights Reserved', 1: 'https://creativecommons.org/licenses/by-nc-sa/2.0/', - Network accessline 92
0: 'All Rights Reserved', 1: 'https://creativecommons.org/licenses/by-nc-sa/2.0/', - Network accessline 93
2: 'https://creativecommons.org/licenses/by-nc/2.0/', - Network accessline 94
3: 'https://creativecommons.org/licenses/by-nc-nd/2.0/', - Network accessline 95
4: 'https://creativecommons.org/licenses/by/2.0/', - Network accessline 96
5: 'https://creativecommons.org/licenses/by-sa/2.0/', - Network accessline 97
6: 'https://creativecommons.org/licenses/by-nd/2.0/', - Network accessline 98
7: 'No known copyright restrictions', 8: 'United States Government Work', 9: 'https://creativecommons.org/publicdomain/zero/1.0/', 10: 'https://creativecommons.org/publicdomain/mark/1.0/', - Network accessline 99
9: 'https://creativecommons.org/publicdomain/zero/1.0/', - Network accessline 100
10: 'https://creativecommons.org/publicdomain/mark/1.0/', - Network accessline 116
def _flickr(session, query, count, deadline): response = request(session, 'GET', 'https://www.flickr.com/search/', - Network accessline 117
response = request(session, 'GET', 'https://www.flickr.com/search/', - Network accessline 136
preview = min(sizes.values(), key=lambda size: abs(size['width'] - 320)) records.append(_record('flickr', photo.get('title'), urljoin(response.url, image['url']), f'https://www.flickr.com/photos/{quote(photo["ownerNsid"] - Network accessline 137
records.append(_record('flickr', photo.get('title'), urljoin(response.url, image['url']), f'https://www.flickr.com/photos/{quote(photo["ownerNsid"], safe="@")}/{photo["id"]}/', urljoin(response.url, preview['url']), - Network accessline 138
f'https://www.flickr.com/photos/{quote(photo["ownerNsid"], safe="@")}/{photo["id"]}/', - Network accessline 151
def _wikicommons(session, query, count, deadline): response = request(session, 'GET', 'https://commons.wikimedia.org/w/api.php', - Network accessline 152
response = request(session, 'GET', 'https://commons.wikimedia.org/w/api.php',
scripts/union_image_search/providers/search_engines.py
- Executable scriptline 1
Executable file - Network accessline 47
def _baidu(session, query, count, deadline): warmup = request(session, 'GET', 'https://image.baidu.com/', timeout=deadline.remaining()) - Network accessline 48
warmup = request(session, 'GET', 'https://image.baidu.com/', timeout=deadline.remaining()) - Network accessline 49
document(warmup) response = request( session, 'GET', 'https://image.baidu.com/search/acjson', timeout=deadline.remaining(), - Network accessline 50
response = request( session, 'GET', 'https://image.baidu.com/search/acjson', timeout=deadline.remaining(), params={'word': query, 'rn': count, 'pn': 0, 'tn': 'resultjson_com'}, - Network accessline 51
session, 'GET', 'https://image.baidu.com/search/acjson', timeout=deadline.remaining(), - Network accessline 52
params={'word': query, 'rn': count, 'pn': 0, 'tn': 'resultjson_com'}, headers={'Referer': 'https://image.baidu.com/'}, ) - Network accessline 53
headers={'Referer': 'https://image.baidu.com/'}, - Network accessline 69
def _bing(session, query, count, deadline): response = request( session, 'GET', 'https://www.bing.com/images/async', timeout=deadline.remaining(), - Network accessline 70
response = request( session, 'GET', 'https://www.bing.com/images/async', timeout=deadline.remaining(), params={'q': query, 'mmasync': 1, 'first': 1, 'count': count}, - Network accessline 71
session, 'GET', 'https://www.bing.com/images/async', timeout=deadline.remaining(), - Network accessline 85
def _sogou(session, query, count, deadline): response = request( session, 'GET', 'https://pic.sogou.com/pics', timeout=deadline.remaining(), - Network accessline 86
response = request( session, 'GET', 'https://pic.sogou.com/pics', timeout=deadline.remaining(), params={'query': query, 'start': 0}, - Network accessline 87
session, 'GET', 'https://pic.sogou.com/pics', timeout=deadline.remaining(), - Network accessline 103
def _quark(session, query, count, deadline): response = request( session, 'GET', 'https://vt.sm.cn/api/pic/list', timeout=deadline.remaining(), - Network accessline 104
response = request( session, 'GET', 'https://vt.sm.cn/api/pic/list', timeout=deadline.remaining(), params={'query': query, 'limit': count, 'start': 0}, - Network accessline 105
session, 'GET', 'https://vt.sm.cn/api/pic/list', timeout=deadline.remaining(),
scripts/union_image_search/providers/specialty.py
- Executable scriptline 1
Executable file - Network accessline 31
[Credential-related source omitted] - Network accessline 32
[Credential-related source omitted] - Network accessline 33
timeout=deadline.remaining()) public = _json(token)['public_csrf_token'] response = request(session, 'POST', 'https://www.artstation.com/api/v2/search/projects.json', - Network accessline 34
[Credential-related source omitted] - Network accessline 35
response = request(session, 'POST', 'https://www.artstation.com/api/v2/search/projects.json', - Network accessline 40
for item in _json(response)['data']: project = _json(request(session, 'GET', f'https://www.artstation.com/projects/{quote(item["hash_id"], safe="")}.json', - Network accessline 41
project = _json(request(session, 'GET', f'https://www.artstation.com/projects/{quote(item["hash_id"], safe="")}.json', timeout=deadline.remaining())) - Network accessline 42
f'https://www.artstation.com/projects/{quote(item["hash_id"], safe="")}.json', - Network accessline 56
def _findthatmeme(session, query, limit, deadline): response = request(session, 'POST', 'https://findthatmeme.com/api/v1/search', - Network accessline 57
response = request(session, 'POST', 'https://findthatmeme.com/api/v1/search', - Network accessline 70
def _naver(session, query, limit, deadline): response = request(session, 'GET', 'https://search.naver.com/search.naver', - Network accessline 71
response = request(session, 'GET', 'https://search.naver.com/search.naver',
scripts/union_image_search/volcengine_adapter.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 57
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Network accessline 59
self.base_url = "https://open.feedcoopapi.com/search_api/web_search" - Access to secretsline 72
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 92
try: response = requests.post( - Network accessline 93
response = requests.post( - Network accessline 147
image_url = urls[0] try: response = requests.get(image_url, timeout=30) - Network accessline 148
try: response = requests.get(image_url, timeout=30) response.raise_for_status() - Network accessline 149
response = requests.get(image_url, timeout=30)
scripts/union_search/README.md
- Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Network accessline 70
python union_search_cli.py defuddle https://example.com --json --pretty - Network accessline 71
python union_search_cli.py defuddle --url https://example.com --format markdown -o ./out/article.md python union_search_cli.py search "AI agent" --platforms youtube --limit 3 -o ./out/search.json --pretty python union_search_cli.py download
scripts/union_search/__init__.py
- Executable scriptline 1
Executable file
scripts/union_search/platform_metadata.py
- Executable scriptline 1
Executable file - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted]
scripts/union_search/search_logger.py
- Executable scriptline 1
Executable file
scripts/union_search/structured_results.py
scripts/union_search/union_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 316
[Credential-related source omitted] - Access to secretsline 317
[Credential-related source omitted] - Access to secretsline 324
[Credential-related source omitted] - Access to secretsline 325
[Credential-related source omitted] - Access to secretsline 332
[Credential-related source omitted] - Access to secretsline 333
[Credential-related source omitted] - Access to secretsline 340
[Credential-related source omitted] - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 348
[Credential-related source omitted] - Access to secretsline 349
[Credential-related source omitted] - Access to secretsline 356
[Credential-related source omitted] - Access to secretsline 357
[Credential-related source omitted] - Access to secretsline 364
[Credential-related source omitted] - Access to secretsline 365
[Credential-related source omitted] - Access to secretsline 372
[Credential-related source omitted] - Access to secretsline 373
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted] - Access to secretsline 381
[Credential-related source omitted] - Access to secretsline 388
[Credential-related source omitted] - Access to secretsline 389
[Credential-related source omitted] - Access to secretsline 396
[Credential-related source omitted] - Access to secretsline 397
[Credential-related source omitted] - Access to secretsline 404
[Credential-related source omitted] - Access to secretsline 405
[Credential-related source omitted] - Access to secretsline 412
[Credential-related source omitted] - Access to secretsline 413
[Credential-related source omitted] - Access to secretsline 420
[Credential-related source omitted] - Access to secretsline 421
[Credential-related source omitted] - Access to secretsline 428
[Credential-related source omitted] - Access to secretsline 429
[Credential-related source omitted] - Access to secretsline 436
[Credential-related source omitted] - Access to secretsline 437
[Credential-related source omitted] - Access to secretsline 446
[Credential-related source omitted] - Access to secretsline 447
[Credential-related source omitted] - Access to secretsline 454
[Credential-related source omitted] - Access to secretsline 455
[Credential-related source omitted] - Access to secretsline 462
[Credential-related source omitted] - Access to secretsline 463
[Credential-related source omitted] - Access to secretsline 470
[Credential-related source omitted] - Access to secretsline 471
[Credential-related source omitted] - Access to secretsline 479
[Credential-related source omitted] - Access to secretsline 480
[Credential-related source omitted] - Access to secretsline 487
[Credential-related source omitted] - Access to secretsline 488
[Credential-related source omitted] - Access to secretsline 495
[Credential-related source omitted] - Access to secretsline 496
[Credential-related source omitted] - Access to secretsline 503
[Credential-related source omitted] - Access to secretsline 504
[Credential-related source omitted] - Access to secretsline 511
[Credential-related source omitted] - Access to secretsline 512
[Credential-related source omitted] - Access to secretsline 519
[Credential-related source omitted] - Access to secretsline 520
[Credential-related source omitted] - Access to secretsline 527
[Credential-related source omitted] - Access to secretsline 528
[Credential-related source omitted] - Access to secretsline 535
[Credential-related source omitted] - Access to secretsline 536
[Credential-related source omitted] - Access to secretsline 543
[Credential-related source omitted] - Access to secretsline 544
[Credential-related source omitted] - Access to secretsline 551
[Credential-related source omitted] - Access to secretsline 552
[Credential-related source omitted] - Access to secretsline 559
[Credential-related source omitted] - Access to secretsline 560
[Credential-related source omitted] - Access to secretsline 633
[Credential-related source omitted] - Access to secretsline 669
[Credential-related source omitted] - Access to secretsline 670
[Credential-related source omitted] - Access to secretsline 674
[Credential-related source omitted] - Access to secretsline 678
[Credential-related source omitted] - Access to secretsline 682
[Credential-related source omitted] - Access to secretsline 684
[Credential-related source omitted] - Access to secretsline 964
[Credential-related source omitted] - Access to secretsline 1056
[Credential-related source omitted] - Access to secretsline 1057
[Credential-related source omitted] - Access to secretsline 1058
[Credential-related source omitted] - Access to secretsline 1059
[Credential-related source omitted] - Access to secretsline 1061
[Credential-related source omitted] - Network accessline 1127
timeout = int(kwargs.get("timeout", 60)) engine = DefuddleEngine(timeout=timeout) data = engine.fetch(url=url, markdown=True, json_output=True, timeout=timeout) - Network accessline 1128
engine = DefuddleEngine(timeout=timeout) data = engine.fetch(url=url, markdown=True, json_output=True, timeout=timeout) item = { - Network accessline 1129
data = engine.fetch(url=url, markdown=True, json_output=True, timeout=timeout) - Access to secretsline 1186
[Credential-related source omitted] - Access to secretsline 1194
[Credential-related source omitted] - Access to secretsline 1195
[Credential-related source omitted] - Access to secretsline 1196
[Credential-related source omitted] - Access to secretsline 1208
[Credential-related source omitted] - Access to secretsline 1216
[Credential-related source omitted] - Access to secretsline 1217
[Credential-related source omitted] - Access to secretsline 1218
[Credential-related source omitted] - Access to secretsline 1253
[Credential-related source omitted] - Access to secretsline 1272
[Credential-related source omitted] - Access to secretsline 1291
[Credential-related source omitted] - Access to secretsline 1308
[Credential-related source omitted] - Access to secretsline 1328
[Credential-related source omitted] - Access to secretsline 1350
[Credential-related source omitted] - Access to secretsline 1369
[Credential-related source omitted] - Access to secretsline 1370
[Credential-related source omitted] - Access to secretsline 1390
[Credential-related source omitted] - Access to secretsline 1406
[Credential-related source omitted] - Access to secretsline 1428
[Credential-related source omitted] - Access to secretsline 1449
[Credential-related source omitted] - Network accessline 1704
python union_search.py --read-url "https://example.com" - Network accessline 1705
python union_search.py --read-url "https://github.com" --read-timeout 60 --json - Access to secretsline 1759
[Credential-related source omitted] - Network accessline 1849
try: client = UrlToMarkdown(timeout=args.read_timeout) result = client.fetch(args.read_url) - Network accessline 1851
result = client.fetch(args.read_url)
scripts/url_to_markdown/README.md
- Network accessline 61
# 便捷函数(推荐) content = fetch_url_as_markdown("https://example.com/article") - Network accessline 62
content = fetch_url_as_markdown("https://example.com/article") - Network accessline 65
# 高级用法 client = UrlToMarkdown() result = client.fetch( - Network accessline 66
client = UrlToMarkdown() result = client.fetch( url="https://example.com/article", - Network accessline 67
result = client.fetch( - Network accessline 68
url="https://example.com/article", - Network accessline 96
result = client.fetch( - Network accessline 97
url="https://example.com", - Network accessline 111
# 基本使用 python scripts/url_to_markdown/url_to_markdown.py https://example.com - Network accessline 112
python scripts/url_to_markdown/url_to_markdown.py https://example.com - Network accessline 114
# JSON 输出 python scripts/url_to_markdown/url_to_markdown.py https://example.com --json - Network accessline 115
python scripts/url_to_markdown/url_to_markdown.py https://example.com --json - Network accessline 117
# 详细输出 python scripts/url_to_markdown/url_to_markdown.py https://example.com --verbose - Network accessline 118
python scripts/url_to_markdown/url_to_markdown.py https://example.com --verbose - Network accessline 120
# 指定引擎 python scripts/url_to_markdown/url_to_markdown.py https://example.com --prefer-engine jina - Network accessline 121
python scripts/url_to_markdown/url_to_markdown.py https://example.com --prefer-engine jina - Network accessline 122
python scripts/url_to_markdown/url_to_markdown.py https://example.com --prefer-engine defuddle - Network accessline 124
# 禁用自动降级 python scripts/url_to_markdown/url_to_markdown.py https://example.com --no-fallback - Network accessline 125
python scripts/url_to_markdown/url_to_markdown.py https://example.com --no-fallback - Network accessline 127
# 保存到文件 python scripts/url_to_markdown/url_to_markdown.py https://example.com -o output.md - Network accessline 128
python scripts/url_to_markdown/url_to_markdown.py https://example.com -o output.md - Network accessline 136
{ "url": "https://example.com", - Network accessline 137
"url": "https://example.com", - Network accessline 148
{ "url": "https://example.com", - Network accessline 149
"url": "https://example.com", - Network accessline 152
"description": "...", "domain": "example.com", "favicon": "https://example.com/favicon.ico", - Network accessline 153
"domain": "example.com", "favicon": "https://example.com/favicon.ico", "image": "", - Network accessline 154
"favicon": "https://example.com/favicon.ico", - Network accessline 207
client = UrlToMarkdown() # 自动模式 result = client.fetch("https://example.com") - Network accessline 208
result = client.fetch("https://example.com") - Network accessline 238
# Windows: 下载安装 https://nodejs.org/ - Network accessline 270
urls = [ "https://example.com/article1", - Network accessline 271
"https://example.com/article1", - Network accessline 272
"https://example.com/article2", - Network accessline 273
"https://example.com/article3", - Network accessline 278
def process_url(url): return client.fetch(url) - Network accessline 279
return client.fetch(url) - Network accessline 306
# Cache miss from scripts.url_to_markdown import UrlToMarkdown result = UrlToMarkdown().fetch(url) - Network accessline 307
from scripts.url_to_markdown import UrlToMarkdown result = UrlToMarkdown().fetch(url) cache_file.write_text(json.dumps({ - Network accessline 308
result = UrlToMarkdown().fetch(url)
scripts/url_to_markdown/__init__.py
- Executable scriptline 1
Executable file - Network accessline 15
# 简单调用(自动降级) result = fetch_url_as_markdown("https://example.com") - Network accessline 16
result = fetch_url_as_markdown("https://example.com") - Network accessline 18
# 高级用法 client = UrlToMarkdown() result = client.fetch( - Network accessline 19
client = UrlToMarkdown() result = client.fetch( url="https://example.com", - Network accessline 20
result = client.fetch( - Network accessline 21
url="https://example.com",
scripts/url_to_markdown/__main__.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/url_to_markdown/engines/__init__.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Network accessline 53
def fetch( - Network accessline 109
if engine_name == "jina": result = self.jina.fetch( - Network accessline 110
result = self.jina.fetch( - Network accessline 120
) elif engine_name == "firecrawl": result = self.firecrawl.fetch( - Network accessline 121
elif engine_name == "firecrawl": result = self.firecrawl.fetch( url=url, - Network accessline 122
result = self.firecrawl.fetch( - Network accessline 130
result = self.defuddle.fetch( - Network accessline 161
Args: urls: URL 列表 **kwargs: fetch() 方法的其他参数 - Network accessline 163
**kwargs: fetch() 方法的其他参数 - Network accessline 169
for url in urls: try: result = self.fetch(url, **kwargs) - Network accessline 170
try: result = self.fetch(url, **kwargs) results.append(result) - Network accessline 171
result = self.fetch(url, **kwargs) - Network accessline 202
client = UrlToMarkdown(timeout=timeout, prefer_engine=prefer_engine) result = client.fetch( - Network accessline 203
result = client.fetch(
scripts/url_to_markdown/engines/defuddle-node/package-lock.json
- Network accessline 19
"node_modules/@asamuzakjp/css-color": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - Network accessline 20
"version": "3.2.0", "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - Network accessline 21
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - Network accessline 32
"node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - Network accessline 33
"version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - Network accessline 34
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - Network accessline 37
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 38
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 39
"url": "https://github.com/sponsors/csstools" - Network accessline 41
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 42
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 43
"url": "https://opencollective.com/csstools" - Network accessline 51
"node_modules/@csstools/css-calc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - Network accessline 52
"version": "2.1.4", "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - Network accessline 53
"resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - Network accessline 56
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 57
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 58
"url": "https://github.com/sponsors/csstools" - Network accessline 60
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 61
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 62
"url": "https://opencollective.com/csstools" - Network accessline 74
"node_modules/@csstools/css-color-parser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - Network accessline 75
"version": "3.1.0", "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==" - Network accessline 76
"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - Network accessline 79
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 80
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 81
"url": "https://github.com/sponsors/csstools" - Network accessline 83
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 84
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 85
"url": "https://opencollective.com/csstools" - Network accessline 101
"node_modules/@csstools/css-parser-algorithms": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - Network accessline 102
"version": "3.0.5", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf7 - Network accessline 103
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - Network accessline 106
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 107
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 108
"url": "https://github.com/sponsors/csstools" - Network accessline 110
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 111
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 112
"url": "https://opencollective.com/csstools" - Network accessline 123
"node_modules/@csstools/css-tokenizer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - Network accessline 124
"version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - Network accessline 125
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - Network accessline 128
{ "type": "github", "url": "https://github.com/sponsors/csstools" - Network accessline 129
"type": "github", "url": "https://github.com/sponsors/csstools" }, - Network accessline 130
"url": "https://github.com/sponsors/csstools" - Network accessline 132
{ "type": "opencollective", "url": "https://opencollective.com/csstools" - Network accessline 133
"type": "opencollective", "url": "https://opencollective.com/csstools" } - Network accessline 134
"url": "https://opencollective.com/csstools" - Network accessline 142
"node_modules/@mixmark-io/domino": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", - Network accessline 143
"version": "2.2.0", "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", - Network accessline 144
"resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", - Network accessline 149
"node_modules/@xmldom/xmldom": { "version": "0.8.11", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - Network accessline 150
"version": "0.8.11", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", - Network accessline 151
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - Network accessline 159
"node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - Network accessline 160
"version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - Network accessline 161
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - Network accessline 168
"node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - Network accessline 169
"version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - Network accessline 170
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - Network accessline 174
"node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 175
"version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuM - Network accessline 176
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 187
"node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - Network accessline 188
"version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - Network accessline 189
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - Network accessline 199
"node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - Network accessline 200
"version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - Network accessline 201
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - Network accessline 208
"node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - Network accessline 209
"version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - Network accessline 210
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - Network accessline 221
"node_modules/cssstyle/node_modules/rrweb-cssom": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - Network accessline 222
"version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - Network accessline 223
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - Network accessline 227
"node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - Network accessline 228
"version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - Network accessline 229
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - Network accessline 240
"node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - Network accessline 241
"version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - Network accessline 242
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - Network accessline 257
"node_modules/decimal.js": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - Network accessline 258
"version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - Network accessline 259
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - Network accessline 263
"node_modules/defuddle": { "version": "0.10.0", "resolved": "https://registry.npmmirror.com/defuddle/-/defuddle-0.10.0.tgz", - Network accessline 264
"version": "0.10.0", "resolved": "https://registry.npmmirror.com/defuddle/-/defuddle-0.10.0.tgz", "integrity": "sha512-a43juTtHv6Vs4+sxvahVLM5NxoyDsarO1Ag3UxLORI4Fo/nsNFwzDxuQBvosKVGTIRxCwN/mfnWAzNXmQfieqw==", - Network accessline 265
"resolved": "https://registry.npmmirror.com/defuddle/-/defuddle-0.10.0.tgz", - Network accessline 283
"node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - Network accessline 284
"version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - Network accessline 285
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - Network accessline 292
"node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 293
"version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - Network accessline 294
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 306
"node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - Network accessline 307
"version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - Network accessline 308
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - Network accessline 313
}, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 314
"funding": { "url": "https://github.com/fb55/entities?sponsor=1" } - Network accessline 315
"url": "https://github.com/fb55/entities?sponsor=1" - Network accessline 318
"node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 319
"version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - Network accessline 320
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 327
"node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 328
"version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - Network accessline 329
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 336
"node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 337
"version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - Network accessline 338
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 348
"node_modules/es-set-tostringtag": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - Network accessline 349
"version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - Network accessline 350
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - Network accessline 363
"node_modules/form-data": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - Network accessline 364
"version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - Network accessline 365
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - Network accessline 379
"node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 380
"version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - Network accessline 381
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 383
"license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 384
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 385
"url": "https://github.com/sponsors/ljharb" - Network accessline 388
"node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 389
"version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - Network accessline 390
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 407
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 408
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 409
"url": "https://github.com/sponsors/ljharb" - Network accessline 412
"node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 413
"version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - Network accessline 414
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 425
"node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - Network accessline 426
"version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - Network accessline 427
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - Network accessline 432
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 433
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 434
"url": "https://github.com/sponsors/ljharb" - Network accessline 437
"node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 438
"version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - Network accessline 439
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 444
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 445
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 446
"url": "https://github.com/sponsors/ljharb" - Network accessline 449
"node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - Network accessline 450
"version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - Network accessline 451
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - Network accessline 459
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 460
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 461
"url": "https://github.com/sponsors/ljharb" - Network accessline 464
"node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - Network accessline 465
"version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - Network accessline 466
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - Network accessline 476
"node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - Network accessline 477
"version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==" - Network accessline 478
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - Network accessline 488
"node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - Network accessline 489
"version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - Network accessline 490
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - Network accessline 501
"node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - Network accessline 502
"version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - Network accessline 503
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - Network accessline 514
"node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - Network accessline 515
"version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - Network accessline 516
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - Network accessline 526
"node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - Network accessline 527
"version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmP - Network accessline 528
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - Network accessline 532
"node_modules/jsdom": { "version": "24.1.3", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", - Network accessline 533
"version": "24.1.3", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", - Network accessline 534
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", - Network accessline 572
"node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - Network accessline 573
"version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - Network accessline 574
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - Network accessline 578
"node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 579
"version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - Network accessline 580
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 587
"node_modules/mathml-to-latex": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/mathml-to-latex/-/mathml-to-latex-1.5.0.tgz", - Network accessline 588
"version": "1.5.0", "resolved": "https://registry.npmjs.org/mathml-to-latex/-/mathml-to-latex-1.5.0.tgz", "integrity": "sha512-rrWn0eEvcEcdMM4xfHcSGIy+i01DX9byOdXTLWg+w1iJ6O6ohP5UXY1dVzNUZLhzfl3EGcRekWLhY7JT5Omaew==", - Network accessline 589
"resolved": "https://registry.npmjs.org/mathml-to-latex/-/mathml-to-latex-1.5.0.tgz", - Network accessline 597
"node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - Network accessline 598
"version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - Network accessline 599
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - Network accessline 606
"node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - Network accessline 607
"version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - Network accessline 608
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - Network accessline 618
"node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - Network accessline 619
"version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - Network accessline 620
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - Network accessline 624
"node_modules/nwsapi": { "version": "2.2.23", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - Network accessline 625
"version": "2.2.23", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - Network accessline 626
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - Network accessline 630
"node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - Network accessline 631
"version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - Network accessline 632
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - Network accessline 637
}, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 638
"funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } - Network accessline 639
"url": "https://github.com/inikulin/parse5?sponsor=1" - Network accessline 642
"node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - Network accessline 643
"version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - Network accessline 644
"resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - Network accessline 649
}, "funding": { "url": "https://github.com/sponsors/lupomontero" - Network accessline 650
"funding": { "url": "https://github.com/sponsors/lupomontero" } - Network accessline 651
"url": "https://github.com/sponsors/lupomontero" - Network accessline 654
"node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - Network accessline 655
"version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - Network accessline 656
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - Network accessline 663
"node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - Network accessline 664
"version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - Network accessline 665
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - Network accessline 669
"node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - Network accessline 670
"version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - Network accessline 671
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - Network accessline 675
"node_modules/rrweb-cssom": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - Network accessline 676
"version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - Network accessline 677
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - Network accessline 681
"node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 682
"version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - Network accessline 683
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 687
"node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - Network accessline 688
"version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - Network accessline 689
"resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - Network accessline 699
"node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - Network accessline 700
"version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - Network accessline 701
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - Network accessline 705
"node_modules/temml": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.1.tgz", - Network accessline 706
"version": "0.13.1", "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.1.tgz", "integrity": "sha512-/fL1utq8QUD9YpcLeZHPRnp9Cbzbexq5hZl5uSBhf8mNYiKkcS4eYbLidDB+/nF8C+RHAcBQbKw2bKoS83mz1Q==", - Network accessline 707
"resolved": "https://registry.npmjs.org/temml/-/temml-0.13.1.tgz", - Network accessline 715
"node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - Network accessline 716
"version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - Network accessline 717
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - Network accessline 730
"node_modules/tr46": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - Network accessline 731
"version": "5.1.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - Network accessline 732
"resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - Network accessline 742
"node_modules/turndown": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.2.tgz", - Network accessline 743
"version": "7.2.2", "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.2.tgz", "integrity": "sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==", - Network accessline 744
"resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.2.tgz", - Network accessline 752
"node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - Network accessline 753
"version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - Network accessline 754
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - Network accessline 761
"node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - Network accessline 762
"version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - Network accessline 763
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - Network accessline 771
"node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - Network accessline 772
"version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - Network accessline 773
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - Network accessline 783
"node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - Network accessline 784
"version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - Network accessline 785
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - Network accessline 792
"node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - Network accessline 793
"version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - Network accessline 794
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - Network accessline 805
"node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - Network accessline 806
"version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - Network accessline 807
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - Network accessline 814
"node_modules/whatwg-url": { "version": "14.2.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - Network accessline 815
"version": "14.2.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - Network accessline 816
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - Network accessline 827
"node_modules/ws": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - Network accessline 828
"version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - Network accessline 829
"resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - Network accessline 848
"node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - Network accessline 849
"version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - Network accessline 850
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - Network accessline 857
"node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - Network accessline 858
"version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - Network accessline 859
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
scripts/url_to_markdown/engines/defuddle-node/package.json
- Executable scriptline 1
Executable file
scripts/url_to_markdown/engines/defuddle/README.md
- Network accessline 34
# 自动模式 - 优先 Jina,失败时 Defuddle client = UrlToMarkdown() result = client.fetch("https://example.com") - Network accessline 36
result = client.fetch("https://example.com") - Network accessline 38
# 仅使用 Defuddle client = UrlToMarkdown(prefer_engine="defuddle", enable_fallback=False) result = client.fetch("https://example.com") - Network accessline 40
result = client.fetch("https://example.com") - Network accessline 48
client = DefuddleEngine() result = client.fetch(url="https://example.com") - Network accessline 49
result = client.fetch(url="https://example.com") - Network accessline 55
python scripts/url_to_markdown/engines/defuddle/defuddle_cli.py https://example.com - Network accessline 75
npm --prefix scripts/url_to_markdown/engines/defuddle-node install --package-lock-only npm --prefix scripts/url_to_markdown/engines/defuddle-node ci python scripts/url_to_markdown/engines/defuddle/defuddle_cli.py https://example.com --json - Network accessline 77
python scripts/url_to_markdown/engines/defuddle/defuddle_cli.py https://example.com --json - Network accessline 82
- [Defuddle GitHub](https://github.com/kepano/defuddle)
scripts/url_to_markdown/engines/defuddle/__init__.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/url_to_markdown/engines/defuddle/defuddle_cli.py
scripts/url_to_markdown/engines/defuddle_engine.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 43
def fetch( - Network accessline 148
Args: urls: URL 列表 **kwargs: fetch() 方法的其他参数 - Network accessline 150
**kwargs: fetch() 方法的其他参数 - Network accessline 156
for url in urls: try: result = self.fetch(url, **kwargs) - Network accessline 157
try: result = self.fetch(url, **kwargs) results.append(result) - Network accessline 158
result = self.fetch(url, **kwargs)
scripts/url_to_markdown/engines/firecrawl_engine.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 45
def fetch( - Network accessline 94
for url in urls: try: results.append(self.fetch(url, **kwargs)) - Network accessline 95
try: results.append(self.fetch(url, **kwargs)) except Exception as e: - Network accessline 96
results.append(self.fetch(url, **kwargs))
scripts/url_to_markdown/engines/jina_engine.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 15
JINA_READER_BASE_URL = "https://r.jina.ai" - Network accessline 22
将网页 URL 转换为 Markdown 格式。 官方文档:https://jina.ai/reader - Network accessline 23
官方文档:https://jina.ai/reader - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 59
parsed = urlparse(url) if not parsed.scheme: url = f"https://{url}" - Network accessline 61
url = f"https://{url}" - Network accessline 70
def fetch( - Network accessline 122
response = requests.get( - Network accessline 170
Args: urls: URL 列表 **kwargs: fetch() 方法的其他参数 - Network accessline 172
**kwargs: fetch() 方法的其他参数 - Network accessline 178
for url in urls: try: result = self.fetch(url, **kwargs) - Network accessline 179
try: result = self.fetch(url, **kwargs) results.append(result) - Network accessline 180
result = self.fetch(url, **kwargs)
scripts/url_to_markdown/url_to_markdown.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 34
JINA_READER_BASE_URL = "https://r.jina.ai" - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Network accessline 95
parsed = urlparse(url) if not parsed.scheme: url = f"https://{url}" - Network accessline 97
url = f"https://{url}" - Network accessline 116
response = requests.get( - Network accessline 230
def fetch( - Network accessline 315
Args: urls: URL 列表 **kwargs: fetch() 方法的其他参数 - Network accessline 317
**kwargs: fetch() 方法的其他参数 - Network accessline 323
for url in urls: try: result = self.fetch(url, **kwargs) - Network accessline 324
try: result = self.fetch(url, **kwargs) results.append(result) - Network accessline 325
result = self.fetch(url, **kwargs) - Network accessline 356
client = UrlToMarkdown(timeout=timeout) result = client.fetch( - Network accessline 357
result = client.fetch( - Network accessline 415
epilog=""" 示例: %(prog)s https://example.com - Network accessline 416
示例: %(prog)s https://example.com %(prog)s https://example.com --json - Network accessline 417
%(prog)s https://example.com - Network accessline 418
%(prog)s https://example.com --json - Network accessline 419
%(prog)s https://example.com --with-images --save-response - Network accessline 420
%(prog)s https://github.com --target-selector "article" - Access to secretsline 442
[Credential-related source omitted] - Network accessline 448
result = client.fetch(
union_search_cli.py
- Executable scriptline 1
#!/usr/bin/env python3
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 14 facts
- Contacts chatgpt.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/ai_tools/native_search/config.py:14High confidence
- Contacts api.anysearch.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/anysearch/anysearch_search.py:11High confidence
- Contacts www.baidu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/baidu/baidu_no_api.py:35High confidence
- Contacts qianfan.baidubce.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/baidu/baidu_search.py:21High confidence
- Contacts dashscope.aliyuncs.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/bailian/bailian_search.py:11High confidence
- Contacts cn.bing.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/bing/bing_cn_no_api.py:22High confidence
- Contacts www.bing.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/bing/bing_int_no_api.py:22High confidence
- Contacts search.brave.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/brave/brave_search.py:15High confidence
- Contacts api.deepseek.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/deepseek/deepseek_search.py:11High confidence
- Contacts duckduckgo.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/duckduckgo/duckduckgo_search.py:29High confidence
- Contacts api.duckduckgo.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/duckduckgo_instant/duckduckgo_instant.py:23High confidence
- Contacts www.ecosia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/ecosia/ecosia_no_api.py:23High confidence
- Contacts api.exa.ai, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/exa/exa_search.py:30High confidence
- Contacts api.firecrawl.dev, which SKILL.md, the README and the plugin manifest do not mentionscripts/channels/firecrawl/firecrawl_search.py:13High confidence
Signal confidence: 486 facts
- Network access in prose of documentationREADME.en.md:9Low confidence
- Network access in prose of documentationREADME.en.md:10Low confidence
- Network access in prose of documentationREADME.en.md:11Low confidence
- Network access in prose of documentationREADME.en.md:12Low confidence
- Network access in prose of documentationREADME.en.md:13Low confidence
- Network access in code of documentationREADME.en.md:45Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.en.md:63Low confidence
- Network access in code of documentationREADME.en.md:123Low confidence
- Network access in code of documentationREADME.en.md:124Low confidence
- Access to secrets in prose of documentationREADME.en.md:147Low confidence
- Access to secrets in prose of documentationREADME.en.md:167Low confidence
- Access to secrets in prose of documentationREADME.en.md:169Low confidence
- Access to secrets in prose of documentationREADME.en.md:198Low confidence
- Access to secrets in prose of documentationREADME.en.md:199Low confidence
- Access to secrets in code of documentationREADME.en.md:237Low confidence
- Network access in prose of documentationREADME.en.md:317Low confidence
- Network access in prose of documentationREADME.en.md:393Low confidence
- Network access in prose of documentationREADME.en.md:412Low confidence
- Network access in prose of documentationREADME.en.md:413Low confidence
- Network access in prose of documentationREADME.en.md:414Low confidence
- Network access in prose of documentationREADME.en.md:415Low confidence
- Network access in prose of documentationREADME.en.md:416Low confidence
- Network access in prose of documentationREADME.en.md:417Low confidence
- Network access in prose of documentationREADME.en.md:418Low confidence
- Network access in prose of documentationREADME.md:9Low confidence
- Network access in prose of documentationREADME.md:10Low confidence
- Network access in prose of documentationREADME.md:11Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in code of documentationREADME.md:45Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:63Low confidence
- Network access in code of documentationREADME.md:123Low confidence
- Network access in code of documentationREADME.md:124Low confidence
- Access to secrets in prose of documentationREADME.md:147Low confidence
- Access to secrets in prose of documentationREADME.md:167Low confidence
- Access to secrets in prose of documentationREADME.md:169Low confidence
- Access to secrets in prose of documentationREADME.md:198Low confidence
- Access to secrets in prose of documentationREADME.md:199Low confidence
- Network access in prose of documentationREADME.md:315Low confidence
- Network access in prose of documentationREADME.md:391Low confidence
- Network access in prose of documentationREADME.md:410Low confidence
- Network access in prose of documentationREADME.md:411Low confidence
- Network access in prose of documentationREADME.md:412Low confidence
- Network access in prose of documentationREADME.md:413Low confidence
- Network access in prose of documentationREADME.md:414Low confidence
- Network access in prose of documentationREADME.md:415Low confidence
- Network access in prose of documentationREADME.md:416Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:12Low confidence
- Network access in code of the SKILL.mdSKILL.md:35High confidence
- Network access in code of the SKILL.mdSKILL.md:36High confidence
and 436 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path CLAUDE.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.