TTokenySpace
返回 Skills 列表

Web Crawler Engine Free

轻量级网页和社区数据抓取工具,支持本地归档、全文搜索与数据新鲜度检查,适合个人与小型团队使用。

#中文
0

安装到 Tokeny(自动)

下载 ZIP
安装"web-crawler-engine-free"技能
技能信息:
- 名称: Web Crawler Engine Free
- 标识: web-crawler-engine-free
- 描述: 轻量级网页和社区数据抓取工具,支持本地归档、全文搜索与数据新鲜度检查,适合个人与小型团队使用。
- 版本: 1.0.0
下载地址:
https://www.tokeny.space/api/skills/web-crawler-engine-free/download
继续

复制上方内容到 Tokeny 客户端并在会话中发送即可自动安装;也可直接 下载 ZIP并拖动到技能窗口安装。

SKILL.md

网页抓取引擎(免费版)

概述

在信息快速流转的今天,将重要的网页内容与社区讨论归档到本地、建立可搜索的知识库,是避免信息丢失、提升检索效率的关键。本引擎将数据抓取与归档流程整理为结构化指南,帮助你在数分钟内完成数据采集与检索。

免费版聚焦于日常使用最高频的四大能力:网页内容抓取、社区消息归档、本地全文搜索、数据新鲜度检查。

核心能力

能力一:网页内容抓取

提供结构化的网页内容抓取模板,支持 HTML 解析、文本提取、链接发现。

输入格式

参数名类型必填说明
inputstring网页抓取引擎(免费版)处理的输入数据或指令
optionsobject附加配置选项,如模式选择、格式偏好等
callback_urlstring异步处理完成后的回调通知URL
# 抓取网页并提取正文
curl -s "https://example.com/article" | \
  python -c "
import sys, html.parser
class TextExtractor(html.parser.HTMLParser):
    def __init__(self):
        super().__init__()
        self.text = []
        self.skip = False
    def handle_starttag(self, tag, attrs):
        if tag in ('script', 'style'): self.skip = True
    def handle_endtag(self, tag):
        if tag in ('script', 'style'): self.skip = False
    def handle_data(self, data):
        if not self.skip: self.text.append(data.strip())
p = TextExtractor()
p.feed(sys.stdin.read())
print(' '.join(t for t in p.text if t))
"

输入: 用户提供能力一:网页内容抓取所需的指令和必要参数。 处理: 解析能力一:网页内容抓取的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力一:网页内容抓取的响应数据,包含状态码、结果和日志。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

能力二:社区消息归档

将社区频道(如 Discord、Slack)的消息归档到本地数据库,建立可检索的历史记录。

归档维度说明存储字段
消息内容正文与附件 URLcontent, attachments
发送者用户名与 IDauthor, author_id
时间戳发送时间与编辑时间timestamp, edited_at
频道信息频道名与 IDchannel, channel_id
回复关系被回复消息 IDreply_to

输入: 用户提供能力二:社区消息归档所需的指令和必要参数。 处理: 解析能力二:社区消息归档的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力二:社区消息归档的响应数据,包含状态码、结果和日志。

能力三:本地全文搜索

基于 SQLite FTS5 建立全文索引,支持快速关键词检索与高亮显示。

# 已知限制
search --limit 20 "关键词"
# ...
# 按频道与时间范围搜索
messages --channel '#tech-news' --days 7
# ...
# 查看最近私信
dms --last 20

输入: 用户提供能力三:本地全文搜索所需的指令和必要参数。 处理: 解析能力三:本地全文搜索的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力三:本地全文搜索的响应数据,包含状态码、结果和日志。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

能力四:数据新鲜度检查

在查询前检查归档数据的新鲜度,避免使用过时数据回答问题。

# 检查归档状态
status --json
# ...
# 诊断工具
doctor
# ...
# 示例
# {
#   "last_sync": "2026-07-18T10:00:00Z",
#   "freshness": "fresh",     # fresh / stale / unknown
#   "message_count": 15423,
#   "channels": 12,
#   "gaps": []
# }

输入: 用户提供能力四:数据新鲜度检查所需的指令和必要参数。 处理: 解析能力四:数据新鲜度检查的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回能力四:数据新鲜度检查的响应数据,包含状态码、结果和日志。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:轻量级网页与社区、数据抓取工具、支持本地归档、搜索查询与新鲜度、网页抓取引擎免费、版是一套面向个人、开发者与小型团队、的数据抓取与归档、帮助用户高效采集、网页内容与社区消、息并建立本地可搜、索的归档库、核心能力、提供网页内容抓取、社区频道消息归档、查询接口、Use、when、需要数据库操作、数据存储管理时使、不适用于数据库架、构设计决策等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

使用场景

场景一:技术资料离线归档

开发者将常参考的技术文档、博客文章抓取到本地,断网时也可查阅。

场景二:社区讨论采集

将技术社区的优质讨论归档,使用全文搜索快速查找历史解决方案。

场景三:研究数据收集

研究人员批量采集特定主题的网页内容,建立本地研究语料库。

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

典型提问模板

我想抓取某个技术博客的全部文章并归档到本地,如何实现?
归档的社区消息如何按关键词搜索并限定时间范围?
如何检查我的归档数据是否是最新的?

