AI摘要

FriendsRSS是一款专为Typecho博客系统设计的友链RSS/Atom聚合插件,具有自动检测、解析和聚合友链博客最新文章的功能,支持多种展示方式。

概述

FriendsRSS 是一款专为 Typecho 博客系统设计的智能友链 RSS/Atom 聚合插件。它能够自动检测、解析和聚合您友链博客的最新文章,通过多种展示方式(短代码、API接口、RSS输出、前台页面)让您的博客成为友圈动态的聚合中心。

2025-08-25T08:16:20.png

插件功能

核心功能

  • 友链来源集成:从 Typecho links 表的指定分类读取友链,自动参与聚合。兼容性增强:当指定分类不存在时,自动获取所有友链,完美兼容只有一种友链的主题博客。排除功能:支持配置排除检测的博客网址,每行一个,支持部分匹配。
  • RSS 自动检测:采用"三轮检测"策略(常用路径/feed和/feed/ → HTML 解析 → 其他常见路径),并对检测结果进行 10天缓存(RSS地址相对稳定)。
  • 定时检测功能:支持配置定时检测RSS地址间隔(默认240小时/10天),RSS地址缓存时间自动与定时检测间隔保持一致。
  • 定时解析功能:支持配置定时解析间隔(默认6小时),提供独立的定时任务脚本,支持命令行和HTTP调用。
  • 手动配置 RSS:后台提供"选择友链 + 输入 RSS 地址"的表单,保存到 rss_config.json 作为覆盖与纠偏。
  • 短代码功能:在任意文章或页面中使用 rss 短代码来显示友链RSS聚合内容,支持 limit 参数控制显示文章数量。
  • 多格式支持:兼容 RSS 2.0 / Atom 1.0 / RSS 1.0,解析标题、链接、作者、摘要与发布时间等字段。
  • 文章聚合与排序:为每个博客限制抓取数量,并按发布时间 倒序 排列,支持聚合总数上限。
  • 缓存与并发保护:聚合结果持久化缓存,内置 锁文件 防止并发重复任务;可读取已有缓存以快速展示。
  • 日志记录:记录检测、解析与网络状态,便于排查异常与性能问题。

输出功能

  • RSS订阅地址/action/friends-rss?do=rss - 生成标准RSS 2.0格式的聚合订阅源
  • API接口地址/action/friends-rss?do=page - 返回JSON格式的聚合文章数据
  • 前台展示页面/action/friends-rss?do=pageview - 美观的前台展示页面,支持响应式设计

示例图片查看


2025-08-25T08:03:58.png

2025-08-25T08:04:14.png

2025-08-25T08:04:26.png

管理界面

  • 统计卡片:显示友链数量、文章数量、最后更新时间、已配置RSS数量等统计信息
  • 操作卡片

    • 定时检测RSS地址:显示当前检测间隔和下次执行时间,提供"立即执行"按钮
    • 定时解析RSS内容:显示当前解析间隔和下次执行时间,提供"立即执行"按钮
    • 添加RSS地址:手动配置友链RSS地址的表单界面
  • 访问地址区块:显示所有可用的访问地址和友链分类信息
  • 友链与文章列表:显示友链列表和最新聚合文章,支持RSS配置状态标识
  • 日志显示区域:实时显示操作日志,支持自动滚动到最新内容

2025-08-25T08:01:14.png

短代码功能

  • 基本用法:在任意文章或页面中使用 rss 短代码来显示友链RSS聚合内容
  • 参数支持:支持 limit 参数控制显示文章数量
  • 块状设计:使用简洁美观的块状设计,包含博客信息、文章标题、摘要等
  • 响应式布局:自动适配移动端设备,优化显示效果

网络与兼容性优化

  • 请求优化:优先使用 cURL,请求超时与重定向受控
  • 内容清理:自动清理与修复常见 XML/文本问题、摘要长度截断
  • 错误处理:完善的异常处理和日志记录机制
  • 并发保护:使用锁文件防止重复任务执行
  • 缓存策略:智能缓存管理,支持缓存统计和清理

