Transsmute

Transsmute (transmute + RSS) is a server written in Go that builds RSS
feeds for websites that don't provide them.
Currently, the following feed providers are supported:
- YouTube (channel, playlist)
- Container registries (DockerHub, ghcr.io)
- Kemono
Installation
Transsmute can be installed as a container (suggested) or as a compiled
binary.
Docker
A Docker container is available at ghcr.io/gabe565/transsmute
. The
containerized version of Transsmute will run on port 80 by default,
and accepts all configuration as flags or as environment variables.
See Configuration for more info.
docker run --rm -it -p 80:80 ghcr.io/gabe565/transsmute
Alternatively, an example docker-compose.yml
file
is provided.
Kubernetes
A Helm chart is available for Kubernetes deployment.
For more information, see
charts.gabe565.com or
Artifact Hub.
Configuration
Flag |
Environment Variable |
Description |
Default |
--address |
TRANSSMUTE_ADDRESS |
Listen address |
":3000" (":80" in container) |
--youtube-enabled |
TRANSSMUTE_YOUTUBE_ENABLED |
YouTube API enabled. |
true |
--youtube-key |
TRANSSMUTE_YOUTUBE_KEY |
YouTube API key. Required to enable YouTube routes! |
"" |
--docker-enabled |
TRANSSMUTE_DOCKER_ENABLED |
Docker API enabled. |
true |
--dockerhub-username |
TRANSSMUTE_DOCKERHUB_USERNAME |
DockerHub username for private repos. |
"" |
--dockerhub-password |
TRANSSMUTE_DOCKERHUB_PASSWORD |
DockerHub password for private repos. |
"" |
--ghcr-username |
TRANSSMUTE_GHCR_USERNAME |
GitHub username for ghcr.io repos. |
"" |
--ghcr-password |
TRANSSMUTE_GHCR_PASSWORD |
GitHub PAT for ghcr.io repos. |
"" |
--kemono-enabled |
TRANSSMUTE_KEMONO_ENABLED |
Kemono API enabled. |
true |
--kemono-hosts |
TRANSSMUTE_KEMONO_HOSTS |
Kemono API hosts, where the key is the URL prefix and the value is the host. |
kemono=kemono.su |
Command-line help reference is also available in docs.
DockerHub
DockerHub credentials are only required to access private repositories.
ghcr.io
A personal access token is used to authenticate into GitHub's ghcr.io API.
The only required scope is read:packages
.
Click here
to generate a personal access token with the necessary scopes prefilled.
Routes
Feed Type
An Atom feed is generated by default, but a file extension of
.json
or .rss
will change the output to the given format.
YouTube
/youtube/playlist/{playlist_id}
/youtube/channel/handle/{channel_handle}
/youtube/channel/username/{channel_username}
/youtube/channel/id/{channel_id}
Query Parameters
Name |
Description |
Default |
limit |
Limit the number of articles in the feed. |
15 |
no_embed |
Disables video iframe. Useful for RSS readers that automatically load videos like Miniflux. |
false |
Docker
Query Parameters
Name |
Description |
Default |
filter |
Anchored regex pattern used to filter tags. |
|
Kemono
/kemono/{service}/user/name/{user_name}
/kemono/{service}/user/id/{user_id}
/kemono/{service}/podcast/name/{user_name}
/kemono/{service}/podcast/id/{user_id}
Query Parameters
Name |
Description |
Default |
pages |
Maximum number of pages to load. Each page contains 50 posts. |
1 |
q |
Search query. |
|
tag |
Only include posts that contain the given tag. |
|