当前位置: 首页 > news >正文

NinChat:构建 AI 时代的实时新闻搜索基础设施

写在前面

在日常开发中,我们经常需要接入实时的新闻搜索能力——无论是做一个信息聚合 Bot,还是给 AI Agent 注入实时信息,又或者是搭建一个垂直领域的新闻看板。市面上的新闻 API 要么贵(NewsAPI $449/月起步),要么慢,要么数据太泛(只有标题没有正文)。

NinChat 就是为解决这些痛点而生的——一个开源的、自部署的实时新闻搜索基础设施,覆盖主流媒体源,支持全文搜索、热点新闻聚合、热搜词统计,以及面向 AI Agent 的标准 API 接口。

本文将从技术视角展开:解决哪些痛点、提供什么能力、如何使用。


一、解决哪些痛点

痛点 1:AI Agent 缺乏实时信息检索能力

当前大多数 AI Agent 的知识截止于训练数据,无法获取今天的新闻。传统的解决方案是让 Agent 直接调用搜索引擎 API(Google 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 的做法

  1. 结构化输出:搜索 API 返回的每条结果包含titlesnippet(摘要)、sourcepublish_time等结构化字段,无 HTML、无样式、无无关元素
  2. 分级摘要:根据权限返回不同长度的纯文本摘要(100-400 字符),Agent 可以先基于摘要判断是否需要获取全文,避免无效 Token 消耗
  3. 按需全文:支持detail=true参数按需获取正文内容,而不是每次搜索都返回全文
  4. 内容质量过滤:搜索结果会过滤掉内容过短(≤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?limit=20&days=3

返回的热点列表不是人工标注的,而是算法聚合的结果。核心流程:

  1. 碰撞检测:相同content_fingerprint但标题相似度 > 0.6 的文章被归为一组
  2. 跨域合并:基于标题 SimHash 海明距离 < 3 的组进一步合并
  3. 热度排序:按source_count(覆盖媒体数)降序排列

一条被央视、新华网、澎湃、界面等 20 家媒体同时报道的新闻,自然排在前面。

2.3 热搜词统计

GET /api/hot-search?limit=20&time_range=today

基于用户搜索行为的热搜词统计。支持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,detail=False):payload={"query":query,"limit":10,"match_mode":"fuzzy","detail":detail,"api_key":api_key}r=requests.post("https://ninchat-api.cpolar.top/api/search",json=payload,timeout=30)data=r.json()returndata["results"]

Agent 拿到结果后可以直接用 LLM 进行二次处理,典型的"搜索增强生成"模式。


三、如何使用

3.1 浏览器体验(零门槛)

打开https://ninchat.cpolar.top/,直接用。

不需要注册,不需要 API Key。首页展示实时热点新闻,搜索框输入关键词即可搜索。搜索结果包含标题、摘要、来源和时间。

3.2 获取 API Key

  1. 访问网站注册账号
  2. 在「API Key」页面创建 Key
  3. Key 格式为sk_ninso_<64位hex>
  4. 复制 Key 即可使用

3.3 基础搜索(匿名 / API Key)

curl-XPOST https://ninchat-api.cpolar.top/api/search\-H"Content-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\-H"Content-Type: application/json"\-d'{ "query": "车船税 政策 调整", "match_mode": "all", "detail": true, "limit": 5, "api_key": "sk_ninso_群组KEY" }'

detail: true返回的每篇结果包含完整正文(最多 10000 字符),适合 AI Agent 做深度分析和摘要生成。

3.5 获取热点 / 热搜

# 热点新闻curl"https://ninchat-api.cpolar.top/api/hot-news?limit=20&days=3"# 热搜词curl"https://ninchat-api.cpolar.top/api/hot-search?limit=20&time_range=today"

3.6 在 Python 项目中集成

importrequestsclassNinChatClient:def__init__(self,api_key,base_url="https://ninchat-api.cpolar.top"):self.api_key=api_key self.base_url=base_urldefsearch(self,query,match_mode="fuzzy",limit=20):r=requests.post(f"{self.base_url}/api/search",json={"query":query,"match_mode":match_mode,"limit":limit,"api_key":self.api_key,},timeout=30,)r.raise_for_status()returnr.json()["results"]defhot_news(self,limit=20,days=3):r=requests.get(f"{self.base_url}/api/hot-news",params={"limit":limit,"days":days},timeout=15,)r.raise_for_status()returnr.json()["news"]defhot_search(self,limit=20,time_range="today"):r=requests.get(f"{self.base_url}/api/hot-search",params={"limit":limit,"time_range":time_range},timeout=15,)r.raise_for_status()returnr.json()["terms"]
client=NinChatClient("sk_ninso_你的KEY")# 精确搜索results=client.search("新能源汽车 充电桩","all")# 热点新闻news=client.hot_news(20)# 热搜词trending=client.hot_search(10,"today")

四、未来规划

方向计划
多语言支持目前以中文为主,未来计划扩展英文源站
RSS/Webhook 推送关注特定关键词后,有新内容自动推送
语义搜索嵌入模型增强搜索召回,不仅限于关键词匹配

结语

NinChat 的核心理念是“搜索即服务”——把新闻搜索抽象成一个标准的 REST API,让任何应用、任何 Agent 都能以最低的接入成本获取实时信息检索能力。

项目完全开源,欢迎 Star、Issue、PR。

GitHub: https://github.com/nineinfra/ninchat-skills
在线体验: https://ninchat.cpolar.top

http://www.jsqmd.com/news/1139055/

相关文章:

  • 循环神经网络基础
  • LangGraph 工作流:Agent 从脚本变成可控,从岗位要求反推能力栈
  • 江奇霖《悬案》演技获赞,反差感角色诠释“剧抛脸”实力
  • 现有游乐设施 XR 数字化升级改造方案
  • AI写专著全知道:优质工具赋能,快速生成20万字专著不再难!
  • 模型 Benchmark 方差控制:平均分之前,先看波动有多大
  • 开源项目 CI 中集成 AI 审查:让机器人帮你盯住 PR 质量
  • Wi-Fi 7 来了,320MHz 信道测试这台仪器能不能扛
  • 多机器人分布式风险感知与NBV协同优化框架
  • 一段15秒短视频催生的小程序:我是车标王从0到2.0的创作手记
  • 用国标GB28181视频平台EasyGBS搭建森林防火AI哨兵
  • 纺织制造中织物缺陷检测综述
  • 论软件测试方法及应用
  • 传输线阻抗不连续设计:5%噪声容忍下的10%阻抗变化与长度计算
  • Paperxie 毕业论文智能写作|学长学姐实测!一站式写论文全流程对话版
  • 借助 Semantic Kernel 与 Blazor 构建智能交互式前端应用
  • Kubernetes 事件驱动:Informer 机制不只是给控制器用
  • CNC 编程代码示例 —— 从入门到实战
  • 3DGS环境配置避坑指南:CUDA+VS+PyTorch版本锁链解析
  • ORB-SLAM3 特征点
  • Sneakerweb 协议:无需许可,用物理介质实现网页点对点发布与分享!
  • 告别nvm!fnm:新一代极速Node版本管理工具全攻略
  • 2026年标签打印软件十大品牌排行榜,谁更强?
  • 实验7-1_自媒体运营分析_数据清洗与预处理
  • 我终于又有了自己的 Linux 电脑
  • AI写作辅助平台的合规秘籍:如何让AI生成内容通过严格学术审查
  • 3类常见舵机(模拟/数字/总线)控制原理对比:PWM、响应速度与精度实测
  • PS AI换背景实操教程:3步搞定家具椅子场景替换,告别手动抠图
  • 企业上AI,为什么应该从“岗位Agent”开始?
  • 模型参数设置