k-skill 中 GeekNews 搜索技能实战指南:基于公开 RSS/Atom 的只读查询、保守检索与离线验证

发布时间:2026/9/16 15:20:17
k-skill 中 GeekNews 搜索技能实战指南:基于公开 RSS/Atom 的只读查询、保守检索与离线验证 k-skill 中 GeekNews 搜索技能实战指南基于公开 RSS/Atom 的只读查询、保守检索与离线验证【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill导读geeknews-search是 k-skill 仓库中面向 GeekNews韩国开发者新闻社区的只读查询技能它不依赖任何非公开 API 或登录会话仅通过 GeekNews 公开的 RSS/Atom feedhttps://feeds.feedburner.com/geeknews-feed即可完成最新文章列表、标题/摘要/作者关键词搜索与单篇详情查看三项核心能力。读完本文你将掌握该技能的 CLI 调用方式、JSON 输出结构、底层解析实现原理以及如何利用仓库内置的 fixture 进行完全离线的功能验证。完整功能说明可参见 geeknews-search 功能文档技能入口元数据位于 geeknews-search/skill.json。功能范围与定位RSS-first / 只读该技能在 v1 阶段被明确定义为RSS-first / 只读read-only范围这是理解整个技能设计的核心前提仅使用公开 feedhttps://feeds.feedburner.com/geeknews-feed无任何鉴权要求覆盖能力仅限最新文章列表、关键词搜索、详情查看明确不涉及评论、投票、登录、个人化状态等交互型功能。这一设计在 skill.json 中通过profiles: [lookup]和source: geeknews-rss得到印证——它被归类为纯查询型lookup技能数据源是 GeekNews RSS。对应的 instruction.md 也强调了三条硬性边界未经用户明确同意不执行支付/发送/提交不索取或明文存储凭据不绕过法律与验证边界。运行前置条件完成 公共配置指南 中的基础安装流程拥有可用的python3环境具备互联网连接在线拉取 feed 时需要使用本地 fixture 则无需联网。与其他需要 API Key 的技能不同GeekNews 查询完全使用公开 feed无需任何密钥这也是 公共配置指南 的功能密钥表中未列出geeknews-search的原因。因此它可以作为零凭据技能直接运行适合作为 k-skill 环境连通性的快速验证。基本使用流程官方建议的典型工作流分三步浏览最新先执行列表查询list把握最新动态关键词收敛有明确主题时用search按标题/摘要/作者缩小范围单篇深挖需要具体内容时用detail以链接、id 或话题编号的一部分精确定位。1. 查看最新文章列表npx -y nomadamas/k-skill0 exec geeknews-search scripts/geeknews_search.py -- list --limit 5--limit控制返回条数默认值为 10源码中通过_validate_limit强制校验其必须为正整数见 scripts/geeknews_search.py列表严格保持 feed 中的原始顺序测试用例test_list_items_keeps_feed_order_and_applies_limit验证了这一行为见 scripts/test_geeknews_search.py。2. 按关键词保守搜索npx -y nomadamas/k-skill0 exec geeknews-search scripts/geeknews_search.py -- search --query Claude --limit 5--query为必填参数空查询会直接抛出ValueError: query is required搜索采用大小写不敏感的保守匹配casefold匹配范围严格限定在title、summary、author_name、author_url、id、link六个字段拼接后的文本见 scripts/geeknews_search.py测试test_search_items_matches_title_summary_and_author_case_insensitively验证了按摘要中关键词命中和按作者名大写输入命中两种场景见 scripts/test_geeknews_search.py。3. 查看单篇文章详情npx -y nomadamas/k-skill0 exec geeknews-search scripts/geeknews_search.py -- detail --id 28439--id接受完整 id/链接或话题编号的一部分如28439或完整 URLhttps://news.hada.io/topic?id28439通过子串匹配解析见 scripts/geeknews_search.py无匹配时抛出LookupError测试test_get_item_detail_resolves_by_id_or_link_and_errors_cleanly同时验证了完整 URL、编号缩写与错误提示三种情形见 scripts/test_geeknews_search.py。离线验证使用内置 fixture仓库内置了离线测试 fixturescripts/fixtures/geeknews-feed.xml一份包含 3 个 Atomentry的示例 feed配合--feed-file参数可以完全脱离网络复现上述全部命令npx -y nomadamas/k-skill0 exec geeknews-search scripts/geeknews_search.py -- list \ --feed-file scripts/fixtures/geeknews-feed.xml \ --limit 3--feed-file与--feed-url互斥成对存在指定了本地文件则直接读取文件内容Path.read_text否则调用fetch_feed在线拉取见 scripts/geeknews_search.py该 fixture 同时在 scripts/test_geeknews_search.py 中被所有单元测试引用是解析逻辑的黄金样本。输出结构与验证要点所有子命令均以json.dumps(payload, ensure_asciiFalse, indent2)输出格式化 JSON三个子命令的 payload 结构稳定list / search 输出search 额外携带query字段{ source: { title: GeekNews - 개발/기술/스타트업 뉴스 서비스, id: https://news.hada.io/rss/news, updated: 2026-04-12T22:53:5609:00, home_url: https://news.hada.io, feed_url: https://news.hada.io/rss/news, category: null }, query: Claude, count: 1, items: [ { id: https://news.hada.io/topic?id28439, title: Show GN: [GN] 비개발자 Claude로 프로덕션 운영 238일 — 무엇이 됐고 무엇이 안 됐나?, link: https://news.hada.io/topic?id28439, published: 2026-04-12T20:53:0509:00, updated: 2026-04-12T20:53:0509:00, author_name: workdriver, author_url: https://news.hada.io/user/workdriver, summary: 코드를 한 줄도 칠 줄 모르는 상태에서 2025년 8월 16일 Claude와 함께 첫 커밋을 찍었습니다., content_html: p코드를 한 줄도 칠 줄 모르는 상태에서 2025년 8월 16일 Claude와 함께 첫 커밋을 찍었습니다./p } ] }detail 输出{ source: {...}, item: {...} }item为单条文章的完整字段含content_html与summary。运行后可按下述检查点核对结果source.feed_url是否指向 GeekNews RSS feeditems[]是否同时携带title、link、author_name、summary字段detail结果中item.content_html与item.summary是否都包含搜索结果是否只按标题/摘要/作者保守匹配。底层实现原理Atom 解析与字段归一化深入了解源码有助于排查输出异常。整个解析链位于 scripts/geeknews_search.py核心逻辑如下1. XML 文本清洗管线_strip_cdata剥离![CDATA[...]]包裹层见 scripts/geeknews_search.py_clean_xml_text先剥 CDATA 再unescapeHTML 实体最后用\s正则折叠空白见 scripts/geeknews_search.py_html_to_text基于HTMLParser的_TextExtractor抽取content内 HTML 纯文本用于生成summary见 scripts/geeknews_search.py。2. feed 级元数据提取load_feed先从首个entry前截取 feed 前缀_feed_prefix再用正则提取title、id、updated、link relalternatehome与link relselffeed_url构成source对象见 scripts/geeknews_search.py。3. entry 级字段归一化每个entry被拆分为独立 block逐字段提取title、link优先取relalternate的链接、published/updatedpublished 缺失时回退到 updated、author.name/author.uri并将content的原始 HTML 原样保留在content_html、纯文本版放入summary见 scripts/geeknews_search.py。测试test_load_feed_parses_atom_entries_into_normalized_items验证了summary不含p标签而content_html保留 HTML 的关键行为见 scripts/test_geeknews_search.py。4. 在线拉取细节fetch_feed使用urllib.request携带自定义 UAk-skill-geeknews/1.0默认 20 秒超时并按响应头声明的 charset缺省 utf-8解码见 scripts/geeknews_search.py。注意事项与已知边界RSS 数据天然受限feed 仅能提供其声明的content范围完整原文、评论、投票、元数据不保证可用FeedBurner 不稳定在线拉取可能超时或失败此时应使用--feed-file本地验证或让 Agent 回退到直接打开原文链接https://news.hada.io/topic?id...详情保障范围detail只保证返回 feed 内已包含的content内容超出部分需以item.link指向的原文为准HTML 摘要可能截断summary由 feed 原文 HTML 抽取而来个别情况下内容可能不完整。进一步阅读完整功能指南docs/features/geeknews-search.md技能说明与 CLI 引导geeknews-search/SKILL.md、geeknews-search/instruction.md核心实现scripts/geeknews_search.py单元测试scripts/test_geeknews_search.py离线样例数据scripts/fixtures/geeknews-feed.xml全量技能安装与凭据说明docs/setup.md【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询