XenForo will play a video you paste. It will not keep a directory of who is live. That split is the whole article. A YouTube or Twitch URL in a post becomes an embed because BB code media sites and unfurl already know those hosts. A sidebar that says “three of our streamers are live right now,” a /streams/ page, a multi-viewer, a Kick listing — none of that is in the 2.3 core. Those jobs are an add-on, or they are a page node plus a thread field and a staff habit.
This is not the Discord article. Discord live status is not a stock connected-account, and a webhook that fires thread_insert is not a stream directory. This is also not the server listing piece. A game-server IP is a thread field. A stream URL is a different column. Mixing them into one “directory” forum is how you get a room nobody can search.
Official sources: XenForo BB code media sites (docs.xenforo.com/manual/content/bbcode-media-sites), page nodes, custom thread fields, widgets. Community: [8WR] XenRio 2 (Streams) PRO, resource 6024, Jaxel, listed compatible with XF 2.0–2.3, current line 2.3.0.x. Historical shop pattern: the old Vertiforo Twitch widget — a sidebar “who is live” block, not a product to buy.
Three jobs, three tools
Write the sentence before you install anything.
| Sentence | Tool |
|---|---|
| “Someone pasted a Twitch or YouTube URL in a post and we should play it there” | Stock. Media BB code / unfurl |
| “The sidebar should show which of our people are live right now” | Add-on directory, or an HTML/widget that reads one — Vertiforo was this pattern |
“We have a /streams/ page with a multi-viewer and game filters” |
[8WR] XenRio 2 (Streams) PRO (resource 6024) |
| “We have two Kick streamers and no budget” | Stock has no Kick provider. A page node + thread field, or a maintained add-on that actually lists Kick |
Do not buy a directory to embed one VOD. Do not paste an iframe into PAGE_CONTAINER to fake a directory. Do not treat a deleted Resource Manager “Kick Plugin (Streamers list)” as if it still exists.
What stock XenForo actually embeds
Official BB code media sites are how a pasted URL becomes an <iframe> (or the current equivalent) inside a post. The ACP list lives under Setup → BB code media sites in community 2.x wording. The public manual’s job is the mechanism: a host, a match, an embed template. YouTube is the example the manual names. Instagram is the other example. The page does not publish a complete, version-locked catalogue of every host in a default 2.3 install. Treat the ACP list as the source of truth for your board.
What that means in practice:
- A member pastes a YouTube watch URL or a Twitch clip/channel URL into a post. If that host is enabled as a media site, XenForo converts it.
- Unfurl (the 2.x link preview) may also fetch a card for a URL that is not a media site. A card is not a player. Do not tell people “unfurl is our live directory.”
- A media site you add yourself is a match pattern plus an embed HTML snippet. That is how a careful admin can embed a specific Kick VOD URL if Kick publishes a stable embed. It is still not a live list. It will not poll “is this channel live.” It will not put a green dot in the sidebar.
Official does not ship a “live streams” content type. There is no stock streams/ route. There is no stock “who is live” widget definition. If your ACP Appearance → Widgets → Add widget list has no stream type, that is expected.
Two operational rules the manual does not print, because they are media-site hygiene rather than a named option:
- Only enable hosts you will moderate. Every extra media site is an iframe you did not write. Disable hosts your community does not use.
- Do not turn a media site into a permissions system. Who may post a media embed is a permission (usually the same post/BB-code permission you already grant). Who may appear in a live directory is a different question — a group, a thread field, or an add-on allow-list.
If the only requirement is “we clip our weekly raid on YouTube and paste the URL in Recaps,” you are done. Stop reading. The rest of this article is for boards that want a directory.
The historical sidebar: Vertiforo’s Twitch widget
Old Styles Factory / Vertiforo shop pages sold a Twitch sidebar widget. That product is not for sale here. The pattern is still the right first question: who is live, in the sidebar, for guests and members walking the forum list.
That is a widget instance, not a homepage, not a portal, not a second newsroom. Official stock types that are adjacent and that you should not confuse with a live list:
- Members online — people on the forum, not people on Twitch
- New posts — threads, not streams
- HTML — a static “we stream Fridays” card, or an iframe you will regret on upgrade
A real “who is live” block needs a data source that refreshes. Stock XenForo does not poll Twitch, YouTube, or Kick. An HTML widget with a hard-coded embed is a poster for one channel. It goes stale the first Saturday the streamer sleeps in.
If you inherited a Vertiforo-era sidebar, replace the idea (live indicator next to the forum list) rather than hunting the old ZIP. XenRio registers its own widgets and pages. A page-node directory (later in this article) can be linked from a link-forum node or a small HTML widget that only says “Live now →” and points at /streams/ or /pages/live/.
[8WR] XenRio 2 (Streams) PRO — the named directory
Resource 6024 on xenforo.com, author Jaxel / 8wayrun. Listed price on the resource page at the time of writing: $40, branding removal sold separately. Compatible XF versions on the resource: 2.0, 2.1, 2.2, 2.3. Current line as of mid-2026: 2.3.0.6. Demo the author points at: 8wayrun.com/streams/.
Official XenForo does not document this add-on. Everything below is the resource overview and the 2.3.0.x changelogs, not the core manual. If a control is not on that page, this article does not invent it.
What the resource says it does:
- Periodically scrapes supported platform APIs so the board can show currently live broadcasts relevant to the community
- Embeds streams on the forum so viewers do not bounce to the host
- Lets end users sort streams by categories
- Offers a multi-stream viewer that can be shared
That is a directory plus a player, not a media-site tweak. Install it only if you want that product.
Platforms the resource actually lists
The overview table (2.3.0.x) is the only platform list this article will use:
| Service | Scrape all | Scrape games | Scrape channels | Scrape languages | Embed | Auth the resource names |
|---|---|---|---|---|---|---|
| DLive | — | yes | yes | — | — | — |
| Kick | yes | yes | yes | yes | yes | client-id and client-secret (kick.com/settings/developer) |
| Picarto | yes | — | yes | — | — | — |
| Trovo | yes | yes | yes | yes | yes | client-id |
| Twitch | yes | yes | yes | yes | yes | client-id and client-secret (dev.twitch.tv/console/apps) |
| VKPlay | — | — | yes | — | yes | — |
| YouTube | — | yes | yes | — | yes | API key (YouTube Data API) |
Read the dashes. YouTube has no “scrape all” in that table. You do not point XenRio at “the whole of YouTube.” You give it games and/or channels. Twitch and Kick can scrape the top of the service and filter. DLive and Picarto are narrower. Mixer is a tag on the resource page from an earlier era; it is not a current row in the 2.3.0.x table. Do not configure Mixer.
The author’s own column definitions, paraphrased:
- Scrape: All — top streams on the service
- Scrape: Games — restrict to a list of games/categories
- Scrape: Channels — restrict to a list of channels
- Scrape: Languages — restrict to a list of languages
- Embed — play the stream on the forum
Installation, per the resource: standard XF add-on install (docs.xenforo.com add-ons chapter), then set up your permissions. The resource does not reprint the permission names in the overview. After install, open Groups & permissions and look for the XenRio entries. Do not guess Yes on everyone. A public scrape of “top Twitch” on a hobby board is how you embed strangers.
Upgrading from XF1 XenRio: the resource says that after install you run the appropriate procedure under Tools → Import data. That is an add-on importer, not the official phpBB importer in the migration article.
Twitch
Twitch is the path of least resistance. The resource requires a Twitch application with a client ID and client secret. Create that at the Twitch developer console the resource links. Put the credentials where the add-on asks — the public overview does not name the exact ACP option group, so follow the add-on’s own options page after install.
Operational notes that are in the changelogs, so they are safe to treat as product behaviour:
- Language restrictions apply during Twitch scrape (2.3.0.2 fixed them applying properly). If you only want English (or only Polish) raid streams, use that filter. Do not scrape the global top and delete rows by hand.
- Game and channel lists are how a community directory stays a community directory. A Minecraft server board scrapes Minecraft, not Just Chatting. A fighting-game board scrapes the titles you actually play.
Permissions still matter. “Everyone can submit a Twitch channel to the directory” is a moderation queue you did not staff. Prefer: staff add channels, or a whitelist-style application thread whose accepted output is “staff paste this channel into XenRio.”
YouTube — the stream URL, not the channel
YouTube is the service people misconfigure. Three facts from the resource, not from folklore:
- An API key is required (2.1.1.7 and later). YouTube support was rewritten onto the Data API after HTML scraping became a moving target. New Google Cloud projects get a tight daily quota. The 2.1.1.8 notes say searching live streams on a single channel can consume a 10,000-unit daily quota. If you add twelve YouTube channels and scrape them like Twitch, the quota dies before lunch. Plan for few channels, or accept that YouTube is a secondary source.
- YouTube has no “scrape all” in the overview table. Games and channels only.
- If you add a live stream by hand, use the actual stream URL, not the channel link. That sentence is in the 2.1.1.9 notes (multi-viewer display for YouTube). It is the line every “YouTube is blank” thread rediscovers. A channel URL is not a stream. Channels can have more than one live video. The add-on needs the watch/live URL.
2.3.0.5 brought YouTube game scraping back via YouTube’s auto-generated topic channels (the old Freebase topics are gone). The notes give examples of those auto-generated channel URLs for named games. If you want “all live Minecraft on YouTube that this scraper can see,” that is a game spelling pointed at the auto-generated Minecraft channel, not a list of every creator you like. Read the 2.3.0.5 note before you paste a normal creator channel into the game field.
2.1.1.9 also stores the most recent live stream so an offline channel (if you enable offline channels) can still play the last archive. That is a VOD convenience. It is not a reason to treat YouTube like Twitch.
Kick — stock has nothing; one maintained add-on does
State this plainly, because the internet is full of dead plugins:
- Stock XenForo has no Kick media-site provider and no Kick live directory. A Kick URL may unfurl as a generic link. That is not a player and not a listing.
- The community “Kick Plugin (Streamers list)” that used to sit in the Resource Manager is deleted. Do not hunt mirrors. Do not install a ZIP from a random “nulled add-ons” site.
- [8WR] XenRio 2.3.0.2 added Kick via a third-party endpoint while Kick had no public API. 2.3.0.4 rewrote Kick onto Kick’s own API platform. You create an app at
kick.com/settings/developer, take a client ID and secret, enable Read user information and Read channel information. The resource says the redirect URI does not matter for this use. After that rewrite you can use all scrape restriction settings, limit by language, and search the Kick API for matching game spellings. - Remaining Kick limits the author states: Kick still does not have a chatroom embed. Thumbnails have known API issues. 2.3.0.5 made tile thumbnails respect aspect ratio because Kick allows vertical phone streams; a 16:9 tile assumption looked broken.
If you are on XenRio older than 2.3.0.4 and you care about Kick, update. The unpublished-API workaround is not the current product.
If you will not buy XenRio, Kick is a page node + thread field (below) or it is a media-site embed you add yourself for a single URL. There is no stock “Kick is live” poll.
What XenRio is not
It is not Discord role sync. It is not a connected account. It is not a server listing. It is not a replacement for media BB code — members will still paste YouTube links in threads, and stock will still embed those. XenRio is the directory and the on-site player for streams you chose to track.
It is also not a reason to scrape the global top of Twitch onto a 400-member hobby board. The bounce you save by embedding is wasted if the sidebar is twelve strangers. Use channel lists for “our streamers,” game lists for “our game,” and language filters when the community is not English-default.
The multi-viewer is a shareable page for watching more than one stream. 2.3.0.4 rewrote that JavaScript. If you are on 2.3.0.3 or older and the multi-viewer is odd, that is a version problem, not a XenForo core problem.
Stock fallback: page node + thread fields
You can ship a useful “our streamers” section with zero streaming add-on. It will not auto-detect live. It will not embed a multi-viewer. It will give you a list staff can keep honest.
1. A page node for the index
Official Pages node type: arbitrary HTML in the node tree. Official examples: FAQ, manual, knowledge base. A “Live streams” page is the same object. Forums → Nodes → Add node → Page. Title: Live streams. URL portion: live → /pages/live/ (or drop pages/ later with a route filter if you care). Put a short intro and a link to the listing forum. Do not paste six iframes into the page HTML. You will merge that template on every style upgrade.
A link forum pointing at XenRio’s /streams/ is the same idea if you do run the add-on: the node tree gets a row guests understand, without making streams a forum they can post in.
2. A listing forum with thread fields
Create a General discussion (or a type you already standardized) forum: Streamer directory. Prefixes: Twitch, YouTube, Kick, Offline. One thread per channel.
Forums → Custom thread fields — same object the custom fields article already split from user fields. Suggested set:
| Field ID | Type | Why |
|---|---|---|
platform |
choice: twitch, youtube, kick |
Criteria, prefixes, notices |
channel_url |
single-line text | The URL staff open. For YouTube live, the stream URL when they are live |
schedule |
single-line text | “Fri 20:00 UTC” — human, not a calendar add-on |
is_partner |
choice yes/no | Optional staff filter |
Display: thread status block so the URL repeats on every page of the thread. Applicable forums: only the directory. Editable by: a Streamers secondary group, or staff only if you want a whitelist gate.
A user field twitch_login (contact, single-line) is the handle that follows the person. The thread field is the listing. Do not store the stream URL only on the profile; you will not get a directory.
3. A widget that does not lie
Appearance → Widgets → Add widget → HTML. Title: Our streamers. Body: a sentence and a link to /pages/live/ or the directory forum. Display condition: none, or hide from guests if the directory is members-only. This is the Vertiforo-shaped hole without a live API. Staff update the page when someone is featured. It will not turn green by itself. Say that on the page so members do not file “the widget is broken” tickets.
If you later install XenRio, deactivate this HTML widget. Two “who is live” blocks is how the portal first screen fills with noise.
Permissions, groups, and who may be listed
Official groups reminder, because streaming boards love to break it: every registered human keeps Registered as primary. A Streamers or Live talent role is a secondary group. The permissions primer and the configuration mistakes article both exist so you do not promote a Twitch partner by changing primary.
Suggested split:
- Registered — can watch embeds in threads; can see the public directory
- Streamers (secondary) — can create a directory thread / edit their thread fields
- Moderating — can move, unapprove, strip a listing
- Administrative — XenRio credentials, API keys, scrape lists
XenRio’s own permissions (add-on specific) should be No for Unregistered on anything that submits a channel, Yes for staff on scrape/admin, and a deliberate choice for Registered on “view streams page.” A public multi-viewer of your own talent is usually fine. A public scrape of top Kick is a different site.
Do not use a custom user field as a permission. “is_streamer = yes” in a template is a toy. The fields article already said so. The group is the role.
Embeds, bounce, and the homepage
The resource’s pitch is bounce: watch here, do not leave. That is real. It is also how a homepage becomes a silent autoplaying rectangle that wrecks LCP. The speed article owns Core Web Vitals. This article only states the rule: do not auto-embed a live player on /. Put the player on /streams/ or in the directory thread. The homepage gets a thumbnail, a “3 live” count if the add-on provides one, or a link.
Stock media embeds in posts are fine. They are below the fold of a thread, user-initiated. A widget that injects Twitch’s player into PAGE_CONTAINER is the thing the performance article will blame.
iOS and some desktop browsers will block autoplay with sound. Do not file that as a XenForo bug. Do not add a third-party “unmute” overlay that breaks on the next Twitch embed change.
Credentials and secrets
Twitch, Kick, and YouTube all want keys. Treat them like config.php:
- Create apps on your developer accounts, not a staff member’s personal hobby project they will lose in June
- Do not paste secrets into a public thread, a page node, or a screenshot in Discord
- Rotate if a former admin leaves — same hygiene as the security checklist
- YouTube quota is a budget. One board, one key, few channels
Official XenForo will not store those keys for you unless an add-on option does. If you uninstall XenRio, go to each developer console and delete the app. Orphaned Twitch apps are how you forget what still has access.
A worked weekend for a 2,000-member game board
Friday night — decide the sentence. “We list our twelve regulars plus anyone live in our game, English and Polish, and we do not scrape Just Chatting.”
Saturday — stock first. Confirm YouTube and Twitch media sites are enabled. Post one test thread in a staff forum with a Twitch URL, a YouTube watch URL, and a Kick URL. See what actually becomes a player. Disable media sites you do not want. Create the Streamer directory forum, the four prefixes, the four thread fields. Make a Streamers secondary group. Do not change anyone’s primary group.
Saturday afternoon — widget. HTML widget “Our streamers” → directory forum. One notice for a week: “List yourself: post in Streamer directory, prefix your platform.”
Sunday — only if the directory is already used. Install XenRio 2.3.0.x. Create Twitch and (if needed) Kick apps. YouTube API key only if you have two or three channels that matter. Channel list = the twelve regulars. Game list = your title. Language filter on. Permissions: Registered can view; only Administrative can add scrape targets. Deactivate the HTML widget. Link a node to /streams/.
Do not do Sunday first. An empty XenRio pointed at “scrape all Twitch” is a different website.
Checklist
- You can name the job: embed-in-posts, sidebar who-is-live, or full directory
- Stock media sites are enabled only for hosts you moderate
- A Kick URL was tested; you know stock will not make it a live list
- The deleted Kick list plugin is not in your plan
- Vertiforo’s old Twitch widget is treated as a pattern, not a ZIP to find
- If you bought XenRio: version 2.3.0.4+ for current Kick; YouTube entries are stream URLs (or configured game/channel scrapes), not random channel links
- Twitch/Kick/YouTube secrets are on the board’s developer accounts
Streamersis a secondary group; Registered stays primary- No live player on the homepage
- Thread fields own listing data; user fields own the person’s handle
- Discord stays in the Discord article — a live Discord voice channel is not a Twitch embed
What this is not
It is not a complete XenRio admin manual. The resource overview and 2.3.0.x notes name platforms, auth, YouTube stream URLs, Kick’s API rewrite, thumbnail aspect, and the multi-viewer rewrite. They do not, in the pages cited here, walk every ACP option. If the add-on shows a control this article omitted, believe the add-on.
It is not a TikTok, Instagram Live, or generic “social live” product. Those hosts are not in XenRio’s 2.3.0.x table. Stock may embed a VOD if a media site exists. That is not a directory.
It is not engagement theory. A live sidebar can raise same-session time. It can also empty the thread list. Measure after a month. If nobody uses the directory, uninstall the add-on and keep the media embeds.
Takeaways
- Stock XenForo embeds known hosts in posts. It does not keep a live directory.
- The old Vertiforo Twitch widget is the sidebar “who is live” pattern. Do not shop for the SKU.
- [8WR] XenRio 2 (Streams) PRO (resource 6024, 2.3.0.x) is the named add-on for scrape + embed + multi-viewer. Twitch wants a client ID/secret. YouTube wants an API key and, for manual live entries, the stream URL.
- Kick is not a stock provider. The old community Kick list plugin is deleted. XenRio 2.3.0.4+ is a maintained Kick integration with Kick’s own API.
- No add-on: page node + directory forum + thread fields + an honest HTML widget.
- Keep players off
/. Keep Registered as primary. Keep secrets out of threads.
Paste the URL when you only need a player. Buy a scraper when you need a room that knows who is live. Everything in between is a page you can write this afternoon.