定时任务功能

  • 独立脚本:提供 cron.php 独立定时任务脚本
  • HTTP调用:支持通过HTTP请求触发定时任务
  • 状态管理:记录定时任务执行状态和下次执行时间
  • 安全验证:支持密钥验证防止未授权访问

Ajax功能

  • 实时检测:支持SSE(Server-Sent Events)实时显示RSS检测进度
  • 批量操作:支持批量检测RSS地址和清除缓存
  • 进度反馈:实时显示操作进度和结果
  • 错误处理:完善的错误处理和用户反馈机制

安装与配置

  1. 将插件文件夹上传到 usr/plugins/ 目录。
  2. 在 Typecho 后台启用插件 FriendsRSS
  3. 在插件设置页配置友链来源、每个博客抓取文章数、聚合总数上限与缓存时间等参数。
  4. Github地址:
    此处内容需要评论回复后(审核通过)方可阅读。

配置参数说明

  • 友链分类:指定需要聚合的友链分组。兼容性说明

    • Handsome主题:填写"ten"获取全站链接,填写"one"获取内页链接,填写"good"获取推荐链接
    • 其他主题:通常留空即可,插件会自动获取所有友链
    • 当指定分类不存在时,插件会自动获取所有友链,确保兼容性
  • 排除检测的博客网址:每行一个网址,支持部分匹配。例如:

    • example.com - 排除所有包含example.com的友链
    • https://blog.example.com - 排除特定博客
    • 留空表示不排除任何友链
  • 每个博客文章数:每个博客抓取与展示的文章数量限制。
  • 最大文章数:聚合后的文章总数上限。
  • 定时解析间隔:定时解析友链RSS的间隔时间(小时),默认6小时,设置为0表示禁用。文章缓存时间会自动与定时解析间隔保持一致。
  • 定时检测间隔:定时检测友链RSS地址的间隔时间(小时),默认240小时(10天),设置为0表示禁用。RSS地址缓存时间会自动与定时检测间隔保持一致。
  • 启用前台展示:是否开放前台聚合页与 RSS 输出。
    2025-08-25T08:02:21.png

使用方法

  • 检测 RSS:在后台点击"定时检测RSS地址"卡片中的"立即执行"按钮,自动为友链站点识别 RSS/Atom 地址并保存。
  • 定时检测:在后台点击"定时检测RSS地址",按配置的间隔时间自动检测友链RSS地址。
  • 手动添加:在"添加 RSS 地址"区域选择目标友链并填写正确的订阅地址后保存。
  • 聚合文章:点击"定时解析RSS内容",按时间排序聚合最新文章并写入缓存。
  • 访问输出

    • RSS订阅地址:/action/friends-rss?do=rss
    • API接口地址:/action/friends-rss?do=page(需在设置中启用)
    • 前台展示页面:/action/friends-rss?do=pageview(需在设置中启用)

性能与稳定性

  • 超时控制:为单次请求与连接设置合理超时并限制重定向次数。
  • 并发保护:使用锁文件/状态标记避免重复聚合任务并减少服务器压力。
  • 分轮检测:优先常用路径,其次 HTML 解析,最后其他常见路径以提升成功率与速度。

缓存策略

缓存类型缓存时间说明
RSS地址缓存与定时检测间隔一致RSS地址相对稳定,与定时检测间隔同步,减少重复检测
文章内容缓存与定时解析间隔一致确保定时解析有意义,避免缓存过期后立即重新解析
失败结果缓存1小时避免重复请求失败的RSS源,减少服务器压力

定时策略

配置项默认值说明
定时解析间隔6小时定时解析友链RSS的间隔时间,设置为0表示禁用
文章缓存时间自动同步与定时解析间隔保持一致,确保定时解析有意义
定时检测间隔240小时(10天)定时检测友链RSS地址的间隔时间,设置为0表示禁用
RSS地址缓存时间自动同步与定时检测间隔保持一致,减少重复检测
实际效果缓存过期时重新执行定时任务执行时缓存刚好过期,获取最新内容

