RSSHub Route Generator

Polar Sponsor
爱发电 赞助
.NET 9.0

分析任意网站结构,自动生成符合 RSSHub 规范的路由 TypeScript 代码及栏目与文章选择器配置。

RSSHub 路由生成器

功能概述

RSSHub 路由生成器是一项面向实际任务的技能,主要用于深度分析网站结构,生成 RSSHub 路由代码;本技能用于分析任意网站结构,并生成符合 RSSHub 规范的路由代码文件;

核心要点

  • 生成的路由支持:;
  • 栏目列表 RSS;
  • 全文 RSS(可选);

使用与执行

RSSHub Radar 规则;当用户发送以下内容时激活本技能:;"生成 RSSHub 路由";"帮我创建 RSS";"为网站生成 RSS 订阅";"制作 RSSHub 路由"。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

结果检查与注意事项

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

RSSHub 路由生成器

深度分析网站结构,生成 RSSHub 路由代码

技能描述

本技能用于分析任意网站结构,并生成符合 RSSHub 规范的路由代码文件。生成的路由支持:

  • 栏目列表 RSS
  • 全文 RSS(可选)
  • RSSHub Radar 规则

触发词

当用户发送以下内容时激活本技能:

  • "生成 RSSHub 路由"
  • "帮我创建 RSS"
  • "为网站生成 RSS 订阅"
  • "制作 RSSHub 路由"
  • "生成 RSS 路由"
  • 任意网站 URL(将自动检测并询问是否需要生成 RSSHub 路由)

执行逻辑

第一步:网站深度分析

  1. 页面结构探测

    • 使用 web_fetch 获取页面 HTML 内容
    • 识别文章列表容器(常见选择器:ul、div.list、div.news-list、article)
    • 识别标题元素(h1-h6、a、div.title)
    • 识别日期元素(time、span.date、[datetime])
    • 识别分类标签(span.category、a.tag)
  2. 栏目识别

    • 扫描导航菜单中的栏目链接
    • 识别侧边栏分类
    • 识别面包屑导航
  3. 链接模式分析

    • 分析内链路径模式(如 /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_description}',
        item: fulltextItems,
        language: 'zh-cn',
    };
}

第三步:文件输出

生成的路由文件保存到工作目录,命名格式:

  • 主路由:rsshub-routes/{domain}/{route-name}.ts
  • 命名空间:rsshub-routes/{domain}/namespace.ts(如需)

输出格式

1. 网站分析报告

## 网站结构分析

### 基本信息
- 域名:{domain}
- 网站标题:{title}
- 语言:{language}

### 栏目结构
| 栏目名 | URL 模式 | 列表选择器 |
|--------|----------|-----------|
| 栏目1 | /news/ | div.news-list li |
| 栏目2 | /notice/ | ul.article-list li |

### 文章结构
- 标题选择器:{title_selector}
- 链接选择器:{link_selector}
- 日期选择器:{date_selector}
- 分类选择器:{category_selector}
- 内容选择器:{content_selector}

### 生成路由
```typescript
{generated_code}
### 2. 路由文件

生成完整的 `.ts` 文件,可直接复制到 RSSHub 项目使用。

## 常见选择器模式参考

### 政府网站
```javascript
// 列表项
$('ul.list li', 'div.news-list li', 'table tr')

// 标题
$('a[title]', 'h3 a', '.title a')

// 日期
$('span.date', '.time', '[datetime]')

// 内容
$('#content', '.article-content', '.main-content')

新闻网站

// 列表
$('.news-list li', '.article-list .item', 'div.container ul li')

// 正文
$('.article-body', '.content', '.post-content')

论坛社区

// 帖子列表
$('.thread-list tr', '.topic-item', '.post-list .item')

// 内容
$('.thread-content', '.post-body', '.message')

最佳实践

  1. 缓存策略:使用 ofetch 并配置合理的缓存 key
  2. 并发控制:详情页获取使用 pMap 控制并发(建议 3-5)
  3. 错误处理:每个请求都用 try-catch 包装
  4. 去重:使用 Map 或 Set 去重
  5. 分页:支持 limit 参数,默认 20 条
  6. 全文:可选 fulltext 参数控制是否获取全文

示例工作流

用户输入:

为 https://example.com/news/ 生成 RSSHub 路由

技能执行:

  1. 访问页面,分析结构
  2. 识别栏目和列表模式
  3. 生成路由代码
  4. 输出分析报告和代码文件

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习