# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。