Rsshub Route Generator
Skill by benzking
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/benzking/rsshub-route-generatorRSSHub 路由生成器
深度分析网站结构,生成 RSSHub 路由代码
技能描述
本技能用于分析任意网站结构,并生成符合 RSSHub 规范的路由代码文件。生成的路由支持:
- 栏目列表 RSS
- 全文 RSS(可选)
- RSSHub Radar 规则
触发词
当用户发送以下内容时激活本技能:
- "生成 RSSHub 路由"
- "帮我创建 RSS"
- "为网站生成 RSS 订阅"
- "制作 RSSHub 路由"
- "生成 RSS 路由"
- 任意网站 URL(将自动检测并询问是否需要生成 RSSHub 路由)
执行逻辑
第一步:网站深度分析
-
页面结构探测
- 使用
web_fetch获取页面 HTML 内容 - 识别文章列表容器(常见选择器:
ul、div.list、div.news-list、article) - 识别标题元素(
h1-h6、a、div.title) - 识别日期元素(
time、span.date、[datetime]) - 识别分类标签(
span.category、a.tag)
- 使用
-
栏目识别
- 扫描导航菜单中的栏目链接
- 识别侧边栏分类
- 识别面包屑导航
-
链接模式分析
- 分析内链路径模式(如
/news/2024/01/xxx.html) - 识别分页结构
- 确定详情页 URL 格式
- 分析内链路径模式(如
第二步:RSSHub 路由生成
根据分析结果生成 TypeScript 代码文件,遵循以下规范:
import { Route } from '@/types';
import got from '@/utils/got';
import { load } from 'cheerio';
import { parseDate } from '@/utils/parse-date';
export const route: Route = {
path: '/{category}',
categories: ['{category}'],
example: '/{site}/{category}',
parameters: {
category: '分类名称,默认为 all',
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['{domain}/'],
target: '/{category}',
},
],
name: '{网站名称}',
maintainers: [],
handler,
url: '{domain}',
description: `{网站描述}`,
};
async function handler(ctx) {
const category = ctx.req.param('category') || 'all';
const baseUrl = '{website_url}';
// 构建请求 URL
const url = category === 'all'
? `${baseUrl}/`
: `${baseUrl}/${category}/`;
// 获取页面内容
const response = await got({ method: 'get', url });
const $ = load(response.data);
// 解析文章列表
const items = $('{list_selector}').map((_, element) => {
const $el = $(element);
return {
title: $el.find('{title_selector}').text().trim(),
link: new URL($el.find('{link_selector}').attr('href'), baseUrl).href,
pubDate: parseDate($el.find('{date_selector}').text().trim(), 'YYYY-MM-DD'),
category: $el.find('{category_selector}').text().trim(),
};
}).get();
// 获取全文内容(可选)
const fulltextItems = await Promise.all(
items.slice(0, 10).map(async (item) => {
try {
const detailResponse = await got({ method: 'get', url: item.link });
const detail$ = load(detailResponse.data);
item.description = detail$('{content_selector}').html();
return item;
} catch {
return item;
}
})
);
return {
title: '{website_title}',
link: baseUrl,
description: '{website_...
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-benzking-rsshub-route-generator": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
wechat-article-exporter
微信公众号推文长截图导出工具。支持多种链接格式,自动处理懒加载图片、视频占位符、底部工具栏遮挡等问题。触发词:微信文章导出、公众号截图、推文保存、mp.weixin.qq.com。
wechat-article-to-markdown
This skill converts WeChat Official Account (微信公众号) article pages into high-quality, clean Markdown format. It should be used when the user provides a WeChat article URL (mp.weixin.qq.com) and wants to convert, extract, save, or archive the article content as Markdown. Trigger phrases include "convert WeChat article", "微信文章转Markdown", "save this WeChat article", "extract article content", "抓取微信文章", "文章转MD", or when a mp.weixin.qq.com URL is provided.
wechat-article-export
微信公众号多功能导出工具。將公眾號文章導出為長截圖(PNG)、PDF 或 Markdown,支持任選一種或多種格式。觸發詞:「導出微信文章」、「公眾號截圖」、「文章轉PDF」、「文章轉Markdown」、「微信導出」。
wechat-article-to-markdown
This skill converts WeChat Official Account (微信公众号) article pages into high-quality, clean Markdown format. It should be used when the user provides a WeChat article URL (mp.weixin.qq.com) and wants to convert, extract, save, or archive the article content as Markdown. Trigger phrases include "convert WeChat article", "微信文章转Markdown", "save this WeChat article", "extract article content", "抓取微信文章", "文章转MD", or when a mp.weixin.qq.com URL is provided.
Nintendo Switch Daily Report
Skill by benzking