Agent 会根据问题匹配对应知识条目,输出包含操作步骤、命令模板、注意事项的完整回答。

配置示例

归档数据库结构

-- 归档消息表
CREATE TABLE messages (
    id TEXT PRIMARY KEY,
    channel_id TEXT NOT NULL,
    channel_name TEXT,
    author_id TEXT NOT NULL,
    author_name TEXT,
    content TEXT,
    attachments TEXT,        -- JSON 数组
    timestamp DATETIME NOT NULL,
    edited_at DATETIME,
    reply_to TEXT
);
# ...
-- 全文搜索索引
CREATE VIRTUAL TABLE messages_fts USING fts5(
    content, author_name, channel_name,
    content='messages',
    content_rowid='rowid'
);
# ...
-- 频道元数据
CREATE TABLE channels (
    channel_id TEXT PRIMARY KEY,
    channel_name TEXT NOT NULL,
    last_synced DATETIME,
    message_count INTEGER DEFAULT 0
);

新鲜度策略配置

# 新鲜度检查策略
freshness:
  stale_threshold_hours: 24    # 超过24小时标记为stale
  auto_sync: false              # 免费版不自动同步
  sync_on_query: false          # 查询时不自动触发同步
# ...
search:
  default_limit: 20             # 默认返回结果数
  max_limit: 100                # 单次最大结果数
  highlight: true               # 关键词高亮

最佳实践

实践一:先检查新鲜度再查询

回答时效性问题时,先检查归档新鲜度。数据过时时提示用户手动同步或直接查询在线源。

实践二:限制查询结果数量

无限制的查询会消耗大量内存与时间,默认限制 20 条,按需调整上限。

实践三:只读查询保护数据

归档数据应视为只读,避免误操作修改或删除。需要修改时使用 --unsafe --confirm 并经过人工审核。

实践四:隐私数据不外传

归档中可能包含用户私信等敏感信息,导出快照时务必排除敏感内容与用户凭据。

实践五:定期清理过期数据

设置保留策略,定期清理超过保留期限的归档数据,控制存储空间增长。

已知限制

  • 本skill的能力范围受限于核心能力章节中定义的功能,不支持超出范围的操作
  • 复杂业务场景建议结合人工经验判断
  • 执行效率受模型能力与网络环境影响
  • 当前为免费版本,如需完整功能请升级到付费版获取全部能力

常见问题

Q1:抓取被网站封禁怎么办?

遵守网站的 robots.txt 与服务条款,设置合理的请求间隔(建议 1-3 秒),使用 User-Agent 标识身份。高频抓取应使用官方 API 而非网页爬取。

Q2:全文搜索不返回结果?

检查 FTS 索引是否已正确创建并同步。使用 doctor 命令诊断索引状态,必要时重建索引。

Q3:归档数据占用空间太大?

对历史数据设置保留期限,过期数据归档到压缩文件后从主库删除。附件 URL 仅存储链接不下载文件。

Q4:如何只同步特定频道?

使用 --channel 参数指定频道,避免全量同步消耗过多时间与带宽。

Q5:数据新鲜度显示 unknown?

表示从未同步过该数据源。首次使用需手动执行同步命令建立基线数据。

依赖说明

运行环境

  • Agent 平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux
  • 存储: 本地磁盘(SQLite 数据库)

依赖详情

依赖项类型是否必需获取方式
LLM APIAPI必需由Agent平台内置LLM提供
SQLite数据库必需Python 内置 sqlite3 模块
curl / HTTP 客户端工具推荐系统自带或安装
Python 3.8+运行时推荐官方网站下载

API Key 配置

  • 社区 Bot Token: 若需归档社区消息,通过环境变量注入对应平台的 Bot Token
  • 禁止: 在代码、脚本、SKILL.md 中硬编码任何凭据
  • 禁止: 提取用户 Token 冒充用户身份访问平台
  • 推荐: 仅使用 Bot API 合法采集公开数据

可用性分类

  • 分类: MD+EXEC(纯Markdown指令,核心功能需要exec执行抓取与查询命令)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent完成数据抓取与归档查询

免费版限制

本免费体验版限制以下高级功能:

  • 增量同步与自动刷新调度(仅专业版提供)
  • SQL 高级分析与聚合统计(仅专业版提供)
  • 批量抓取与并发调度(仅专业版提供)
  • 多格式数据导出(CSV/JSON/Excel)(仅专业版提供)
  • 监控告警与同步异常通知(仅专业版提供)
  • 分布式归档与云端备份(仅专业版提供)

解锁全部功能请使用专业版:web-crawler-engine-pro

错误处理

错误场景原因处理方式
配置错误参数缺失或格式错误检查依赖说明中的配置要求
运行时错误运行环境不满足确认运行环境符合依赖说明
网络错误连接超时或不可达执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

示例

基本用法

输入:用户提供操作指令和必要参数

输出:返回执行结果,包含操作状态和输出数据

用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功

输出格式

{
  "success": true,
  "data": {
    "result": "网页抓取引擎(免费版)处理结果",
    "execution_time": "0.5s",
    "metadata": {
      "version": "1.0",
      "processor": "web crawler engine"
    }
  },
  "execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
  "error": null
}

评论

加载中…