+++
title = "Web Feeds"
description = "Share RSS feeds with full-content and optional enclosures."
categories = ["search"]
tags = ["metadata", "robots", "SEO"]
features = ["snippets", "related content", "code highlighter"]
[[copyright]]
owner = "Josh Habdas"
date = "2019"
license = "agpl-3.0-or-later"
+++
After Dark provides RSS web feeds conforming with the {{< external "https://cyber.harvard.edu/rss/rss.html" "RSS 2.0 Specification" />}} and enhanced semantically using the following custom extensions:
- {{< external "https://purl.org/rss/1.0/modules/content/" "Content Module" />}} to convey the full content of pages and posts
- {{< external "https://purl.org/dc/elements/1.1/" "Dublin Core" />}} to give authorship credit on individual pages
- {{< external "https://www.w3.org/2005/Atom" "Atom" />}} for improved compatibility with Atom feeds
Feeds are generated automatically on a per-section basis, in addition to a consolidated site-wide feed combining content from across the site:
- [/index.xml](/index.xml) site-wide feed
- [/feature/index.xml](/feature/index.xml) features feed
- [/module/index.xml](/module/index.xml) modules feed
- [/shortcode/index.xml](/shortcode/index.xml) shortcodes feed
- [/extra/index.xml](/extra/index.xml) extras feed
Add multimedia attachments to pages and posts using RSS enclosures. Enclosures will output automatically to feeds when supplied. To supply an enclosure create a {{< external "https://gohugo.io/content-management/page-bundles/" "Page Bundle" />}} as described in [Post Images]({{< relref "post-images" >}}) and shown here for a blog post:
```
├── archetypes
├── content
│ └── post
│ └── backup-restore-macos-mojave
│ ├── assets
│ │ └── macos_v10.14.3-upgrade-fail.mp4
│ ├── images
│ └── index.md
├── layouts
```
Then reference the resource from front matter as shown here:
```toml
[[resources]]
src = "assets/macos_v10.14.3-upgrade-fail.mp4"
name = "enclosure"
title = "Software Update Malfunction: Mojave 10.14.3"
[resources.params]
length = "3705578"
```
{{% hackcss-alert type="info" %}}**Note:** Length is the number of bytes in the file and required by RSS 2.0 spec.{{% /hackcss-alert %}}
{{% hackcss-alert type="success" %}}**Tip:** From a terminal get length using `wc -c < /path/to/file`.{{% /hackcss-alert %}}
Enclosures may be output to page content by creating a custom shortcode or using a [Custom Layout]({{< relref "custom-layouts" >}}) with content like:
```go-html-template
{{ with .Resources.GetMatch "enclosure" }}{{ if .Params.length }}
Enclosure
{{ end }}{{ end }}
```
Use the {{< external "https://validator.w3.org/feed/" "W3C Feed Validation Service" />}} to validate your feed. For help creating custom shortcodes see {{< external "https://gohugo.io/templates/shortcode-templates/#create-custom-shortcodes" "Create Your Own Shortcodes" />}} on the Hugo docs site.
See {{< external "https://gohugo.io/templates/rss/" "RSS Templates" />}} in Hugo for additional information.