概述

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. 网盘地址:
    此处内容需要评论回复后(审核通过)方可阅读。

配置参数说明

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

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