网站板块链接提取与 ima 导入
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_4c9c5ac8/ima-links。
技能介绍
当你需要把某个政府门户、新闻站或文档站特定栏目下的全部文章链接,批量抓取并导入腾讯 ima 知识库时,手动复制粘贴不仅效率低下,还极易出错。这些网站往往采用“列表页 + 详情页”的结构,且 HTML 编写规范各异:链接可能使用单引号或双引号;列表嵌套可能是 <ul>/<li>/<a> 组合;同一个列表页还可能混入多个板块的链接(通过不同的 catId 区分),甚至需要翻页。此外,将提取的链接导入 ima 时,如何正确处理个人库与订阅库的鉴权差异、如何规避 folderid 与 kbid 混淆导致的报错,都是实际工程中常见的痛点。
核心工作流
ima-links 将这套“定位板块 → 提取链接 → 导入 ima”的流程固化成了标准化的脚本与工作流。
- 智能链接提取:
scripts/extract_links.py是一个仅依赖 Python 3 标准库的提取器。它能自动兼容不同的引号格式与列表结构,解析 HTML 时会自动剥离标签并合并标题中的多余空白。 - 精准的板块过滤:面对同页混排多个板块的情况,可通过
--pattern参数传入catId或路径片段(例如c409088,甚至支持跨板块的正则表达式如c40909[01])来精准过滤,确保不混入导航或兄弟板块的无关链接。对于相对路径,脚本会自动拼接为同域的绝对链接,并输出编号清单与 TSV 文件。 - 自动化 ima 导入:
scripts/import_to_ima.cjs复用了ima-skills的 API 客户端。它会智能解析目标知识库,优先搜索“我加入的订阅库”(search_knowledge_base),失败则回退查询个人库(get_addable_knowledge_base_list)。导入时,脚本会自动处理每次最多 10 个 URL 的批量限制,且 ima 服务端自带 URL 去重,重复导入非常安全。
适用边界与避坑指南
- 微信公众号抓取限制:严禁尝试直接通过本地脚本批量抓取
mp.weixin.qq.com的文章正文,这极易触发微信的风控机制(“环境异常”验证页),多 UA 轮换或冷却时间均无法绕过。正确的工程实践是:仅提取公众号文章链接 → 交给import_urls接口 → 由 ima 服务端自动抓取正文。 - 首页不全的陷阱:大多数网站的首页或栏目首页为了排版,每个板块通常只展示 4 篇左右的最新文章。必须通过搜索或分析页面结构,找到该板块专属的完整列表页(URL 通常形如
.../xxx/index.html),才能拿到全量文章。 - folderid 与 kbid 的区别:在导入订阅库时,
import_urls所需的folder_id绝不等于知识库 ID(kb_id)。必须通过get_knowledge_list获取根目录返回的真实folder_id(可从current_path或条目的parent_folder_id中提取),否则会直接抛出“文件夹不存在”的 API 错误。
使用场景
- 政府门户「通知公告」板块新发布一批文件,需要把该栏目全部历史文章链接提取出来,批量导入订阅知识库
- 新闻网站列表页混有多个板块的链接,需要按 catId 过滤,只提取本栏目文章并导出 TSV 清单
- 协会官网匹克球栏目文章更新频繁,需要把该栏目全部文章链接提取出来,导入 ima 个人知识库统一管理
- 文档站列表页有多页分页,需要把全部分页中的文章链接都抓取下来,保存成清单文件供后续处理
适合人员
- 政策研究人员:需要把政府门户政策法规、政策解读等板块的文章链接批量导入 ima 知识库,长期积累参考资料
- 内容运营或编辑:负责协会官网、新闻站某个栏目的内容归档,需要定期提取该栏目全部文章链接并交付
- 知识库管理员:管理团队订阅的 ima 知识库,需要把外部网站栏目文章批量导入,供团队成员检索
- 数据分析或爬虫工程师:需要处理结构各异的列表页,按 catId 过滤并翻页抓取文章链接,导出结构化清单