LLMLens 是一款 Typecho 插件,将站点的文章、页面与分类整理为符合 llmstxt.org 规范的 llms.txt 文件,供大语言模型(LLM)抓取与理解站点内容。

本文考验读者的快速阅读和信息提炼能力,如果您需要快速高效的版本,请移步至 Github FurYuenji/LLMLens。

众所周知,本博客经常使用脑回路清奇的方式来进行 SEO 和 GEO 优化,结果时不时就 适得其反地得到惩罚,正所谓江山易改,本性难移,即便如此,我还是会在浏览别人的热文时不由自主按下 Ctrl+U 一探究竟,果然,一个新的名词又一次浮现在我的眼前。

何为 llms.txt?

又一个众所周知,大语言模型越来越深入地融入我们的日常,每天用掉 Token 的速度堪比光速,那我怎么样让它理解我一个网站的主旨,而又节约一些时间,金钱和资源呢,一个叫做 llms.txt 的标准应运而生,它能将繁琐的 HTML 内容舍去,只保留信息密度高,结构化强,语义丰富的内容,创建一个简洁的 Markdown 纯文本把站点核心内容“喂”给模型。

你可以 点击此处 看看我博客的实际输出。

为什么我推荐使用 LLMLens?

打开搜索引擎,搜索 Typecho llms.txt 插件,果不出所料,两个热门结果,一个名曰 LLMsTXT,由 Bingyin 制作,另一个名曰 LLMLens,由 FurYuenji 维护,至于为什么是维护,因为它是基于上一个衍生的,而这个扫福瑞狗屁不通程序员 FurYuenji 又是谁呢,喔,原来就是博主热衷于本人呀,所以王婆卖瓜,自卖自夸,我当然推荐了。

如何去下载和安装本插件呢?

首当其冲是寻找一个能连接因特尔网的设备,按下硬件启动软件,通常是操作系统。

再启动浏览器应用程序,在上方的地址栏而非搜索框中输入 https://github.com/FurYuenji/LLMLens 并轻击回车键以访问 Github 官方网络门户站点。

待页面加载完毕不再闪烁以后,移动鼠标使得箭头位于绿底白字的 Code 按钮旁的白色倒三角按钮上,然后单击而非双击或右击鼠标左键,在弹出的下拉框中轻击 Download ZIP 选项,等待下载提示弹出。

下载完成后,打开下载目录,找到刚才下载的文件,右击选择 使用 369 进行压缩包木马查杀。

等待完成后,切换至浏览器窗口,新建一个标签页并输入文件管理地址,当然,使用 FTP 连接工具也是被许可的,具体方法见义务教育教科书小学信息技术三年级上册中的相关内容。

然后将查杀过的文件上传至 /usr/plugins/ 目录。

等待文件上传完毕后,点击文件图标右侧的解压按钮,将解压路径填写为 当前目录/LLMLens,等待解压完毕。

确认解压出的文件夹名称恰为 LLMLens 而非 LLMLens-main 或其它由压缩软件擅自添加的后缀,若不幸如此,请将其重命名为 LLMLens。

随后,新建一个浏览器标签页,在地址栏中输入你站点的后台入口,这通常是在站点域名后追加 /admin,轻击回车。

在弹出的登录表单中依次键入用户名与密码,若遗忘密码请参阅搜索引擎中关于找回 Typecho 管理密码的相关文章,此处不再赘述。

待成功进入后台仪表盘后,在顶部的导航栏中找到 控制台 一项并单击展开,在其下属菜单中选中 插件,页面加载完毕后将列出当前已添加的全部插件。

在下方灰白色列表中找到名为 LLMLens 的那一行,若未找到请检查上一步的重命名是否到位,或刷新页面重试。

确认无误后,点击该行右侧的 启用 按钮,等待页面刷新并出现启用成功的提示,此时应一并确认提示旁的网址是否和下属教程中的格式一致,若不是,请以显示为准而非教程中所述。

至此,应当开始验证成果的步骤:新建一个标签页,在地址栏中输入 https://你的站点域名/llms.txt,切记将其中的 你的站点域名 替换为你真实的域名而非直接输入该文字,轻击回车。若页面片刻以后呈现出一段以 # 开头的 Markdown 轻量标记文本,恭喜你,插件运行正常;若显示 404 或空白,请检查此前所有步骤是否有操作不当或遗漏,或前往 GitHub 向代码存储库维护者提交 Issue 反馈。

若一切顺利,不妨阅读“拓展花园”栏目中的内容,尝试在插件设置页面调整文章数量、摘要字数等选项。

拓展花园

后台设置页面可以调整这些:

配置项说明默认值
网站描述留空则使用系统设置中的站点描述空
文章数量包含的文章条数,填 0 表示不限制10
包含公开页面是否包含状态为「公开」的独立页面是
包含隐藏页面隐藏页面可能含非公开内容,建议保持关闭否
包含分类是否包含分类链接是
摘要字数每条内容摘要的最大字符数120
可选内容追加的链接,每行一个,格式 [标题](链接): 描述空
自定义过滤规则每行一个,格式见 Github 自述文件空

这个版本修改了什么?

