> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.petto.sbs/llms.txt
> Use this file to discover all available pages before exploring further.

# Feeds

> Follow YouTube, Twitch, Spotify, Reddit, GitHub and many more services, and Petto posts a card in your channel each time they publish.

## Overview

A **feed** follows one account of another service and posts a card in a channel each time it publishes something. It works for **YouTube, Twitch and Kick** (videos and live streams), **Spotify, Deezer and Apple Music** (new releases and podcast episodes), **Bluesky, Mastodon, Reddit, Tumblr, Pinterest and Letterboxd**, **GitHub, npm, PyPI, Modrinth, Steam and AniList**, any website with an RSS feed, and for things that need no account: the **free games of Epic Games**, the Pokémon, an article of Wikipedia and the puzzle of Chess.com.

We are working hard to bring more services every week: tell us which one you miss in the [feedback](https://wiki.petto.sbs/miscellaneous/feedback.md) page.

Everything starts **from now on**: when you follow an account, what it already published is not posted, only what comes next. Each notice is posted once, even if Petto restarts.

![A Twitch card in the streams channel that pings Stream pings, with the title of the stream, the picture, the time and a Watch live button](https://mintcdn.com/wikipetto/Z-XTVemdYTr1KRaH/images/discord/automation/feeds.webp?fit=max\&auto=format\&n=Z-XTVemdYTr1KRaH\&q=85\&s=4f35438415520d84e0fb53d1418a9b63)

In Discord: the live notice of a followed Twitch channel, with the role it pings.

## Commands

You need the **Manage Server** permission.

```javascript Syntax theme={null}
!feed add <platform> [account] [channel]
!feed list
!feed remove <id>
!feed test <id>
!feed pause <id>
!feed resume <id>
!feed message <id> <text|clear>
!feed ping <id> [role] [everyone]
```

```javascript Example theme={null}
!feed add youtube @MrBeast #videos
!feed add twitch ibai #streams
!feed add github PettoBot/petto-bot #updates
!feed add rss https://example.com/blog #news
!feed add spotify https://open.spotify.com/artist/... #music
!feed add pokemon 30m #daily
!feed message 1 {feed.author} just posted: {feed.title}
!feed ping 1 @Subscribers
!feed test 1
```

| Command | What it does |
| - | - |
| `add` | Follows an account in a channel (the one you are in if you leave it out). The first look marks what already exists, so nothing old is posted |
| `list` | The feeds of the server with their number, the channel and how each one is doing |
| `remove` | Stops following. What was already posted stays |
| `test` | Posts a test notice in the channel of the feed, to see how it looks |
| `pause` / `resume` | Stops or starts the feed without deleting it |
| `message` | The words above each notice, with [variables](#variables). `clear` removes them. Without your own words, see [The default line](#the-default-line) |
| `ping` | Mentions a role with each notice, or `@everyone` with `true` after the id (`!feed ping 1 true`). Without either, nobody is mentioned |

> [accordion] !feed add
>
> ![liam follows PettoLand on Twitch in #streams and Petto Land on YouTube in #announcements, and Petto answers with the number of each feed](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-add.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=690eb9df5eb298435801ae734bb38b3b)
>
> In Discord: a Twitch and a YouTube account followed.

> [accordion] !feed add (auto feed)
>
> ![liam adds pokemon 30m in #general and Petto confirms the feed of the Pokédex](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-add-auto.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=1d54ac8d4fe5d9916d0efc4146926eb5)
>
> In Discord: the Pokémon every 30 minutes.

> [accordion] !feed add (refused)
>
> ![kira tries a YouTube name that does not exist and Petto cannot find it, then PettoLand on Twitch and Petto says it is already followed there](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-add-refused.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=17e4d7368aa803b28c4e9f1ab833eb2d)
>
> In Discord: an account that is not found, and one already followed in that channel.

> [accordion] !feed list
>
> ![chu lists the five feeds with their number, platform, account, channel and state, r/aww paused because Petto cannot post there](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-list.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=e82f0ad7d33dae9c0efbb5762b5cd887)
>
> In Discord: the feeds of the server and how each one is doing.

> [accordion] !feed remove
>
> ![liam removes feed 3 and Petto stops following PettoBot/petto-bot, then feed 9 does not exist](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-remove.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=19579df9a56875c7c03bfe30a684400f)
>
> In Discord: a feed removed, and a number that is not a feed.

> [accordion] !feed test
>
> ![liam tests feed 1 and Petto says a test notice was posted in #streams](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-test.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=fe21b87fed31d6ccba3b5cd093a5e6dc)
>
> In Discord: the answer to a test.

> [accordion] !feed pause
>
> ![liam pauses feed 2 and Petto confirms it](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-pause.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=d6717d91eb8433a96465e401f8202fd2)
>
> In Discord: a feed paused.

> [accordion] !feed resume
>
> ![liam resumes feed 5, r/aww, and Petto says it is on again](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-resume.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=360967e006bc26539a0edacfec5676ef)
>
> In Discord: a paused feed on again.

> [accordion] !feed message
>
> ![liam writes \{feed.author} just posted: \{feed.title} for feed 2 and Petto saves them, then clear removes them](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-message.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=03d31032b64f8211bd35409e206ba853)
>
> In Discord: the words above each notice, then removed.

> [accordion] !feed ping
>
> ![liam makes feed 1 mention Stream pings and Petto confirms it, then feed 3 with no role mentions nobody](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-ping.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=7110f6447488e099855af5c77ba81895)
>
> In Discord: a role mentioned with each notice, and no one.

`!feeds`, `!notify` and `!notifications` do the same as `!feed`, and `!feed` alone shows the list. It is a prefix command only.

`!feed test` posts the test notice in the channel of the feed, marked as a test:

![Petto's test notice: the line Test notice, this is how it will look, over the card of the newest release of PettoBot/petto-bot](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-test-notice.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=1547880eebd300b0e4ce787435c2370f)

In Discord: the test notice of the GitHub feed in #announcements.

## The default line

When you wrote no words of your own with `!feed message`, a feed of a creator, a channel or a project followed by name starts the notice with a short line, like `Hey everyone! **Name** just uploaded a new video.` These platforms send it: **YouTube, Twitch, Kick, Bluesky, Modrinth, Mastodon, Tumblr, Letterboxd, GitHub, npm, PyPI, Steam** and the music feeds (**Spotify, Deezer and Apple Music**).

The rest send only the card, with no line above it: **Reddit, Pinterest, RSS, AniList, Pokémon, Wikipedia, Chess.com, Epic Games**, the animal feeds, the pictures feed and the random music feed.

A feed with its own words keeps them exactly as you wrote them, and `!feed message <id> clear` goes back to the default line (or to no line, on the platforms that send none).

## What each platform posts

| Platform | What you write | What it posts |
| - | - | - |
| **YouTube** | The link of the channel or its `@name` | New videos, Shorts and live streams |
| **Twitch** | The name or the link of the channel | When it goes live |
| **Kick** | The name or the link of the channel | When it goes live |
| **Spotify** | The link or the name of an artist, a podcast or a playlist. `new colombia` for the new albums of a country | New releases of an artist, new episodes of a podcast, the songs added to a playlist, the new albums of a country |
| **Deezer** | The link or the name of an artist or a playlist. `top rock` for a chart | New albums and singles, the songs added to a playlist, a song or album that enters a chart |
| **Apple Music** | The link or the name of an artist. `top colombia` for the chart of a country | New albums and singles, a song or album that enters the chart |
| **Bluesky** | The handle (`name.bsky.social`) or the link of the profile | New posts |
| **Mastodon** | `@name@server` (for example `@Gargron@mastodon.social`) or the link of the profile | New public posts. Mastodon is a social network like X, but made of many servers (mastodon.social, mastodon.online…): each account lives on one, and its name ends with it |
| **Reddit** | `r/name` or the link of the subreddit | New posts |
| **Tumblr** | The name or the link of the blog | New posts |
| **Pinterest** | The link of a profile or of one of its boards | New pins |
| **Letterboxd** | The user name or the link of the profile | What the person watches and writes |
| **Steam** | The link of the game in the Steam store. Or `new`, `top` or `coming soon` for the lists of the store | The announcements of a game, or the games that enter a list of the store (these can be busy) |
| **GitHub** | `owner/repository` or its link | New releases |
| **Modrinth** | The link or the name of the mod, plugin or pack. Or `new mods`, `new shaders`, `new mods shaders`… or just `new` | New versions of a project, or the **newest projects** of one or several kinds in the same feed (so one place of the limit is enough), with a *New project* notice. This can be busy |
| **npm** / **PyPI** | The name of the package or its link | New versions |
| **AniList** | The name of the anime or its AniList link | New episodes |
| **RSS** | The link of a blog or news site, or of its RSS or Atom feed | New posts. If you paste the page, Petto finds its feed |
| **Epic Games** | Nothing | The games that are free this week, in the language and country of the server |
| **Wikipedia** | How often (see below) | The featured article of the day, or a random article, in the language of the server |
| **Chess.com** | How often (see below) | The daily puzzle, or a random one |
| **Pokémon** | How often (see below) | The Pokémon of the day, or the next one of the Pokédex |
| **Animals** | How often (see below) and, if you want, which ones: `cat`, `dog`, `fox`, `bird`, `duck`, `capybara`, `bunny` (`!feed add animals cat dog 30m`). None means any of them | A picture of one of those animals, a different one each time, the same for every server that picked the same pace and animals. Each animal has several free services and the next one answers when one is down. It is only the picture in a clean card, with no icon, source or button. The old feeds of one animal each (Cats, Dogs…) keep working |
| **Random music** | How often (see below) | A song picked at random from Deezer, Apple Music or Spotify (Spotify only if the bot has its keys), with the cover card of the song |
| **Pictures** | How often (see below) and one to four words, like `pink`, `cats aesthetic` or `anime roses` (`!feed add pictures anime roses 30m`) | A picture of what you wrote, searched in several places for **safe** pictures only: with an anime word (`anime`, `manga`, `waifu`, `chibi`, `ghibli`, `otaku`, `vtuber`) in **Wallhaven** and **Safebooru**; with the keys of the bot, in **Google Images**, **Pixabay**, **Pexels** and **Unsplash**; and always in **Openverse** and the public tags of **Flickr**. A place that fails is skipped. The card is only the picture. Pinterest has no public search, so it cannot be used for this. The pictures are not checked one by one: some words are refused, but choose a channel you trust |

> [accordion] YouTube: a video
>
> ![A red card with the title of the video as a link, its description, the thumbnail and a Watch on YouTube button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-youtube-video.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=3f63b0812025eb35c47b5424a17df20e)
>
> In Discord: a new video of Petto Land, pinging Stream pings.

> [accordion] YouTube: a live stream
>
> ![A red live card with the title, the viewers, the picture and a Watch live button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-youtube-live.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=d619c34472292ec9617280530908ab9b)
>
> In Discord: a live stream of the channel.

> [accordion] Kick
>
> ![A green Kick card with the title of the stream, the category and viewers, the Kick live picture and a Watch live button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-kick.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=2193e2564c21e583e2c57c67a840dcf4)
>
> In Discord: a live stream of Kick, with Kick's picture until the real one exists.

> [accordion] Spotify
>
> ![A green card headed by the cover of Night Drive next to a panel with the title and the artist, and a Listen on Spotify button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-spotify.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=ca85abdec3f0f5a1f1a3007109b93d62)
>
> In Discord: a new album, headed by its cover card.

> [accordion] Deezer
>
> ![A purple card headed by the cover of Summer Tapes, with a Listen on Deezer button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-deezer.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=58c577e138946da1cfc04b3fd716b41a)
>
> In Discord: a new single.

> [accordion] Apple Music
>
> ![A red card headed by the cover of Night Drive, with a Listen on Apple Music button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-applemusic.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=af1dc6a62774f81bbb622851db72539f)
>
> In Discord: a new album.

> [accordion] Bluesky
>
> ![A blue card with the post, its picture and a Read on Bluesky button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-bluesky.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=1ac180a62f97bae766af22c4483055e6)
>
> In Discord: a new post with its picture.

> [accordion] Mastodon
>
> ![A purple card with the post of @pettoland@mastodon.social, its picture and a Read on Mastodon button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-mastodon.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=99138e66777e662ff63040af9c1ad9a6)
>
> In Discord: a new public post.

> [accordion] Reddit
>
> ![An orange card with a post of r/aww, its picture and a Read on Reddit button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-reddit.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=621b1607145f956e8e8b8ab34bde1d4f)
>
> In Discord: a new post of a subreddit.

> [accordion] Tumblr
>
> ![A dark blue card with the post, its picture and a Read on Tumblr button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-tumblr.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=0f0eb375d7544b047970319e61dbfccb)
>
> In Discord: a new post of a blog.

> [accordion] Pinterest
>
> ![A red card with the pin Cozy purple desk setup, its picture and a See on Pinterest button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-pinterest.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=0a59758a5f64c508ac6d041760db0285)
>
> In Discord: a new pin.

> [accordion] Letterboxd
>
> ![A green card with the film, the review, the poster and a Read on Letterboxd button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-letterboxd.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=37a3ca890d4b3bbe8eef100a66d77c88)
>
> In Discord: what someone watched and wrote.

> [accordion] Steam
>
> ![A light blue card with the 1.4 update of Duck Valley, its header picture and a Read on Steam button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-steam.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=b46375835d3e1b9c7962ffd4bb273c52)
>
> In Discord: an announcement of a game.

> [accordion] GitHub
>
> ![A grey card with v4.2.0 of PettoBot/petto-bot, its notes and a See on GitHub button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-github.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=ef91db783ceb5d1b9f39797d910152f2)
>
> In Discord: a new release.

> [accordion] Modrinth: a version
>
> ![A green card with Cozy Ducks 2.1.0, its changes, Fabric 1.21 and a See on Modrinth button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-modrinth.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=2eab10cc8f7dfaebe62a9622a9ea8bd4)
>
> In Discord: a new version of a mod.
>
> ![A green card with the new mod Duck Furniture, marked New project](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-modrinth-project.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=af5fd0e85100a303ec46666cc8335412)
>
> In Discord: a new project of the list of new mods.

> [accordion] npm / PyPI
>
> ![A red card with discord.js 14.22.0, New version, and a See on npm button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-npm.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=a9bd9fc026ad5f5f4714039abf5be797)
>
> In Discord: a new version of a package.

> [accordion] AniList
>
> ![A blue card with episode 8 of Duck Quest, the cover and a See on AniList button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-anilist.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=b0e867fb5df542ba7fbcfbffcb6acaa9)
>
> In Discord: a new episode.

> [accordion] RSS
>
> ![An orange card with the October update of the Petto blog, its picture and a Read on RSS button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-rss.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=c276260b11731da957c91946a8424672)
>
> In Discord: a new post of a blog.

> [accordion] Epic Games
>
> ![A white card with Duck Valley, Free until a date, its picture and a Get it free button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-epic.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=db50eb238fe2b4974cf434fa9d11bf6e)
>
> In Discord: a free game of the week, with the day it stops being free.

> [accordion] Wikipedia
>
> ![A grey card with the article Duck, its summary and picture, and a See more button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-wikipedia.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=ce0e36ac375f806f28ce6b4bb8c2dd8d)
>
> In Discord: the article of the day, in the language of the server.

> [accordion] Chess.com
>
> ![A green card with the daily puzzle and its board](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-chess.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=7d46da7a89492edfeb4aca0932da403f)
>
> In Discord: the daily puzzle.

> [accordion] Pokémon
>
> ![A yellow card with #0054 Psyduck, its Pokédex entry, its type, height and weight, and a See more button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-pokemon.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=5689c13c11cfa3419a2e484d181fdb95)
>
> In Discord: the Pokémon of the day.

> [accordion] Animals
>
> ![A purple card with a picture of a duck and a See the photo button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-animals.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=4e80d25a8c32cef2e85e893cfb3bc92f)
>
> In Discord: a picture of an animal, with nothing about where it comes from.

> [accordion] Random music
>
> ![A purple card headed by the cover of Pink Clouds, A song for you, and a Listen button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-randommusic.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=02bdd3db9cb2f3401b1d4a252864bcc5)
>
> In Discord: a song picked at random, with its cover card.

> [accordion] Pictures
>
> ![A pink card that says what it searched and Openverse, with the picture and a See the photo button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-pictures.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=5dc422f00ef915b7935e99ffd3a93428)
>
> In Discord: a picture of what was searched.

## Auto feeds: how often

The Pokémon, Wikipedia, Chess.com, the animals, the random music and the pictures have no account to follow: Petto posts on its own, at the pace you choose. Write it after the platform: `!feed add pokemon 30m`, or pick **How often** in the dashboard.

| You write | It posts |
| - | - |
| nothing, `1d` | Once a day (the Pokémon of the day, the featured article, the daily puzzle) |
| `12h`, `6h`, `3h`, `1h` | A new one every 12, 6, 3 hours, every hour |
| `30m`, `15m`, `5m` | A new one every 30, 15 or 5 minutes |

**5 minutes is the shortest**, so a channel is never flooded. Every server that picks the same pace gets the same notice at the same time, and the services behind them are asked once for each slot, not once for each server. You can change the pace of a feed later from the dashboard.

## Live streams

* A live notice goes out **within a minute or two** of the start (Twitch and Kick are asked every minute).
* **YouTube tells Petto by itself** when a followed channel publishes (a video, a Short or a stream), so those notices go out within seconds and a channel does not have to be asked all the time. If that ever stops working, Petto goes back to looking at each channel every few minutes: nothing is lost.
* **Kick** makes the picture of a stream a little after it starts. The notice does not wait for it: it goes out at once with a picture of Kick, and **the same message is edited** to show the real picture as soon as it exists.
* **Twitch** does the same when the preview of the stream is not ready yet.
* The notice says **when the stream began**, also for a stream that was scheduled days before.
* When a stream **ends**, its card is edited to grey with two buttons: the channel and the replay.

![The Twitch card of game night marked Stream ended, with the Open the channel and Watch the replay buttons](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-live-ended.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=c04b52f0684a2b553ed3f040f93dd836)

In Discord: a stream that ended: the card in grey with the channel and the replay.

> [!WARNING]
>
> **A stream is never posted as a video.** YouTube feeds need the bot to have its YouTube key, because without it a live stream cannot be told from a video. If YouTube cannot be asked at a given moment, nothing is posted and Petto tries again later. When a stream ends, its recording is not posted as a new video.

**X, Instagram and TikTok** are not available yet. They charge for access, or have no public way to follow an account, so they will be **Premium only**; the dashboard and the [Premium page](https://petto.sbs/premium) show them locked with the reason.

## Limits

The limit is **for each platform**:

| | Free | Premium |
| - | - | - |
| Accounts of each platform | 5 | 25 |

So a Free server can follow 5 YouTube channels, **and** 5 Twitch channels, **and** 5 subreddits, and so on. The same account in two channels counts as two feeds.

## The card

Each notice is a card in the color of the platform (Reddit and Pinterest are described below), with the title as a link, the picture of the account, a short description when there is one, the cover, and the kind of notice with the time. A **Short** is posted as its link by default, so Discord plays it; with **Show the video player** turned off it gets a card without the big picture. For **YouTube** videos and Shorts, **Show the video player** (in *More options*) posts the link instead of the card, so Discord plays the video right there; streams keep their card. A **new release of music** (Spotify, Deezer, Apple Music) is headed by the same picture as `!deezer`: the cover next to a panel with the title and the artist, with a button that opens it.

![A red YouTube card with the title of the Short, New Short, Petto Land, the time and a Watch on YouTube button](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-youtube-short.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=21feafa3226aca63d639dc6e5794bf79)

In Discord: a YouTube Short with the video player off: the card has no big picture.

![Petto's message with the words of the feed and the link of the video](https://mintcdn.com/wikipetto/gEO057FEUP0ZYwUG/images/discord/automation/feeds-card-youtube-player.webp?fit=max\&auto=format\&n=gEO057FEUP0ZYwUG\&q=85\&s=ab6460867ef98f4115842e2a70618aec)

In Discord: with Show the video player, the link instead of the card, so Discord plays the video.

**Reddit** is drawn picture first: a header with `r/subreddit`, the title as a link to the post, the picture, a small line with `u/author` and the date, and a **Read on Reddit** button. **Pinterest** has a header with the board, `Pinterest` and the owner, the picture of the pin big, and a **See on Pinterest** button. Only Reddit and Pinterest are drawn this way: every other feed (Bluesky, Mastodon, Tumblr, Letterboxd, RSS, Pokémon, Wikipedia, Chess.com, Epic Games, music, YouTube, Twitch and the rest) keeps its card with the icon of the platform and its button. Only the **animal feeds and the pictures feed** are just the picture in a clean card, with no icon, source or button. `!animal` (and `/game cat`, `dog` and `fox`) also answers with only the picture.

### What the cards look like

> [tab] YouTube live
>
> ![A live stream of YouTube](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/youtube-live.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=610c937a3063105a0f6fde77e0439403)

> [tab] Kick
>
> ![A live notice of Kick with the picture of Kick](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/kick-live.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=f999331776034a974acc8b9f8262e41c)

> [tab] Spotify
>
> ![A new release](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/spotify-release.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=92163ff94ec48a0f5b736566e25a9bae)

> [tab] Deezer
>
> ![A new release of music, headed by the cover and the title](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/deezer-release.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=bfe3552b2da0aadaa78067be1faa7d8c)

> [tab] Cats
>
> ![A picture of a cat](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/cat-photo.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=e7349af8cd7ecd4686f203dbfc3315d8)

> [tab] Epic Games
>
> ![A free game of the week](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/epic-game.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=c6465db45059a6ad2c12c7b267178804)

> [tab] Mastodon
>
> ![A post of Mastodon](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/mastodon-post.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=ef5ef60dff5d093e81256de908d344f7)

> [tab] Pokémon
>
> ![The Pokémon of the day](https://mintcdn.com/wikipetto/eHFr6gyr2LfHyAK1/images/feeds/pokemon.jpg?fit=max\&auto=format\&n=eHFr6gyr2LfHyAK1\&q=85\&s=9441b06146ad52d0dfe24341c9445fd1)

## Variables

The words from `!feed message` go above the card. You can use:

| Variable | What it gives |
| - | - |
| `{feed.title}` | Title of the post, video or stream |
| `{feed.url}` | Link to what was published |
| `{feed.author}` | Name of the account |
| `{feed.description}` | Description, when there is one |
| `{feed.platform}` | Name of the platform |
| `{feed.image}` | Link of the cover picture |

## Dashboard

The **Feeds** group of the dashboard has a page for each platform. **New feed** opens a small window: you **type the name** of the account and the results appear with their pictures as you write (or paste a link), you pick one, and then choose what to post (videos, live streams, releases...), the channel, the words above the notice, the roles or `@everyone` to mention, and, under *More options*, the big picture, a button that opens the notice and words to include or skip. For the auto feeds it asks **How often**. The **preview with the real card** is one tap away. Saving, pausing and deleting update the list without reloading the page. Each feed can be tested, edited, paused or deleted, and a feed that fails shows why.

> [accordion] All feeds
>
> ![The Feeds page of Petto Land: a tile for each platform, the Premium platforms locked, the search and the six feeds of the server](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-overview.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=0fab23c3e7d473570e47e1f79d69122e)
>
> Dashboard → Feeds → All feeds: every platform with what is followed, the locked ones, and the list of feeds.

> [accordion] The page of a platform
>
> ![The Twitch page with 1 of 5 accounts, the New feed button and PettoLand posting live streams in #streams, active](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-platform.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=b50612afe536afaedbd5a261ed4825f9)
>
> Dashboard → Feeds → Twitch: the accounts followed on Twitch, each with its test, edit, pause and delete buttons.

> [accordion] New feed: an account
>
> ![New feed of YouTube with petto typed and three channels found, what to post, the channel, the message, the ping and More options](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-new-account.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=97a46a56898205e5b07c029e135b7f1b)
>
> Dashboard → Feeds → YouTube: the New feed window, with the results for what is typed.

> [accordion] New feed: an auto feed
>
> ![New feed of Pokémon with How often on Once a day, the channel, the message and the ping](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-new-auto.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=eda3dcc83d18ca4042fb7da29ad0af03)
>
> Dashboard → Feeds → Pokémon: an auto feed asks How often instead of an account.

> [accordion] New feed: animals
>
> ![New feed of Animals with How often and the animals to pick: cats, dogs, foxes, birds, ducks, capybaras and bunnies](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-new-animals.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=06a84ede60c9355fa1c1d8eb6f1c8496)
>
> Dashboard → Feeds → Animals: the animals feed also asks which animals.

> [accordion] New feed: pictures
>
> ![New feed of Pictures with How often and the words typed in Tags](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-new-pictures.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=126d112ab1b07cd13638aaf9e4895989)
>
> Dashboard → Feeds → Pictures: the pictures feed asks for one to four words.

> [accordion] Edit feed
>
> ![Edit feed of PettoLand on Twitch with live streams, #streams, the words above the notice and the Stream pings role](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-edit.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=ba482a9cbd32d93cd89f324e627c98cb)
>
> Dashboard → Feeds → Twitch: a feed opened to edit.

> [accordion] Preview
>
> ![The Preview of the feed: the ping of Stream pings and the words, then an example live card with its picture and Watch live button](https://mintcdn.com/wikipetto/1Wz8dc-Kr9ITtTNY/images/dashboard/automation/feeds-dashboard-preview.webp?fit=max\&auto=format\&n=1Wz8dc-Kr9ITtTNY\&q=85\&s=e1a429e0be9897e1394947fb8f752091)
>
> Dashboard → Feeds → Twitch: the preview with the real card of the bot.

## When something fails

* A feed that cannot post five times in a row is **turned off**, and `!feed list` and the dashboard say why (Petto cannot see or write in the channel, the channel is gone, the account no longer exists). Fix it and resume it.
* Petto needs to see the channel and send messages in it.
* Some sites limit how often they can be asked. Petto spreads its questions and tries again later.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.