Skip to main content

Hoyolab RSS Feeds

PyPI Python Version Tests Status Codecov

Generate RSS news feeds for Hoyoverse games like Genshin Impact, Honkai Starrail or Zenless Zone Zero based on the official Hoyolab forum posts. Available feed formats are Atom and JSON Feed. This application is supposed to run periodically by a cronjob for example.

Installation

You can install the application from PyPI with:

python3 -m pip install hoyolab-rss-feeds

... or pull as Docker image:

docker pull ghcr.io/c3kay/hoyolab-rss-feeds

Usage

CLI

You can run the application like this:

hoyolabrssfeeds

... or explicitly as module:

python3 -m hoyolabrssfeeds

You can specify a custom path to the config file as parameter:

hoyolabrssfeeds -c path/to/config.toml

If no configuration can be found, a default config will be created in your current directory (./hoyolab-rss-feeds.toml).

Module

You can use the application as Python module/library and customize feed generation:

from pathlib import Path
from hoyolabrssfeeds import FeedConfigLoader, GameFeed, GameFeedCollection, Game

async def generate_feeds():
    loader = FeedConfigLoader(Path("path/to/config.toml"))
    
    # option 1: all games found in config
    all_configs = await loader.get_all_feed_configs()
    feed_collection = GameFeedCollection.from_configs(all_configs)
    await feed_collection.create_feeds()
    
    # option 2: only a specific game from config
    genshin_config = await loader.get_feed_config(Game.GENSHIN)
    genshin_feed = GameFeed.from_config(genshin_config)
    await genshin_feed.create_feed()

Here you can find an example on how to create a feed without using the config file.

Docker

The application is also available as Docker image and can be run like this:

docker run \
  -v "/path/to/config.toml:/app/config.toml" \
  -v "/path/to/data:/data" \
  ghcr.io/c3kay/hoyolab-rss-feeds

The config file should be mounted to the default path /app/config.toml. The /data directory should be used as the target directory for the generated feeds and also need to be configured like so in the config file (see option feed.<format>.path below).

Note: You still need some kind of scheduler like cron or Kubernetes to run the image in a fixed interval to refresh the feeds!

Configuration

In the TOML config file you can define the games you want to create feeds for and in which format the feeds should be. Here is an example config:

language = "de-de"
category_size = 15

[genshin]
feed.json.path = "path/to/genshin.json"
feed.json.url = "https://example.org/genshin.json"
categories = ["Info", "Notices"]
category_size = 5
title = "Genshin Impact News"
icon = "https://example.org/icon.png"

[starrail]
feed.json.path = "path/to/starrail.json"
feed.json.url = "https://example.org/starrail.json"
feed.atom.path = "path/to/starrail.xml"
feed.atom.url = "https://example.org/starrail.xml"

A minimal configuration requires at least one game section with a feed.<format>.path entry. Available feed formats are currently json and atom. You can either use one format or both.

Entries defined at root level are considered default values and will apply to every game section. The feed key can only be used in a game section. All other keys can be defined at root level, and they can be overwritten by a game section.

The categories list defines the selected Hoyolab categories (Info, Event and Notices) for this feed. If this entry is omitted, all categories are selected. The category_size entry defines the amount of feed items (default: 5) of a category for each feed.

Note: When using Windows file paths (like C:\\path\to\config.toml), single quotes should be used to avoid wrong auto-escaping of backslashes. More info about the TOML format can be found in the official documentation.

Logging

Simple logs at level INFO are written to the terminal by default. If a file path is given via parameter (-l /path/to/out.log), the logs are written to this file.

If the application is used as module, the logger must be configured separately. The application specific logger is available by:

import logging
logger = logging.getLogger("hoyolabrssfeeds")

Options

Games

Game Section
Genshin Impact genshin
Honkai Impact 3rd honkai
Honkai: Starrail starrail
Zenless Zone Zero zenless
Tears of Themis themis
Honkai: Nexus Anima nexus
Petit Planet planet

Languages

English is the default language.

Language Code
German de-de
English en-us
Spanish es-es
French fr-fr
Indonesian id-id
Italian it-it
Japanese ja-jp
Korean ko-kr
Portuguese pt-pt
Russian ru-ru
Thai th-th
Turkish tr-tr
Vietnamese vi-vn
Chinese (CN) zh-cn
Chinese (TW) zh-tw

Metadata

Release files for hoyolab-rss-feeds 2.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hoyolab-rss-feeds 2.6.1
File Size Uploaded Provenance
hoyolab_rss_feeds-2.6.1.tar.gz 28.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hoyolab-rss-feeds 2.6.1
File Interpreter ABI Platform
hoyolab_rss_feeds-2.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 48.0 kB

Release files / hoyolab_rss_feeds-2.6.1.tar.gz

Download URL hoyolab_rss_feeds-2.6.1.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f7ff0525b0cea78bb678c170e3a62bf055d4299bce6ec88ebfab10ab5fd7c020
BLAKE2b-256 checksum
How to use checksums
7e5b1b5d9d33ce333552b4d079881b2086f9169000dc1611bf0b1e83a8cee30f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release files / hoyolab_rss_feeds-2.6.1-py3-none-any.whl

Download URL hoyolab_rss_feeds-2.6.1-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce05765080bc65df0f924d3d40519b3760f302b1e05ccbef46f9e531072ed37f
BLAKE2b-256 checksum
How to use checksums
06dbf845448b29ab0c493f9db858783553262fcfef9b7a2b8ea3c447f7e104e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Security for hoyolab-rss-feeds 2.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hoyolab_rss_feeds-2.6.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page