news 2026/9/28 7:07:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 完成账号注册,然后进控制台创建 Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在 API Keys 页面点创建,复制生成的 Key 保存好。API Keys 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,后续要加白名单或换 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_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 试一下不同模型对网页文本的理解效果,挑一个在中文语义和长文本上表现稳定的。选好之后,把模型名称记下来,下一步写进 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="你的Key"

Windows 下用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_url="https://taotoken.net/api", api_key=os.environ["TAOTOKEN_API_KEY"] ) result = client.skills.extract( skill="content-extract", url="https://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 class="promo-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_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它在调用配额和并发上更适合持续跑的任务。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有完整的参数说明和示例,遇到配置细节可以对照查。

实际用的时候有个小技巧:把exclude_selectors按站点维护成不同的配置文件,提取前根据域名加载对应的排除规则。这样通用识别兜底,站点规则补刀,提取纯净度会明显上一个台阶。另外,提取结果建议加一层缓存,相同 URL 短期内不重复调用,既省配额又快。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 7:06:10

考虑源荷双侧不确定性的含风电电力系统低碳调度两阶段随机优化实现

这几年做电力系统优化调度相关的项目&#xff0c;绕不开一个词&#xff1a;不确定性。尤其是风电大规模并网之后&#xff0c;源侧的出力波动和负荷侧的预测偏差叠加在一起&#xff0c;让传统的确定性调度模型越来越吃力。我最近完整跑通了一个考虑源荷两侧不确定性的含风电电力…

作者头像 李华
网站建设 2026/9/28 7:04:38

Dev-C++编译器路径设置全攻略:解决g++ not found与编译失败

1. 先搞清楚Dev-C为什么要设置编译器路径很多人第一次打开Dev-C&#xff0c;兴冲冲写了第一行Hello World&#xff0c;点下“编译运行”按钮&#xff0c;结果弹出一串英文报错&#xff0c;什么g.exe not found、source file not compiled&#xff0c;整个人直接懵掉。这个问题的…

作者头像 李华
网站建设 2026/9/28 7:04:36

Jev模型研究:System One与RLCD校准的决策式AI落地实践

1. 从生成式到决策式&#xff1a;Jev 模型研究的核心命题1.1 为什么“会说话”不等于“会决策”过去两年&#xff0c;大家把大量精力放在让模型“说得好”上——写文案、编代码、做总结&#xff0c;这些都是生成式大模型的强项。但真正落到业务里&#xff0c;你会发现一个尴尬的…

作者头像 李华