ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenClaw content-extract 技能实战:用 TaoToken 统一 Key 打通网页正文提取与广告过滤链路

OpenClaw content-extract 技能实战:用 TaoToken 统一 Key 打通网页正文提取与广告过滤链路 1. 网页正文提取为什么总是不干净做数据采集和知识库构建的朋友大概率都遇到过这种情况用爬虫把网页 HTML 抓下来满心欢喜地丢给模型做摘要结果模型一本正经地总结了一堆“点击领取优惠券”“相关阅读xxx”“版权所有”之类的内容。正文没提多少广告和导航倒是抓得挺全。这个问题的根源在于现代网页早就不是一篇干净的文章了。一个典型的新闻详情页正文可能只占整个 HTML 的 20%剩下的 80% 是顶部导航、侧边广告、内嵌推广、底部推荐、评论区、版权声明。传统的正则匹配和简单 DOM 规则面对千变万化的 class 命名和嵌套结构基本是按下葫芦浮起瓢——这个站调好了换个站又失效。OpenClaw 的 content-extract 技能就是冲着这个痛点来的。它把网页当成一个视觉语义的整体来理解而不是死抠标签。它能判断哪块区域是“大段连贯文字”哪块是“高链接密度的导航”哪块是“带促销词的广告”最终输出一份干净的 Markdown。适合谁用做舆情监控的、搭个人知识库的、给大模型准备训练数据的以及任何需要把网页变成可读文本的人。但这里有个现实问题content-extract 这类技能背后要调用模型做视觉和语义分析你得有个稳定的模型 API 通道。如果每个技能都单独配一套 Key管理起来很麻烦。这篇就讲怎么用 TaoToken 统一 Key 把这条链路打通从配置到验证一次跑通。2. TaoToken 统一 Key 的前置准备在动手配 OpenClaw 之前先把模型调用通道准备好。TaoToken 在这里扮演的角色是统一的 API 入口——你不需要为每个模型或每个技能单独申请不同的 Key一个 Key 就能覆盖 content-extract 背后需要的模型调用。先注册并拿到 API Key。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 完成账号注册然后进控制台创建 Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面点创建复制生成的 Key 保存好。API Keys 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 后续要加白名单或换 Key 都从这里进。TaoToken 的 API 基础地址是 https://taotoken.net/api 注意这个地址不带 UTM 参数配置里直接写这个就行。它兼容常见的 OpenAI 风格调用格式所以 OpenClaw 里配置 base_url 和 api_key 就能接上。注意API Key 不要硬编码在会提交到 Git 的配置文件里。建议用环境变量注入或者放在本地不纳入版本管理的 .env 文件中。如果你还没想好 content-extract 具体用哪个模型可以先到模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 试一下不同模型对网页文本的理解效果挑一个在中文语义和长文本上表现稳定的。选好之后把模型名称记下来下一步写进 config.toml。3. OpenClaw content-extract 的 config.toml 骨架OpenClaw 的技能配置走 config.toml 文件。下面这份骨架是我实测下来比较稳的结构你可以直接复制后改 Key 和模型名。核心思路是把模型调用统一指向 TaoToken 的 API 地址content-extract 技能只负责提取逻辑模型通道交给 TaoToken。# ~/.openclaw/config.toml [llm] # 统一走 TaoToken 的 API 通道 provider openai-compatible base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} # 从环境变量读取别写死 model gpt-4o-mini # 换成你在模型对话里选定的模型 timeout 60 max_retries 3 [skills.content-extract] enabled true # 输出格式固定为 markdown output_format markdown # 是否保留正文中的图片 include_images false # 是否保留超链接 include_links true # 显式排除的 CSS 选择器按站点补充 exclude_selectors [ .ad, .ads, .advertisement, #sidebar, .sidebar, .comments, #comments, .related-posts, .recommend ] # 显式指定正文容器命中则优先使用提升精度和速度 include_selectors [ article, main, .article-content, .post-content, .entry-content ] # 页面语言帮助语义模型判断 language zh # 单次提取最大字符数防止超长页面拖慢 max_length 20000 [skills.content-extract.render] # 是否启用 JS 渲染动态页面需要 enable_js true # 渲染等待时间毫秒 wait_ms 1500几个参数值得单独说。base_url指向 TaoToken 的 API 地址后OpenClaw 所有走 llm 段的技能都会用这个通道不用每个技能单独配。exclude_selectors和include_selectors是提升提取质量的关键——前者屏蔽已知噪音后者锁定正文区域。enable_js打开后能处理动态加载的页面但会慢一些静态页面可以关掉。配置写完后把 API Key 注入环境变量export TAOTOKEN_API_KEY你的KeyWindows 下用set TAOTOKEN_API_KEY你的Key或者写进系统环境变量。确认环境变量生效echo $TAOTOKEN_API_KEY能打印出 Key 就说明注入成功。这一步别跳过很多人配置不生效就是因为环境变量没读到。4. 端到端验证从 URL 到干净 Markdown配置就绪后跑一次完整的提取验证。OpenClaw 的 content-extract 可以通过 CLI 调用也可以走 Python SDK。先用 CLI 快速验证通道是否通。openclaw skill run content-extract \ --url https://example.com/news/article-123 \ --output result.md如果配置正确命令会输出提取进度最后在当前目录生成 result.md。打开看看内容——正常情况下导航栏、侧边广告、底部推荐、评论区都应该被过滤掉只剩下标题和正文段落格式是标准 Markdown。想更细粒度地控制用 Python SDK 调用import os from openclaw import OpenClawClient client OpenClawClient( base_urlhttps://taotoken.net/api, api_keyos.environ[TAOTOKEN_API_KEY] ) result client.skills.extract( skillcontent-extract, urlhttps://example.com/news/article-123, options{ format: markdown, include_images: False, exclude_selectors: [.ad, .comments, #sidebar], language: zh } ) print(result.content)跑通后result.content就是干净的 Markdown 正文。我试过拿一个结构很乱的科技新闻页做对比原始 HTML 里正文只占一小块周围全是推广和推荐提取后输出的 Markdown 只有标题和四段正文广告和推荐一条没带进来。验证成功的标志有三个一是输出是合法 Markdown标题层级正确二是正文段落完整没有被截断三是广告、导航、评论区的文字没有混进来。如果这三点都满足说明 TaoToken 通道和 content-extract 技能已经打通。5. 本篇常见错误排查配置和调用过程中有几个坑出现频率特别高提前列出来省得你踩。报 401 或鉴权失败八成是 API Key 没读到。先确认echo $TAOTOKEN_API_KEY有输出再检查 config.toml 里写的是${TAOTOKEN_API_KEY}而不是硬编码的空字符串。如果 Key 本身没问题去 API Keys 页面确认这个 Key 没有被禁用或删除。提取结果为空或只有标题通常是include_selectors命中了但容器里没内容或者max_length设太小把正文截没了。先把include_selectors清空让技能走全页智能识别同时把max_length调到 50000 试一次。如果还不行检查页面是不是需要登录才能看到正文。广告没过滤干净自动识别对某些伪装成正文的推广块可能失效。这时候用exclude_selectors手动补刀。打开浏览器开发者工具找到广告块的 class 或 id加进排除列表。比如某站的推广块是div classpromo-box就加.promo-box。动态内容抓不到确认enable_js true且wait_ms足够长。有些页面加载慢1500 毫秒不够调到 3000。如果还是不行说明页面交互复杂比如要点击“展开全文”这种情况先用 Playwright 拿到渲染后的 HTML再通过html参数传给 content-extract绕过页面获取环节。调用超时长页面加 JS 渲染容易超时。把timeout从 60 调到 120同时确认 TaoToken 通道本身没有限流。如果批量提取控制并发数别一次性发太多请求。中文乱码language设成zh并确认传入的 HTML 是 UTF-8 编码。如果是从其他工具拿到的 HTML先做一次编码转换再传。排查顺序建议从鉴权开始再到选择器最后到渲染参数。大部分问题集中在前两步。6. 把这条链路用起来content-extract 加 TaoToken 统一 Key 的组合本质上解决的是“网页到干净文本”这一段脏活。提取出来的 Markdown 可以直接进知识库、喂给摘要模型、或者作为训练数据预处理的一环。如果你后面要做长期的编码或 Agent 任务比如批量处理成千上万个页面、把提取结果自动入库可以考虑 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它在调用配额和并发上更适合持续跑的任务。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有完整的参数说明和示例遇到配置细节可以对照查。实际用的时候有个小技巧把exclude_selectors按站点维护成不同的配置文件提取前根据域名加载对应的排除规则。这样通用识别兜底站点规则补刀提取纯净度会明显上一个台阶。另外提取结果建议加一层缓存相同 URL 短期内不重复调用既省配额又快。
返回列表