
wigolo 提取器插件开发指南3步接入自己的内容解析逻辑【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolowigolo 是一个本地优先的 AI 编程代理上网工具提供搜索、抓取、爬取与研究能力全程无需 API 密钥、不依赖云端每次查询成本为 $0。当你常抓的某些网站公司文档站、内部 Wiki、结构奇特的页面提取效果不佳时wigolo 允许你通过提取器插件extractor plugin接入自己的内容解析逻辑用不到 100 行代码让指定 URL 由你的解析器接管。本文带你完成一次完整的实战。wigolo 提取器插件是什么wigolo 从~/.wigolo/plugins目录加载两类插件可用WIGOLO_PLUGINS_DIR环境变量覆盖插件类型作用搜索引擎插件接入多引擎搜索调度池提取器插件对声称的 URL 优先把页面转成 Markdown提取器插件的定位是站点专属解析器内置提取流水线在遇到某个网站提取质量差时你不需要改 wigolo 源码只需提供一个插件它会在通用流水线之前被咨询。插件就是普通的 Node 模块没有构建步骤、没有框架依赖。相关设计文档docs/plugins.md提取器插件契约的 3 个要素一个合法的提取器插件必须导出一个extractor对象契约定义见 src/types.tsexport const extractor { name: my-docs-extractor, // 1. 唯一名称重名会被跳过 canHandle(url, html) { /* 2. 判断是否认领该 URL */ }, extract(html, url) { /* 3. 返回结构化结果或 null 交回内置流水线 */ }, };三个要素缺一不可加载时会被 src/plugins/validate.ts 逐项校验name非空字符串。重复名称会在注册时被 src/plugins/loader.ts 检测并跳过canHandle(url, html)决定哪些 URL 归你处理例如只认领https://docs.example.com/*extract(html, url)返回ExtractionResult对象返回null表示我不处理交回内置提取流水线。ExtractionResult的核心字段完整定义见 src/types.ts{ title: 页面标题, markdown: 提取出的正文 Markdown, metadata: { description: 可选描述, author: 可选作者 }, links: [], images: [], extractor: site-specific } 小技巧返回的site_data字段还可以携带站点专属的结构化数据如价格、帖子分数调用方无需再从 Markdown 正文里反解析。编写你的第一个内容解析插件一个插件就是一个目录package.json的main指向入口模块。以仓库自带的 examples/plugin-search-engine 为起点把导出换成extractor即可。目录结构my-docs-extractor/ ├── package.json └── index.mjspackage.json只需三行{ name: my-docs-extractor, version: 1.0.0, main: index.mjs }index.mjs最小可用示例示意实际解析逻辑自写export const extractor { name: my-docs-extractor, canHandle(url) { return url.startsWith(https://docs.example.com/); }, extract(html, url) { const title html.match(/title(.*)\/title/)?.[1] ?? url; const body html.match(/main([\s\S]*?)\/main/)?.[1] ?? ; return { title, markdown: body.replace(/[^]/g, ).trim(), metadata: {}, links: [], images: [], extractor: site-specific, }; }, };3 个命令安装与验证插件把插件放进插件目录后用命令行完成信任与验证详见 docs/plugins.mdwigolo plugin add 插件仓库的 git 地址 # 克隆前会提示确认信任 wigolo plugin list [--json] # 查看已装插件 wigolo plugin validate [--json] # 校验导出是否符合契约⚠️plugin add会要求你确认后才安装——插件代码会运行在你的 wigolo 进程内拥有你的凭据与网络访问权限只安装你信任或已读过的代码。validate会逐个加载插件并精确报告不符合契约的原因例如extractor export exists but does not match the Extractor interface (requires: name: string, canHandle: function, extract: function)插件提取器与内置流水线的协作顺序理解执行顺序你才能判断该写canHandle还是该优化extract。wigolo 内置了一批站点提取器GitHub、Stack Overflow、MDN、Reddit、YouTube、Amazon 等统一注册在 src/extraction/v1/site-extractors.ts插件提取器通过注册表并入同一列表v1 路由 src/extraction/v1/routed.ts 会先让它们跑插件/站点提取器先跑canHandle返回true的提取器拿到首发机会返回null即交棒没处理成功就自动回落内置的 defuddle/readability 通用流水线页面不会死在你的插件里失败防御到底package.json缺失、入口报错、导出非法……都只会让这一个插件被跳过并记录错误其他插件和服务本身照常工作见 src/plugins/loader.ts。装好后把 wigolo 接进 Claude Code、Codex 等 AI 编程代理代理抓取页面时就会走你的解析逻辑常见问题与排查清单症状原因与对策plugin validate报 no main fieldpackage.json缺少main补上入口文件路径报 entry point not foundmain指向的文件不存在检查相对路径插件加载了但不生效canHandle没匹配到目标 URL注意它还会收到html参数可按页面特征判断两个插件同时认领同一 URL加载顺序中先注册的生效后注册的因重名name被跳过重命名即可想要更细的日志查看服务日志中 loaded plugin extractor 与 plugin validation failed 记录排查入口与完整故障说明docs/troubleshooting.md、docs/configuration.md小结提取器插件 一个目录 package.json 导出extractor的模块无构建、无框架契约只有三要素name/canHandle/extract返回null自动交回内置流水线用wigolo plugin add/list/validate三命令完成安装、查看与契约校验插件在通用流水线之前执行是修复某个站点提取效果差的官方推荐姿势。至此你已经掌握了为 wigolo 接入自己内容解析逻辑的完整流程——从契约理解、插件编写到安装验证全部本地完成、零 API 成本。【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考