设计思路:以"逻辑一致性"为核心,确保定时任务与缓存时间同步,提升用户体验和系统效率。

RSS短代码使用

基本用法

在任何文章或页面中使用 rss 短代码来显示友链RSS聚合内容,使用简洁的块状设计:

rss

默认显示10篇最新文章,使用块状设计。

或者

rss limit="5"

只显示5篇最新文章。

2025-08-25T07:53:03.png

显示内容

每个文章块包含:

  • 博客信息头部:博客名称、作者信息、发布时间
  • 文章标题:可点击跳转到原文
  • 文章摘要:自动截取的文章概要(200字符以内)

参数说明

limit

  • 类型: 数字
  • 默认值: 10
  • 说明: 显示文章的数量
注意不要放置多个,会重复显示。

2025-08-25T08:17:43.png

设计特点

块状设计

  • 简洁美观:每篇文章独立成块,清晰区分
  • 信息完整:包含博客、作者、时间、标题、摘要
  • 视觉层次:合理的间距和颜色搭配
  • 悬停效果:鼠标悬停时显示阴影效果

响应式设计

  • 移动端优化:自动适配小屏幕设备
  • 布局调整:移动端下头部信息垂直排列
  • 字体缩放:移动端下适当调整字体大小

注意事项

  1. 缓存机制: 短代码使用缓存机制,文章更新可能有延迟
  2. 性能考虑: 建议在高流量站点限制显示数量(limit参数)
  3. 样式兼容: 短代码样式已针对常见主题优化,如有冲突可自定义CSS
  4. 安全性: 所有外部内容都经过HTML转义处理

错误处理与兼容性

  • 超时处理:如果你的友链过多且开启了CDN,可以在CDN中设置超时时间,从默认的30s到60s或者更高。
    2025-08-25T07:58:38.png
  • 网络异常与 HTTP 错误:会被记录并跳过,继续处理其他源。
  • XML 内容清理:在解析前进行清理,尽量兼容 RSS 2.0、Atom 1.0 与 RSS 1.0 常见格式。
  • 扩展要求:建议启用 cURL、SimpleXML 等常用扩展并确保插件对缓存目录拥有写入权限。

更新日志

