写在前面在日常开发中我们经常需要接入实时的新闻搜索能力——无论是做一个信息聚合 Bot还是给 AI Agent 注入实时信息又或者是搭建一个垂直领域的新闻看板。市面上的新闻 API 要么贵NewsAPI $449/月起步要么慢要么数据太泛只有标题没有正文。NinChat 就是为解决这些痛点而生的——一个开源的、自部署的实时新闻搜索基础设施覆盖主流媒体源支持全文搜索、热点新闻聚合、热搜词统计以及面向 AI Agent 的标准 API 接口。本文将从技术视角展开解决哪些痛点、提供什么能力、如何使用。一、解决哪些痛点痛点 1AI Agent 缺乏实时信息检索能力当前大多数 AI Agent 的知识截止于训练数据无法获取今天的新闻。传统的解决方案是让 Agent 直接调用搜索引擎 APIGoogle Custom Search、Bing API但这些 API 返回的是网页链接不是结构化内容。Agent 拿到一个 URL 后还得再提取正文链路长且不稳定。NinChat 的做法提供一个POST /api/search端点Agent 传入 query直接返回标题 摘要 来源 发布时间 全文内容权限允许时。一次调用搞定无需二次处理。痛点 2热点发现依赖人工编辑传统的新闻聚合依赖编辑筛选覆盖面有限且有时延。我们希望能基于同一新闻在多少家媒体被报道来判断热度这个标准比人工编辑更客观、更及时。NinChat 的做法基于 SimHash 标题 TF-IDF 内容指纹的多层聚类算法自动发现多源报道的同一新闻事件。一篇被 20 家媒体同时报道的新闻必然比只有 1 家报道的新闻更热。痛点 3内容冗余Token 损耗严重通用搜索引擎返回的网页片段包含大量无效内容——导航栏、广告、相关推荐、页脚信息混杂在正文中。即使用 readability 算法清洗后仍存在大量冗余段落。AI Agent 在做搜索增强生成时这些冗余内容会被一起送入 LLM导致 Token 大量浪费长期运行成本极高。NinChat 的做法结构化输出搜索 API 返回的每条结果包含title、snippet摘要、source、publish_time等结构化字段无 HTML、无样式、无无关元素分级摘要根据权限返回不同长度的纯文本摘要100-400 字符Agent 可以先基于摘要判断是否需要获取全文避免无效 Token 消耗按需全文支持detailtrue参数按需获取正文内容而不是每次搜索都返回全文内容质量过滤搜索结果会过滤掉内容过短≤50 字、纯图片页面、JS 空壳页面等低质量内容确保送入 LLM 的都是有效信息相比通用搜索引擎 API 返回的原始网页片段NinChat 的结构化输出在相同信息量下可节省 60-80% 的 Token 消耗。二、提供哪些能力2.1 全文搜索 — 三种匹配模式POST /api/search { query: 新能源汽车, match_mode: all, // exact | all | fuzzy limit: 20, api_key: sk_ninso_... }模式行为适用场景exact精确短语匹配空格分词“人工智能 医疗” → 必须同时包含两个词all所有词必须命中AND精准搜索结果少但准确fuzzy模糊匹配OR容错 1-2 字符探索式搜索结果多但可能相关meilishard 的默认中文分词已经处理了大部分场景。对于更精确的需求exact模式会在后端用引号包裹查询词强制 meilishard 做短语级匹配。2.2 热点新闻 — 算法聚合而非人工筛选GET /api/hot-news?limit20days3返回的热点列表不是人工标注的而是算法聚合的结果。核心流程碰撞检测相同content_fingerprint但标题相似度 0.6 的文章被归为一组跨域合并基于标题 SimHash 海明距离 3 的组进一步合并热度排序按source_count覆盖媒体数降序排列一条被央视、新华网、澎湃、界面等 20 家媒体同时报道的新闻自然排在前面。2.3 热搜词统计GET /api/hot-search?limit20time_rangetoday基于用户搜索行为的热搜词统计。支持today/week/month/all四种时间窗口。统计结果包括搜索次数和排名变化趋势。此接口不记录用户身份仅统计搜索词频次。2.4 Web 搜索首页 — 零门槛体验https://ninchat.cpolar.top/不需要登录、不需要 API Key直接在浏览器中访问。提供 大搜索框 Logo 展示 前 10 条热点新闻来源数 标题2.5 AI Agent 集成 — 标准 REST API项目为两种主流 AI Agent 框架提供了 Skill 文件OpenClaw通过NINCHAT_BASE_URL环境变量配置支持 CLI / Telegram / Discord / Slack 等多平台Hermes Agent通过execute_code工具调用 Python 代码支持 Dashboard UI 配置Agent 调用搜索的标准流程importrequestsdefsearch(query,api_key,detailFalse):payload{query:query,limit:10,match_mode:fuzzy,detail:detail,api_key:api_key}rrequests.post(https://ninchat-api.cpolar.top/api/search,jsonpayload,timeout30)datar.json()returndata[results]Agent 拿到结果后可以直接用 LLM 进行二次处理典型的搜索增强生成模式。三、如何使用3.1 浏览器体验零门槛打开https://ninchat.cpolar.top/直接用。不需要注册不需要 API Key。首页展示实时热点新闻搜索框输入关键词即可搜索。搜索结果包含标题、摘要、来源和时间。3.2 获取 API Key访问网站注册账号在「API Key」页面创建 KeyKey 格式为sk_ninso_64位hex复制 Key 即可使用3.3 基础搜索匿名 / API Keycurl-XPOST https://ninchat-api.cpolar.top/api/search\-HContent-Type: application/json\-d{ query: 人工智能 医疗, match_mode: all, limit: 10, api_key: sk_ninso_你的API_KEY }返回示例{status:ok,total:86,search_level:basic,search_time:0.156s,results:[{title:AI辅助诊断系统在三甲医院落地,url:https://example.com/article/123,snippet:近日多家三甲医院宣布引入AI辅助诊断系统...,source:新华网,publish_time:2026-07-03}]}3.4 群组用户 — 深度搜索群组用户tags 含group:xxx可以获取全文内容curl-XPOST https://ninchat-api.cpolar.top/api/search\-HContent-Type: application/json\-d{ query: 车船税 政策 调整, match_mode: all, detail: true, limit: 5, api_key: sk_ninso_群组KEY }detail: true返回的每篇结果包含完整正文最多 10000 字符适合 AI Agent 做深度分析和摘要生成。3.5 获取热点 / 热搜# 热点新闻curlhttps://ninchat-api.cpolar.top/api/hot-news?limit20days3# 热搜词curlhttps://ninchat-api.cpolar.top/api/hot-search?limit20time_rangetoday3.6 在 Python 项目中集成importrequestsclassNinChatClient:def__init__(self,api_key,base_urlhttps://ninchat-api.cpolar.top):self.api_keyapi_key self.base_urlbase_urldefsearch(self,query,match_modefuzzy,limit20):rrequests.post(f{self.base_url}/api/search,json{query:query,match_mode:match_mode,limit:limit,api_key:self.api_key,},timeout30,)r.raise_for_status()returnr.json()[results]defhot_news(self,limit20,days3):rrequests.get(f{self.base_url}/api/hot-news,params{limit:limit,days:days},timeout15,)r.raise_for_status()returnr.json()[news]defhot_search(self,limit20,time_rangetoday):rrequests.get(f{self.base_url}/api/hot-search,params{limit:limit,time_range:time_range},timeout15,)r.raise_for_status()returnr.json()[terms]clientNinChatClient(sk_ninso_你的KEY)# 精确搜索resultsclient.search(新能源汽车 充电桩,all)# 热点新闻newsclient.hot_news(20)# 热搜词trendingclient.hot_search(10,today)四、未来规划方向计划多语言支持目前以中文为主未来计划扩展英文源站RSS/Webhook 推送关注特定关键词后有新内容自动推送语义搜索嵌入模型增强搜索召回不仅限于关键词匹配结语NinChat 的核心理念是“搜索即服务”——把新闻搜索抽象成一个标准的 REST API让任何应用、任何 Agent 都能以最低的接入成本获取实时信息检索能力。项目完全开源欢迎 Star、Issue、PR。GitHub: https://github.com/nineinfra/ninchat-skills在线体验: https://ninchat.cpolar.top
NinChat:构建 AI 时代的实时新闻搜索基础设施
发布时间:2026/7/7 4:25:28
写在前面在日常开发中我们经常需要接入实时的新闻搜索能力——无论是做一个信息聚合 Bot还是给 AI Agent 注入实时信息又或者是搭建一个垂直领域的新闻看板。市面上的新闻 API 要么贵NewsAPI $449/月起步要么慢要么数据太泛只有标题没有正文。NinChat 就是为解决这些痛点而生的——一个开源的、自部署的实时新闻搜索基础设施覆盖主流媒体源支持全文搜索、热点新闻聚合、热搜词统计以及面向 AI Agent 的标准 API 接口。本文将从技术视角展开解决哪些痛点、提供什么能力、如何使用。一、解决哪些痛点痛点 1AI Agent 缺乏实时信息检索能力当前大多数 AI Agent 的知识截止于训练数据无法获取今天的新闻。传统的解决方案是让 Agent 直接调用搜索引擎 APIGoogle Custom Search、Bing API但这些 API 返回的是网页链接不是结构化内容。Agent 拿到一个 URL 后还得再提取正文链路长且不稳定。NinChat 的做法提供一个POST /api/search端点Agent 传入 query直接返回标题 摘要 来源 发布时间 全文内容权限允许时。一次调用搞定无需二次处理。痛点 2热点发现依赖人工编辑传统的新闻聚合依赖编辑筛选覆盖面有限且有时延。我们希望能基于同一新闻在多少家媒体被报道来判断热度这个标准比人工编辑更客观、更及时。NinChat 的做法基于 SimHash 标题 TF-IDF 内容指纹的多层聚类算法自动发现多源报道的同一新闻事件。一篇被 20 家媒体同时报道的新闻必然比只有 1 家报道的新闻更热。痛点 3内容冗余Token 损耗严重通用搜索引擎返回的网页片段包含大量无效内容——导航栏、广告、相关推荐、页脚信息混杂在正文中。即使用 readability 算法清洗后仍存在大量冗余段落。AI Agent 在做搜索增强生成时这些冗余内容会被一起送入 LLM导致 Token 大量浪费长期运行成本极高。NinChat 的做法结构化输出搜索 API 返回的每条结果包含title、snippet摘要、source、publish_time等结构化字段无 HTML、无样式、无无关元素分级摘要根据权限返回不同长度的纯文本摘要100-400 字符Agent 可以先基于摘要判断是否需要获取全文避免无效 Token 消耗按需全文支持detailtrue参数按需获取正文内容而不是每次搜索都返回全文内容质量过滤搜索结果会过滤掉内容过短≤50 字、纯图片页面、JS 空壳页面等低质量内容确保送入 LLM 的都是有效信息相比通用搜索引擎 API 返回的原始网页片段NinChat 的结构化输出在相同信息量下可节省 60-80% 的 Token 消耗。二、提供哪些能力2.1 全文搜索 — 三种匹配模式POST /api/search { query: 新能源汽车, match_mode: all, // exact | all | fuzzy limit: 20, api_key: sk_ninso_... }模式行为适用场景exact精确短语匹配空格分词“人工智能 医疗” → 必须同时包含两个词all所有词必须命中AND精准搜索结果少但准确fuzzy模糊匹配OR容错 1-2 字符探索式搜索结果多但可能相关meilishard 的默认中文分词已经处理了大部分场景。对于更精确的需求exact模式会在后端用引号包裹查询词强制 meilishard 做短语级匹配。2.2 热点新闻 — 算法聚合而非人工筛选GET /api/hot-news?limit20days3返回的热点列表不是人工标注的而是算法聚合的结果。核心流程碰撞检测相同content_fingerprint但标题相似度 0.6 的文章被归为一组跨域合并基于标题 SimHash 海明距离 3 的组进一步合并热度排序按source_count覆盖媒体数降序排列一条被央视、新华网、澎湃、界面等 20 家媒体同时报道的新闻自然排在前面。2.3 热搜词统计GET /api/hot-search?limit20time_rangetoday基于用户搜索行为的热搜词统计。支持today/week/month/all四种时间窗口。统计结果包括搜索次数和排名变化趋势。此接口不记录用户身份仅统计搜索词频次。2.4 Web 搜索首页 — 零门槛体验https://ninchat.cpolar.top/不需要登录、不需要 API Key直接在浏览器中访问。提供 大搜索框 Logo 展示 前 10 条热点新闻来源数 标题2.5 AI Agent 集成 — 标准 REST API项目为两种主流 AI Agent 框架提供了 Skill 文件OpenClaw通过NINCHAT_BASE_URL环境变量配置支持 CLI / Telegram / Discord / Slack 等多平台Hermes Agent通过execute_code工具调用 Python 代码支持 Dashboard UI 配置Agent 调用搜索的标准流程importrequestsdefsearch(query,api_key,detailFalse):payload{query:query,limit:10,match_mode:fuzzy,detail:detail,api_key:api_key}rrequests.post(https://ninchat-api.cpolar.top/api/search,jsonpayload,timeout30)datar.json()returndata[results]Agent 拿到结果后可以直接用 LLM 进行二次处理典型的搜索增强生成模式。三、如何使用3.1 浏览器体验零门槛打开https://ninchat.cpolar.top/直接用。不需要注册不需要 API Key。首页展示实时热点新闻搜索框输入关键词即可搜索。搜索结果包含标题、摘要、来源和时间。3.2 获取 API Key访问网站注册账号在「API Key」页面创建 KeyKey 格式为sk_ninso_64位hex复制 Key 即可使用3.3 基础搜索匿名 / API Keycurl-XPOST https://ninchat-api.cpolar.top/api/search\-HContent-Type: application/json\-d{ query: 人工智能 医疗, match_mode: all, limit: 10, api_key: sk_ninso_你的API_KEY }返回示例{status:ok,total:86,search_level:basic,search_time:0.156s,results:[{title:AI辅助诊断系统在三甲医院落地,url:https://example.com/article/123,snippet:近日多家三甲医院宣布引入AI辅助诊断系统...,source:新华网,publish_time:2026-07-03}]}3.4 群组用户 — 深度搜索群组用户tags 含group:xxx可以获取全文内容curl-XPOST https://ninchat-api.cpolar.top/api/search\-HContent-Type: application/json\-d{ query: 车船税 政策 调整, match_mode: all, detail: true, limit: 5, api_key: sk_ninso_群组KEY }detail: true返回的每篇结果包含完整正文最多 10000 字符适合 AI Agent 做深度分析和摘要生成。3.5 获取热点 / 热搜# 热点新闻curlhttps://ninchat-api.cpolar.top/api/hot-news?limit20days3# 热搜词curlhttps://ninchat-api.cpolar.top/api/hot-search?limit20time_rangetoday3.6 在 Python 项目中集成importrequestsclassNinChatClient:def__init__(self,api_key,base_urlhttps://ninchat-api.cpolar.top):self.api_keyapi_key self.base_urlbase_urldefsearch(self,query,match_modefuzzy,limit20):rrequests.post(f{self.base_url}/api/search,json{query:query,match_mode:match_mode,limit:limit,api_key:self.api_key,},timeout30,)r.raise_for_status()returnr.json()[results]defhot_news(self,limit20,days3):rrequests.get(f{self.base_url}/api/hot-news,params{limit:limit,days:days},timeout15,)r.raise_for_status()returnr.json()[news]defhot_search(self,limit20,time_rangetoday):rrequests.get(f{self.base_url}/api/hot-search,params{limit:limit,time_range:time_range},timeout15,)r.raise_for_status()returnr.json()[terms]clientNinChatClient(sk_ninso_你的KEY)# 精确搜索resultsclient.search(新能源汽车 充电桩,all)# 热点新闻newsclient.hot_news(20)# 热搜词trendingclient.hot_search(10,today)四、未来规划方向计划多语言支持目前以中文为主未来计划扩展英文源站RSS/Webhook 推送关注特定关键词后有新内容自动推送语义搜索嵌入模型增强搜索召回不仅限于关键词匹配结语NinChat 的核心理念是“搜索即服务”——把新闻搜索抽象成一个标准的 REST API让任何应用、任何 Agent 都能以最低的接入成本获取实时信息检索能力。项目完全开源欢迎 Star、Issue、PR。GitHub: https://github.com/nineinfra/ninchat-skills在线体验: https://ninchat.cpolar.top