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

拓展 Coco AI 功能 - 智能检索 Hexo 博客

在之前的文章中,我们成功让 Coco AI 检索 Hugo 博客,这对于博客作者来说是一大福音。然而,从 Hexo 迁移到 Hugo 的成本不容小觑,毕竟大多数开发者对 Node.js 更熟悉,而 Golang 相对陌生。那么,既然 Coco AI 官方尚未支持 Hexo,是否有办法让它兼容 Hexo 呢?

当然可以!💡 既然 Coco AI 依赖的是 Hugo 生成的 index.json 进行检索,那我们干脆在 Hexo 中实现 相同结构的 index.json,这样就可以直接复用 Hugo 的数据结构,避免字段不兼容导致的潜在 Bug。

接下来,我们将从 0 到 1 实现 Hexo 的智能检索功能! 🚀


📌 1. 安装 Hexo 并切换到 Next 主题

首先,我们需要安装 Hexo 并设置 Next 主题

安装 Hexo

pnpm install -g hexo-cli
hexo init my-blog
cd my-blog
pnpm install

启动本地服务器:

pnpm hexo s

访问 http://localhost:4000/,确保 Hexo 站点运行正常。


安装 Next 主题

pnpm add hexo-theme-next

修改 _config.yml

theme: next

然后运行:

pnpm hexo clean && pnpm hexo s

访问 http://localhost:4000/,确认 Next 主题已生效。


📌 2. 安装 hexo-generator-json-content

我们需要安装 JSON 生成插件,用于输出博客文章数据:

pnpm add hexo-generator-json-content

这些添加到 _config.yml,确保 Hexo 生成完整的 JSON 数据:

jsonContent:
  meta: false
  pages: false
  posts:
    title: true
    date: true
    path: false
    permalink: true
    excerpt: true
    content: true
    categories: true
    tags: true

运行:

pnpm hexo clean && pnpm hexo generate

然后检查 public/index.json

cat public/index.json

此时 JSON 已经生成,但 url 不是 Hugo 风格的,我们需要进一步优化。


**📌 3. 自定义 index.json **

默认情况下,Hexo 不会生成 /YYYY/MM/DD/slug/ 格式的 URL,因此我们需要手动调整。

📌 创建 scripts/generate_index_json.js

Hexo 站点目录 下,创建 scripts/generate_index_json.js

hexo.extend.generator.register("index_json", function (locals) {
  let posts = locals.posts.sort("-date").map(post => {
    let category = post.categories && post.categories.length > 0 ? post.categories.data[0].name : null;
    let subcategory = post.categories && post.categories.length > 1 ? post.categories.data[1].name : null;
    let tags = post.tags ? post.tags.map(tag => tag.name) : null;

    // 解析发布日期
    let date = post.date;
    let formattedDate = `${date.year()}/${String(date.month() + 1).padStart(2, "0")}/${String(date.date()).padStart(2, "0")}`;
    
    // 生成 Hugo 风格 URL: `/YYYY/MM/DD/slug/`
    let postUrl = `/${formattedDate}/${post.slug || post.title.replace(/\s+/g, "-").toLowerCase()}/`;

    return {
      category: category,
      subcategory: subcategory,
      content: post.content.replace(/(<([^>]+)>)/gi, ""), // 去除 HTML 标签
      created: post.date.toISOString(),
      updated: post.updated ? post.updated.toISOString() : post.date.toISOString(),
      lang: "en", // 你可以修改为动态语言检测
      summary: post.excerpt || post.content.substring(0, 150) + "...",
      tags: tags,
      title: post.title,
      url: postUrl // 确保符合 Hugo 格式
    };
  });

  return {
    path: "index.json",
    data: JSON.stringify(posts, null, 2)
  };
});


📌 4. 重新生成 index.json

运行:

pnpm hexo clean && pnpm hexo generate

然后检查 public/index.json

cat public/index.json

你应该会看到 JSON 变成:

[
  {
    "category": "Technology",
    "subcategory": "Web Development",
    "content": "This is a test post.",
    "created": "2025-03-20T12:00:00+08:00",
    "updated": "2025-03-20T12:00:00+08:00",
    "lang": "en",
    "summary": "This is a test post.",
    "tags": ["Hexo", "Static Site"],
    "title": "Hello World",
    "url": "/2025/03/20/hello-world/"
  }
]

成功让 URL 变成 /YYYY/MM/DD/slug/ 格式!

image-20250320213141804


📌 5. 让 Coco AI 识别 Hexo 博客

既然 index.json 已经生成,我们可以像 Hugo 那样,在 Coco AI 里添加 Hexo 博客的检索。

Coco AI 里,点击 添加 Hugo Site,然后输入:

http://host.docker.internal:4000/index.json

如果想测试数据同步,我们可以修改同步时间为 1 秒,以便实时观察更新情况。

image-20250320213908270


📌 6. 观察数据同步情况

过了一会,我们可以在 Coco AI 界面看到博客数据已经同步,但前提是需要先添加模型!

Coco AI 的 KNN(近邻搜索) 会按照相关性对内容进行智能排序,使检索更高效!

image-20250320214256274


🎯 总结

步骤命令
安装 Hexo 并切换到 Next 主题pnpm install -g hexo-cli && hexo init my-blog
安装 hexo-generator-json-contentpnpm add hexo-generator-json-content
修改 _config.yml让 Hexo 生成 index.json
创建 scripts/generate_index_json.js确保 URL 变成 Hugo 风格
生成 JSONpnpm hexo clean && pnpm hexo generate
在 Coco AI 里添加 Hexo 站点输入 http://host.docker.internal:4000/index.json

🚀 结论

🎉 通过本教程,你已经成功:

让 Coco AI 兼容 Hexo 博客,实现智能检索
复用 Hugo 的 index.json 结构,避免迁移成本
让 URL 变成 /YYYY/MM/DD/slug/ 以适配 Hugo Connector
在 Coco AI 里成功同步 Hexo 博客数据,并进行智能查询

💡 现在,你可以愉快地使用 Hexo + Coco AI 进行智能检索了!如果有 更多定制需求(如 authorword count),可以继续优化 generate_index_json.js!🔥🚀

相关文章:

  • leetcode热题100道——字母异位词分组
  • lmbench测试方法
  • Java 分布式高并发重试方案及实现
  • Modbus通信协议基础知识总结及应用
  • 网络原理之传输层
  • 【Linux】Reactor模式
  • 01分数规划,二分法,题目练习
  • rust学习笔记18-迭代器
  • 网络安全威胁与防护措施(上)
  • “锈化”Python:用Rust重塑Python生态的六大工具深度解析
  • 床头灯3000词:《傲慢与偏见》(Pride and Prejudice)阅读(英语学习)记录
  • 用爬虫解锁 Shopee 店铺商品数据,开启电商新洞察
  • springboot项目,mapper.xml里面,jdbcType报错 已解决
  • day 5 寄存器 时钟 堆栈
  • 蓝桥杯 之 暴力回溯
  • 分开6年,移居美国的吴秀波和被送进监狱的小三陈昱霖,如今都怎么样了?
  • springboot项目引用外部jar包,linux部署后启动失败,找不到jar包
  • Jvm运行时数据区有哪些
  • SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法
  • 2025年渗透测试面试题总结- PingCAP安全工程师(题目+回答)
  • 费高云不再担任安徽省人民政府副省长
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 融创中国:境外债务重组计划聆讯定于9月15日召开
  • 18世纪“精于剪切、复制、粘贴”的美国新闻界
  • 全球医药股普跌,A股创新药板块下挫
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触