You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: "Step-by-step guide to writing YAML configuration files for custom RSS feeds. Take control when ready-made feeds aren't enough."
2
+
title: "Creating Custom Feeds"
3
+
description: "Learn to write custom YAML configurations for RSS feeds when auto-sourcing isn't enough."
4
+
sidebar:
5
+
order: 2
4
6
---
5
7
6
-
When ready-made feeds aren't enough, you can write your own configuration files to create custom RSS feeds for any website. This guide shows you how to take full control with YAML configs.
8
+
When auto-sourcing isn't enough, you can write your own configuration files to create custom RSS feeds for any website. This guide shows you how to take full control with YAML configs.
7
9
8
-
**Prerequisites:** You should be familiar with the [Web Application](/web-application/getting-started)or [Ruby Gem](/ruby-gem/installation) before diving into custom configurations.
10
+
**Prerequisites:** You should be familiar with the [Getting Started](/getting-started)guide before diving into custom configurations.
9
11
10
12
---
11
13
12
14
## When to Use Custom Configs
13
15
14
16
**Use custom configs when:**
15
17
16
-
-**Ready-made feeds don't exist** for the website you want to follow
18
+
-**Auto-sourcing doesn't work** for the website you want to follow
17
19
-**Existing feeds are incomplete** or missing important content
18
20
-**You need specific formatting** or data extraction
19
21
-**The website has complex structure** that requires custom selectors
@@ -23,27 +25,6 @@ When ready-made feeds aren't enough, you can write your own configuration files
23
25
24
26
---
25
27
26
-
## Quick Start
27
-
28
-
**Need a feed right now?**
29
-
30
-
1.**[Try the web app](/web-application/getting-started)** - No coding required
31
-
2.**[Browse ready-made feeds](/feed-directory/)** - Use what others created
32
-
3.**Create a config** - When you need custom control (see below)
33
-
34
-
**Ready to create a config?** Jump to [Your First Config](#your-first-config).
35
-
36
-
### For html2rss-web Users
37
-
38
-
If you're using html2rss-web, you can add your config to the `feeds.yml` file:
39
-
40
-
1.**Find the example** - Check out the [`example` feed config](https://github.com/html2rss/html2rss-web/blob/master/config/feeds.yml#L9)
41
-
2.**Add your config** to the `feeds.yml` file
42
-
3.**Test it** by visiting your html2rss-web instance
43
-
4.**Debug** using browser developer tools if needed
44
-
45
-
---
46
-
47
28
## How It Works
48
29
49
30
A config file is a simple "recipe" that tells html2rss:
@@ -87,15 +68,6 @@ This says: "Find each article, get the title from the h2 anchor, and get the lin
87
68
88
69
**Need more details?** Check our [complete guide to selectors](/ruby-gem/reference/selectors/) for all the options.
89
70
90
-
## Configuration Options
91
-
92
-
html2rss-web supports all the same configuration options as the html2rss Ruby gem:
93
-
94
-
- **Basic selectors** for title, description, and links
95
-
- **Advanced features** like custom headers and dynamic parameters
96
-
- **Multiple strategies** for different types of websites
97
-
- **Post-processing** to clean up extracted content
98
-
99
71
---
100
72
101
73
## Your First Config
@@ -119,41 +91,64 @@ selectors:
119
91
attribute: href
120
92
```
121
93
122
-
**Step 3:** Test it with the [web app](/web-application/) or [Ruby gem](/ruby-gem/installation).
94
+
**Step 3:** Test it with your html2rss-web instance or the [Ruby gem](/ruby-gem/installation).
123
95
124
-
**Need help?** See our [detailed tutorial](/ruby-gem/tutorials/your-first-feed/) or [troubleshooting guide](/troubleshooting/troubleshooting) for common issues.
96
+
**Need help?** See our [troubleshooting guide](/troubleshooting/troubleshooting) for common issues.
125
97
126
98
---
127
99
128
-
## Troubleshooting
100
+
## Configuration Options
129
101
130
-
**Common issues when writing configs:**
102
+
html2rss supports many configuration options:
131
103
132
-
- **No items found?** Check your selectors with browser tools (F12) - the `items.selector` might not match the page structure
133
-
- **Invalid YAML?** Use spaces, not tabs, and ensure proper indentation
134
-
- **Website not loading?** Check the URL and try accessing it in your browser
135
-
- **Missing content?** Some websites load content with JavaScript - you may need to use the `browserless` strategy
136
-
- **Wrong data extracted?** Verify your selectors are pointing to the right elements
104
+
- **Basic selectors** for title, description, and links
105
+
- **Advanced features** like custom headers and dynamic parameters
106
+
- **Multiple strategies** for different types of websites
107
+
- **Post-processing** to clean up extracted content
137
108
138
-
**Need more help?** See our [comprehensive troubleshooting guide](/troubleshooting/troubleshooting) or ask in [GitHub Discussions](https://github.com/orgs/html2rss/discussions).
109
+
**See our [Ruby Gem Reference](/ruby-gem/reference/)** for complete documentation.
139
110
140
111
---
141
112
142
-
## Advanced Features
113
+
## Testing Your Config
114
+
115
+
**Before sharing your config, test it:**
116
+
117
+
1. **Test with Ruby gem:**
118
+
119
+
```bash
120
+
html2rss feed your-config.yml
121
+
```
122
+
123
+
2. **Test with web app:** Add your config to the `feeds.yml` file and restart your instance
143
124
144
-
**Dynamic parameters, custom headers, and more:** See our [advanced features guide](/ruby-gem/how-to/advanced-features/).
125
+
3. **Check the output:** Make sure all items have titles, links, and descriptions
145
126
146
127
---
147
128
148
-
## Contributing
129
+
## Sharing Your Config
149
130
150
-
**Share your config with the community:**
131
+
**Help the community by sharing your config:**
151
132
152
133
1. Go to [html2rss-configs on GitHub](https://github.com/html2rss/html2rss-configs)
3. Paste your config → "Commit new file" → "Open pull request"
155
136
156
-
**Need help?** See our [contribution guide](https://github.com/html2rss/html2rss-configs/blob/main/CONTRIBUTING.md).
137
+
**Need help?** See our [contribution guide](/get-involved/contributing) for detailed instructions.
138
+
139
+
---
140
+
141
+
## Troubleshooting
142
+
143
+
**Common issues when writing configs:**
144
+
145
+
- **No items found?** Check your selectors with browser tools (F12) - the `items.selector` might not match the page structure
146
+
- **Invalid YAML?** Use spaces, not tabs, and ensure proper indentation
147
+
- **Website not loading?** Check the URL and try accessing it in your browser
148
+
- **Missing content?** Some websites load content with JavaScript - you may need to use the `browserless` strategy
149
+
- **Wrong data extracted?** Verify your selectors are pointing to the right elements
150
+
151
+
**Need more help?** See our [comprehensive troubleshooting guide](/troubleshooting/troubleshooting) or ask in [GitHub Discussions](https://github.com/orgs/html2rss/discussions).
157
152
158
153
---
159
154
@@ -166,23 +161,11 @@ selectors:
166
161
**For Beginners:**
167
162
168
163
- **[Browse the Feed Directory](/feed-directory/)** - See real-world examples
169
-
- **[Try html2rss-web](/web-application/getting-started)** - Create feeds without coding
170
164
- **[Learn more about selectors](/ruby-gem/reference/selectors/)** - Master CSS selectors
165
+
- **[Submit your config via GitHub Web](https://github.com/html2rss/html2rss-configs)** - No Git knowledge required!
171
166
172
167
**For Contributors:**
173
168
174
-
- **[Submit your config via GitHub Web](https://github.com/html2rss/html2rss-configs)** - No Git knowledge required!
175
169
- **[Browse existing configs](https://github.com/html2rss/html2rss-configs/tree/master/lib/html2rss/configs)** - See real examples
176
170
- **[Join discussions](https://github.com/orgs/html2rss/discussions)** - Connect with other users
177
-
178
-
**For Developers:**
179
-
180
-
- **[Ruby Gem Documentation](/ruby-gem/)** - Full API reference
Copy file name to clipboardExpand all lines: src/content/docs/get-involved/contributing.mdx
+17-22Lines changed: 17 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,44 +15,39 @@ Before you begin, please read our [Code of Conduct](https://github.com/html2rss/
15
15
16
16
## How to Contribute
17
17
18
-
Here are some of the ways you can contribute to the `html2rss` project:
18
+
Here are the main ways you can contribute to the `html2rss` project:
19
19
20
-
### 1. Create a Feed Config
20
+
### 1. Create a Feed Config (Most Popular!)
21
21
22
22
Are you missing an RSS feed for a website? You can create your own feed config and share it with the community. It's a great way to get started with `html2rss` and help other users.
23
23
24
-
The html2rss "ecosystem" is a community project. We welcome contributions of all kinds. This includes new feed configs, suggesting and implementing features, providing bug fixes, documentation improvements, and any other kind of help.
24
+
**The easiest way to contribute:**
25
25
26
-
Which way you choose to add a new feed config is up to you. You can do it manually. Please [submit a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)!
26
+
1. Go to [html2rss-configs on GitHub](https://github.com/html2rss/html2rss-configs)
3. Paste your config → "Commit new file" → "Open pull request"
27
29
28
-
After you're done, you can test your feed config by running `bundle exec html2rss feed lib/html2rss/configs/<domainname.tld>/<path>.yml`.
30
+
**Need help writing configs?** See our [Creating Custom Feeds](/creating-custom-feeds) guide.
29
31
30
-
#### Preferred way: manually
32
+
**Want to test your config first?** Use the [Ruby gem](/ruby-gem/installation) to test it locally:
31
33
32
-
1. Fork the `html2rss-config` git repository and run `bundle install` (you need to have Ruby >= 3.3 installed).
33
-
2. Create a new folder and file following this convention: `lib/html2rss/configs/<domainname.tld>/<path>.yml`
34
-
3. Create the feed config in the `<path>.yml` file.
35
-
4. Add this spec file in the `spec/html2rss/configs/<domainname.tld>/<path>_spec.rb` file.
36
-
37
-
```ruby
38
-
RSpec.describe '<domainname.tld>/<path>'do
39
-
include_examples 'config.yml', described_class
40
-
end
34
+
```bash
35
+
html2rss feed your-config.yml
41
36
```
42
37
43
-
### 2. Improve this Website
38
+
### 2. Host a Public Instance
44
39
45
-
This website is built with Astro and Starlight and is hosted on GitHub Pages. If you have any ideas for improving the documentation or the design, we'd love to hear from you.
40
+
The [`html2rss-web`](https://github.com/html2rss/html2rss-web) project is a web application that provides RSS feeds with stable HTTPS URLs. You can host your own public instance to help other users access feeds.
46
41
47
-
[**Find the source code on GitHub**](https://github.com/html2rss/html2rss.github.io)
42
+
[**Learn how to host a public instance**](/web-application/how-to/deployment)
48
43
49
-
### 3. Host a Public Instance
44
+
### 3. Improve the Website
50
45
51
-
The [`html2rss-web`](https://github.com/html2rss/html2rss-web) project is a web application that allows you to create and manage your RSS feeds through a user-friendly interface. You can host your own public instance to help other users create feeds.
46
+
This website is built with Astro and Starlight and is hosted on GitHub Pages. If you have any ideas for improving the documentation or the design, we'd love to hear from you.
52
47
53
-
[**Learn how to host a public instance**](/web-application/how-to/deployment)
48
+
[**Find the source code on GitHub**](https://github.com/html2rss/html2rss.github.io)
54
49
55
-
### 4. Improve the `html2rss`Gem
50
+
### 4. Improve the `html2rss`Engine
56
51
57
52
Are you a Ruby developer? You can help us improve the core `html2rss` gem. Whether you're fixing a bug, adding a new feature, or improving the documentation, your contributions are welcome.
0 commit comments