Skip to main content

Creator Content

Celebrate the content creators in your community. Zander's Watch page automatically aggregates live streams and videos from designated creators and surfaces them at /watch - giving your community a single place to discover and support content made on your network.

note

Internally, this feature is called the Watch module (routes/watchRoutes.js, controllers/watchController.js) - "Creator Content" and "Watch" refer to the same feature.

note

📸 Screenshot: The /watch page showing a grid of live streams and recent videos from community creators


For Players​

Browse community streams and videos at /watch. The page shows:

  • Live now - up to 50 currently-live Twitch streams from community creators, most recently started first
  • Recent videos - a paginated grid (12 per page) of the latest YouTube uploads

All data is public and unauthenticated - no login is required to browse. Use the Discord /watch command to get a direct link to the Watch page without leaving Discord (the command simply links out; it doesn't call the API itself).

tip

Want to appear on the Watch page? Link your Twitch or YouTube account in your profile settings, then ask a staff member to grant you the zander.watch.creator permission.


For Staff​

Creator Setup​

To add someone as a featured creator:

  1. Confirm their Minecraft account is linked to Zander.
  2. Ask them to connect their Twitch or YouTube account from their profile settings.
  3. Grant them zander.watch.creator in LuckPerms:
    /lp user <username> permission set zander.watch.creator true

The creator's content will begin appearing on the Watch page once Zander next checks their stream or channel and finds something matching the configured filters (see below). Eligibility is checked directly against LuckPerms each time - Zander looks at the user's own permission, their group membership, and one level of group inheritance - so there's no separate on/off switch to manage elsewhere.

tip

There is no dedicated admin dashboard for Watch. Whether someone counts as a creator is controlled entirely through LuckPerms permissions, and checking for new streams/videos, filtering, and expiring old entries all happen automatically on a schedule - day-to-day, this module needs no admin attention beyond the initial config.json filter setup and OAuth credentials.

Content Filtering​

Not all content from a creator is shown automatically - it must match the configured filters to prevent off-topic content from appearing.

Configure filters in config.json:

"watch": {
"contentChannelId": "CHANNEL_ID",
"contentPingRoleId": null,
"filters": {
"twitch": {
"titleMarkers": ["#cfc", "[cfc]"],
"tags": ["cfc"]
},
"youtube": {
"tags": ["cfc"],
"descriptionMarkers": ["#cfc"]
}
}
}

Content appears on the Watch page if it matches any filter for its platform:

PlatformFilter TypeHow to Match
TwitchtitleMarkersStream title contains the marker (e.g. #cfc)
TwitchtagsStream has a matching tag
YouTubetagsVideo has a matching tag
YouTubedescriptionMarkersVideo description contains the marker

Instruct creators to include the appropriate marker in their stream titles, tags, or descriptions to have their content appear.

Discord Notifications​

When new creator content is detected, Zander can post a notification to a Discord channel:

  • Set contentChannelId in config.json to the channel where notifications should be posted.
  • Set contentPingRoleId to a role ID to ping that role with each notification, or leave as null to post without a ping.
note

📸 Screenshot: A Discord notification showing a new creator stream going live, with title, thumbnail, and a "Watch Now" link


OAuth Setup​

Twitch and YouTube integrations require OAuth credentials in .env:

VariableWhere to Get ItDescription
twitchClientIdTwitch Developer ConsoleOAuth2 application client ID
twitchClientSecretTwitch Developer ConsoleOAuth2 application client secret
googleClientIdGoogle Cloud ConsoleOAuth2 client ID (YouTube Data API)
googleClientSecretGoogle Cloud ConsoleOAuth2 client secret
youtubeApiKeyGoogle Cloud ConsoleYouTube Data API v3 key

Background Checks​

Two automatic, scheduled jobs keep the Watch page up to date:

JobWhat It Does
watchTwitchCronChecks Twitch for active streams from linked creators
watchYoutubeCronChecks YouTube for new video uploads from linked creators

Zander keeps a record of each stream and video it finds, and remembers what it's already announced, so a given stream or upload only triggers a Discord ping once. A temporary in-game tip announcement can also be created (expiring after 2 hours by default).

note

Despite the similar name, this Discord-notification path is unrelated to the site's in-app Notifications inbox - the two systems don't share code.


Feature Toggle​

"watch": false

Disabling this makes /watch show a "page not found" error and stops Zander from checking Twitch and YouTube for new content.