您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Docsify 中怎么自动生成RSS订阅
## 前言
在技术文档领域,RSS订阅是让读者及时获取内容更新的重要方式。对于使用Docsify构建的文档网站,虽然官方没有直接提供RSS生成功能,但通过插件和自定义脚本完全可以实现自动化生成。本文将详细介绍三种实现方案,并提供完整代码示例。
## 方案一:使用docsify-rss-plugin(推荐)
### 安装与配置
1. 通过npm安装插件:
```bash
npm install docsify-rss-plugin --save
index.html
中引入:<script src="//cdn.jsdelivr.net/npm/docsify-rss-plugin/dist/rss.min.js"></script>
window.$docsify = {
plugins: [
RSSPlugin({
title: '我的技术文档',
description: '最新技术文章更新',
feed_url: 'https://yourdomain.com/rss.xml',
site_url: 'https://yourdomain.com',
copyright: '2024 Your Name',
count: 20,
filter: (filename) => filename.indexOf('.md') > -1
})
]
}
参数 | 说明 | 默认值 |
---|---|---|
title |
RSS标题 | 必填 |
description |
描述信息 | 可选 |
feed_url |
RSS访问地址 | 必填 |
language |
语言代码 | ‘zh-cn’ |
generator |
生成器声明 | ‘docsify-rss-plugin’ |
count |
显示最新文章数 | 10 |
# generate_rss.py
import glob
import xml.etree.ElementTree as ET
from datetime import datetime
md_files = sorted(glob.glob('docs/**/*.md', recursive=True),
key=lambda x: os.path.getmtime(x), reverse=True)[:10]
rss = ET.Element("rss", version="2.0")
channel = ET.SubElement(rss, "channel")
# 添加channel信息和item节点
name: Generate RSS
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
- run: pip install python-frontmatter
- run: python generate_rss.py
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
// scripts/rss-generator.js
const fs = require('fs');
const path = require('path');
const matter = require('gray-matter');
function generateRSS() {
const posts = [];
// 递归读取所有markdown文件
walkDir('docs', (filePath) => {
if (path.extname(filePath) === '.md') {
const content = fs.readFileSync(filePath, 'utf-8');
const { data } = matter(content);
posts.push({
title: data.title || path.basename(filePath),
date: new Date(data.date || fs.statSync(filePath).mtime),
url: filePath.replace('docs', '').replace('.md', ''),
content: data.description || ''
});
}
});
// 按照日期排序并生成XML
const rssContent = `<?xml version="1.0"?>
<rss version="2.0">...</rss>`;
fs.writeFileSync('docs/rss.xml', rssContent);
}
"scripts": {
"generate-rss": "node scripts/rss-generator.js",
"dev": "docsify serve docs & npm run generate-rss -- --watch"
}
内容过滤:建议通过front matter添加rss: true/false
控制是否包含在RSS中
缓存处理:
// 在插件配置中添加缓存控制
headers: {
'Cache-Control': 'max-age=3600',
'Content-Type': 'application/rss+xml; charset=utf-8'
}
<link rel="alternate" type="application/rss+xml" href="/rss.xml" title="RSS订阅">
// 在生成XML时添加编码声明
'<?xml version="1.0" encoding="UTF-8"?>'
// 使用ISO标准格式
new Date().toISOString()
try {
generateRSS();
} catch (e) {
console.error('RSS生成失败:', e);
process.exit(1);
}
通过上述任一方案,都可以为Docsify文档添加专业的RSS订阅功能。对于个人项目推荐使用方案一,企业级项目建议采用方案二的自动化方案。实际使用时可根据需要组合这些技术,例如同时使用插件生成基础RSS,再通过GitHub Actions添加自定义处理逻辑。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。