相比原始版本,这个版本主要进行了以下这些方面的调整与变化:

  • 落盘文件改为动态路由:不再像从前那样把内容生成为实实在在存储于磁盘上的静态文件,而是改由路由在每次请求时实时地输出内容,这样一来便省去了管理那些落盘文件的麻烦,不必再操心文件是否过期、是否需要手动清理之类的事情
  • 增删设置选项:对插件设置页面中的各项选项做了一番增删取舍,同时调整了若干选项的默认值与提示信息,使得配置过程相较以往更加直观一些,不至于让人对着一个空荡荡的输入框发呆
  • 增加对隐藏页面的控制:隐藏页面中可能含有希望或不便公开的内容,以往对此缺乏掌控,如今则把决定权交还给使用者,可以自主地决定是否将这些隐藏页面纳入输出范围
  • 优化查询性能:通过批量查询文章所对应的分类,减少了逐条查询所带来的数据库压力,在文章数量较多时这一改动的意义会体现得更为明显
  • 添加自定义过滤规则功能:新增了让使用者自行编写过滤规则的能力,可以用正则表达式对输出内容进行替换,从而按自己的心意去修剪那些不希望出现在结果里的东西
  • 优化过滤规则:对既有的过滤规则做了改进,减少了 Markdown 标签被拦腰截断的情况,避免输出中残留半截标签这种令人不悦的景象
  • 优化截断规则:把截断的逻辑改为按标点语义来终止,而非简单粗暴地按字数硬切,如此摘要读起来会更加自然顺畅,不至于在句子中间戛然而止
  • 增强代码健壮性:修补了一些边界情况下的问题,让代码在面对各种意料之外的输入时能够更加从容一些,不至于轻易地崩坏

值得一提的是,这个插件在 Typecho 1.3.0 + PHP 7.4 环境下测试通过,但是我们不能只看到现象的表面,还要透过现象看本质,以实践检验真理,自行测试其它版本是否可用。

开源与致谢

眼前一亮的是,这个项目采用的是 MIT 协议 来进行开源。MIT 开源许可,说到底,是一份在法律层面上相对宽松、在姿态上相当开放的授权协议。它意味着什么呢?我们不妨把这件事拆开来看。

首先,它意味着原作者——在这个项目里,原始版本的版权归 Bingyin 所有,当前修改版本的版权归 栀渊Yuenji 所有——愿意把自己写下的这些代码,以一种近乎不设防的方式交到他人手中。任何人都可以拿到这份代码,去看它、读它、研究它究竟是怎么写的,不必担心因为窥探了源码而惹上什么麻烦。这种“可以随便看”的自由,本身就是开源精神最朴素的一面。

其次,它意味着你可以自由地使用这份代码,无论是拿来做自己的个人项目,还是嵌进商业产品里去卖钱,MIT 许可都不会拦着你。它不像某些带有“传染性”的许可那样,要求你的衍生作品也必须以同样的方式开源;你完全可以基于它做出一个闭源的、属于你自己的东西,然后把它捂得严严实实。这种“可以用、可以改、可以拿来赚钱”的宽容,正是 MIT 被众多开发者青睐的原因。

再者,它意味着你可以修改这份代码。觉得某个功能不合心意,改;觉得某段实现太笨拙,改;觉得可以加点什么让它更趁手,也改。修改之后的版本,你可以自己留着用,也可以再分发出去,甚至可以把改过的版本也开源出来,让更多人受益。这种“可以动手改造”的自由,让代码不再是凝固的成品,而是一块可以被反复雕琢的原料。

还有一点很重要:它意味着你可以再分发。你可以把原封不动的代码给别人,也可以把改过的代码给别人,只要在分发的时候保留那份版权声明和许可声明,说明这份东西是从哪里来的、遵循的是什么条款,就可以了。它不要求你付出什么额外的代价,也不要求你承诺什么额外的义务,唯一的要求,就是别把人家原来的署名抹掉。

当然,MIT 许可也意味着责任的边界被划得很清楚。协议里明明白白地写着,这份软件是“按原样”提供的,不附带任何形式的担保。用了它出了什么问题,原作者不承担责任。这一条看似冷淡,实则是保护了那些愿意无偿分享代码的人——他们把东西拿出来给你用,已经是情分,不能因为你自己用得不当,反过来要他们负责。

所以,MIT 开源意味着的,是一种近乎“来去自由”的授权:你可以看,可以用,可以改,可以再分发,可以拿来盈利,只要你保留那份出处说明,并且明白这东西没有保修。它不强制你回报什么,也不限制你拿它去做什么。它把代码从“私有财产”的围栏里放出来,让它流入更广阔的世界,至于流到谁手里、被用来做什么,那是后来者的自由。而正是这种自由,让无数项目得以被传播、被改进、被用在原作者做梦都想不到的地方。

当然,我也特别感谢原始作者 Bingyin,没有他的基础就没有这个版本,我感到自己仿佛站立于巨人的强而有力的臂膀之上,得以瞭望远方。

如果你有问题或想法,我十分欢迎随时来 GitHub 提 Issue 或 PR,这是我的荣幸,如果觉得插件还不赖,不妨给这个仓库和原作者项目点一个 Star,您的 5 分满意,是我们不懈的动力。

项目地址:https://github.com/FurYuenji/LLMLens