日期版本更新类型变更内容
2025/8/31v2.2.1缓存机制修复缓存机制修复:修复缓存机制导致RSS配置无法及时更新的问题:增加配置文件时间戳检查,当配置文件比缓存文件更新时自动强制刷新缓存,确保能读取到最新的手动配置RSS地址
调试信息增强:增强RSS配置读取调试信息:添加详细的配置文件读取日志,特别针对特定友链配置状态的检查和记录,便于问题排查
思路:以"缓存一致性"为核心,确保配置文件更新后能及时生效,提升手动配置RSS的可靠性
2025/8/31v2.2.0配置文件修复配置文件修复:修复RSS配置文件和缓存目录缺失导致的配置读取失败问题:在构造函数中自动创建rss_config.json文件和缓存目录,确保系统正常运行
错误处理完善:完善错误处理机制:增加文件读取、JSON解析和缓存操作的详细错误日志记录,改进后台RSS配置保存逻辑
思路:以"健壮性优先"为核心,确保插件在各种环境下都能正常工作,提升系统稳定性
2025/8/25v2.1.6定时检测RSS功能定时检测RSS功能:新增定时检测RSS功能:支持配置定时检测RSS地址间隔(默认240小时/10天),RSS地址缓存时间自动与定时检测间隔保持一致
定时检测界面:管理界面优化:新增"定时检测RSS地址"操作卡片,显示当前检测间隔和下次执行时间
按钮简化:移除重复的"手动检测"按钮,只保留"立即执行"按钮,避免功能重复
缓存策略:缓存策略优化:RSS地址缓存时间从固定7天改为与定时检测间隔同步,提升系统一致性
短代码文档:新增RSS短代码使用说明,包含基本用法、参数说明、使用示例和设计特点
思路:以"逻辑一致性"为核心,确保定时检测与RSS地址缓存同步,提升用户体验和系统效率
2025/8/25v2.1.0RSS地址检测RSS地址检测:新增RSS地址检测功能:自动检测友链博客的RSS地址,支持多种常见RSS路径,提供手动添加功能
管理界面重构:管理界面重构:新增RSS地址管理、检测日志显示、定时任务设置等功能模块
缓存机制优化:缓存机制优化:RSS地址缓存24小时,RSS内容缓存可配置,提升系统性能
思路:以"自动化检测"为核心,减少手动配置工作量,提升用户体验
2025/8/25v2.1.5友链分类兼容友链分类兼容:友链分类兼容性增强:当指定分类不存在时,自动获取所有友链,完美兼容只有一种友链的主题博客
排除功能:新增排除功能:支持配置排除检测的博客网址,每行一个,支持部分匹配,提供更灵活的友链管理
分类统计界面:管理界面优化:新增"可用分类"统计卡片,在访问地址区域显示所有可用的友链分类及当前使用状态
配置界面优化:配置界面优化:友链分类设置项默认值改为空,添加详细的兼容性说明,帮助用户正确配置不同主题的友链
思路:以"最大兼容性"为核心,确保插件能在各种Typecho主题环境下正常工作,提升用户体验
2025/8/25v2.1.4日志显示修复日志显示修复:修复日志显示错误:将"用时20s"等错误显示修正为实际请求用时,使用microtime()精确计算请求耗时
日志自动滚动:管理界面体验优化:日志显示区域自动滚动到最新内容,无需手动滚动查看最新日志
策略文档:新增缓存策略和定时解析策略表格说明,更直观地展示系统设计思路
2025/8/25v2.1.3缓存策略优化缓存策略优化:缓存策略优化:RSS地址缓存时间从24小时延长至7天(更符合RSS地址相对稳定的特点),文章内容缓存时间自动与定时解析间隔保持一致,移除独立的缓存时间设置项
定时解析功能:新增定时解析功能:支持配置定时解析间隔(默认6小时),提供独立的定时任务脚本,支持命令行和HTTP调用
配置界面简化:简化配置界面:移除"缓存时间"设置项,避免用户困惑,定时解析间隔设置中说明缓存时间会自动同步
思路:以"逻辑一致性"为核心,确保定时解析与缓存时间同步,提升用户体验和系统效率
2025/8/25v2.1.2界面优化缓存时间优化:RSS缓存设置优化:将缓存时间单位从秒改为天,默认值从360000秒(100小时)调整为10天,更符合用户使用习惯
移除超时设置:移除请求超时设置项:删除未使用的timeout配置项,简化插件设置界面
界面名称优化:管理界面名称优化:将"检测友链RSS"改为"检测友链RSS地址","定时解析控制"改为"定时解析RSS内容","前台展示页面"改为"前台接口地址","预览页面"改为"前台展示页面"
思路:以"用户体验优化"为核心,简化配置项,统一命名规范,提升界面友好度
2025/8/25v2.1.1管理界面优化预览页面地址:新增预览页面地址:在访问地址区域添加 /action/friends-rss?do=pageview 预览链接
管理界面优化:管理界面优化:将定时解析控制块替换解析RSS功能,移除定时任务设置说明,简化操作流程
移除预览页面块:移除预览页面块:简化管理界面,减少冗余展示区域
错误日志显示:新增错误日志显示:在管理页面中显示 error.log 日志内容,便于问题排查
思路:以"简化操作 + 增强监控"为核心,提升管理效率和问题诊断能力
2025/8/24v2.0.4UI布局优化UI布局优化:后台"添加 RSS 地址"区域 UI 调整:输入框与选择框长度比例优化(输入 65% / 选择 30%),取消选择框固定高度,移动端响应式更佳
select对齐修复:解决 Typecho 默认 select 固定高度 28px 导致与输入框不对齐的问题
思路:表单布局采用 flex,优先保障主要输入区可用性与可读性,减少视觉噪点
2025/8/24v2.0.3管理面板重构管理面板重构:管理面板重构:新增统计卡片、操作卡片与访问地址区块;友链与文章列表支持状态徽标,信息呈现更直观
最后更新修复:修复"最后更新"在无缓存时显示 1970 的问题,改为显示"暂无"
思路:采用 模块化卡片布局,将"检测/解析/添加"动作解耦,提升可维护性与扩展空间
2025/8/23v2.0.2锁文件机制锁文件机制:新增聚合任务 锁文件 机制;提供缓存清理与缓存统计;聚合结果持久化读取,页面可直接消费缓存
并发解析修复:修复并发解析导致缓存文件被覆盖/损坏的偶发问题;修复缓存为空时解析流程可能抛错的情况
思路:从"实时拉取"转为 缓存优先 的数据策略,后台按需触发解析,降低对外部源的耦合与压力
2025/8/23v2.0.1三轮RSS检测三轮RSS检测:引入 三轮 RSS 自动检测;为检测结果设置 24 小时缓存;细化请求超时与重定向限制,并记录响应头
链接解析修复:修复部分站点 HTML 中相对链接解析错误;修正 Content-Type 判断大小写不一致导致的识别失败
思路:采用"快速路径优先 → HTML 解析 → 兜底常见路径"的分轮策略,先提升成功率与速度,再做细化校验
2025/8/23v2.0.0解析器升级解析器升级:解析器升级:支持 RSS 2.0 / Atom 1.0 / RSS 1.0;清理与截断描述文本;新增 rss_config.json 用于手动配置;按发布时间倒序聚合并限制总量
XML解析修复:修复特殊字符、BOM 与控制字符导致 XML 解析失败的问题;增强 HTML 实体修复
思路:以"可靠解析"为核心:先清理再解析,最大化容错;将必要的清洗逻辑前置,保证数据质量
2025/8/23v1.5.0RSS输出功能RSS输出功能:提供聚合 RSS 输出 与可选 前台展示页面;后台展示最近文章与来源信息
时间排序修复:修复文章缺失时间时排序不稳定,统一回退到当前时间
思路:以 /action/friends-rss 为统一入口,降低主题/路由差异带来的接入成本
2025/8/23v1.4.0多源聚合功能多源聚合功能:支持多源聚合与发布时间排序;可配置"每博客文章数"与"聚合总数"
内存优化:优化大列表处理的内存开销,改为先按需切片再渲染
思路:将"数量限制"前移到聚合阶段,减少后续处理成本
2025/8/23v1.3.0摘要截断功能摘要截断功能:自动 截断摘要,保证列表简洁可读
HTML清理修复:修复未清理 HTML 标签导致的样式外溢问题
思路:以摘要优先,保证信息密度与浏览效率
2025/8/23v1.2.0手动添加RSS功能手动添加RSS功能:后台新增"手动添加 RSS"能力,为自动检测失败站点提供纠偏
JSON读写修复:修复首次保存配置时空文件读取异常,增强 json 读写容错
思路:自动检测与 人工纠偏 并行,提高覆盖率与准确度
2025/8/23v1.1.0性能参数配置性能参数配置:增加缓存时间、重定向上限与超时等基础性能参数配置
超时设置修复:修复部分环境下超时设置不生效的问题
思路:坚持"可控超时"原则,保证失败快速返回与系统整体可用性
2025/8/23v1.0.0初始版本初始版本:初始版本:多源 RSS/Atom 聚合、后台基础管理与展示
Bug:无
思路:提供最小可用集合,优先打通"来源 → 解析 → 聚合 → 展示"的闭环
最后修改:2025 年 09 月 02 日
如果觉得我的文章对你有用,请随意赞赏
END
本文作者:
文章标题:FriendsRSS - Typecho友链RSS自动订阅展示
本文地址:https://blog.ybyq.wang/archives/1044.html
版权说明:若无注明,本文皆Xuan's blog原创,转载请保留文章出处。