I regularly watch YouTube on my Samsung TV running Tizen OS. While I use SmartTube on Android TV for an ad-free experience, things are a little different on Samsung’s Tizen platform.
Unlike Android TV, Tizen doesn’t offer a straightforward way to install browser extensions or replace the official YouTube app with an alternative client.
I came across iSponsorBlockTV, a lightweight, self-hosted application that connects to the official YouTube TV application and automatically skips sponsored segments, intros, outros and other unwanted parts of videos.
Even better, it can automatically mute native YouTube advertisements and press the Skip Ad button as soon as it becomes available.
In this article, I document my installation on TrueNAS SCALE 25.10, including pairing my Samsung Tizen TV, configuring SponsorBlock and deploying the application as a persistent TrueNAS Custom App.
I wanted iSponsorBlockTV to:
- run as a TrueNAS Custom App
- use a persistent dataset for its configuration
- work with the official YouTube application on my Samsung TV
- automatically skip SponsorBlock segments
- mute native YouTube advertisements
- automatically skip advertisements when possible
- restore audio after advertisements
- avoid unnecessary network ports and reverse proxies
- remain lightweight and easy to maintain
- support additional televisions without requiring separate containers
Most importantly, I wanted something that would work transparently without modifying the TV itself.
What is iSponsorBlockTV?
iSponsorBlockTV is an open-source application that uses the SponsorBlock database to identify unwanted segments in YouTube videos.
SponsorBlock is a community-driven project where users submit timestamps for sponsored segments, introductions, promotions and other categories.
Unlike the browser extension, iSponsorBlockTV does not run on the device playing the video.
Instead, it connects remotely to the official YouTube application using the YouTube Lounge API.
This is essentially the same mechanism that allows you to control YouTube on your television from your smartphone.
The interesting part is that iSponsorBlockTV does not need direct access to the television’s operating system.
It doesn’t require root access, modified firmware or additional applications on the television.
Supported platforms include Samsung Tizen, LG webOS, Android TV, Google TV, Apple TV and several others.
The Architecture
The final setup looks like this:
TrueNAS SCALE 25.10
+----------------------+
| |
| Docker |
| +----------------+ |
| | iSponsorBlockTV| |
| +-------+--------+ |
| | |
| Persistent Dataset |
| config.json |
+----------+-----------+
|
| HTTPS
|
+-------------+-------------+
| |
v v
+------------------+ +------------------+
| YouTube Lounge | | SponsorBlock API |
| API | | |
| | | Segment |
| Remote Playback | | Timestamps |
| Control | | |
+--------+---------+ +------------------+
|
| HTTPS
|
v
+------------------+
| Samsung TV |
| Tizen OS |
| |
| Official YouTube |
| Application |
+------------------+
The application performs two main tasks.
First, it communicates with the YouTube Lounge API to determine which video is currently playing and to control playback.
Second, it queries the SponsorBlock API to retrieve timestamps for segments that should be skipped.
When playback reaches one of those segments, iSponsorBlockTV instructs the YouTube application to jump to the end of it.
The video itself never passes through TrueNAS.
There is no video decoding, transcoding or traffic interception involved.
This also means the container does not need significant CPU or memory resources.
No Local Network Access Required
One detail I found particularly interesting is that iSponsorBlockTV does not necessarily need to run on the same network as the television.
Communication takes place through YouTube’s Lounge infrastructure.
The application only needs outbound internet access.
Local network access is useful for automatic device discovery during the initial setup, but it is not required when pairing a television manually using a YouTube TV code.
For my installation, I used manual pairing.
This allowed me to keep the container on Docker’s default network without enabling host networking.
I also didn’t need Nginx Proxy Manager, additional DNS records or exposed container ports.
Persistent Storage
As with my other TrueNAS applications, I prefer keeping application configuration outside the container.
I created the following dataset:
/mnt/ssd-pool/apps/isponsorblocktv
This directory is mounted into the container at:
/app/data
The final directory structure is very simple:
/mnt/ssd-pool/apps/
|
+-- isponsorblocktv/
|
+-- config.json
The config.json file contains the application settings and paired-device information.
Keeping it on a persistent dataset allows the container to be recreated or upgraded without intentionally losing the configuration.
It also makes the configuration easy to include in my existing TrueNAS snapshot and backup strategy.
One important consideration: the configuration contains device authentication information and should be treated as sensitive.
Initial Configuration
Before installing the isponsorblock App, you’ll have to generate the configuration file.
The project provides both a graphical configurator and a command-line configurator.
I decided to use the CLI version because it works well through the TrueNAS shell and doesn’t require any additional interface.
The command is:
sudo docker run --rm -it \
-v /mnt/ssd-pool/apps/isponsorblocktv:/app/data \
ghcr.io/dmunozv04/isponsorblocktv:latest \
--setup-cli
A few things are worth explaining.
--rm removes the temporary container when it exits.
-it enables interactive terminal input.
The volume mapping ensures that the generated configuration is stored on the TrueNAS dataset rather than inside the temporary container.
And --setup-cli starts the interactive configuration wizard.
This is only required for the initial configuration or when changing certain settings.
The permanent application will be installed separately afterward.
Pairing the Samsung TV
The first important step was pairing the television.
On the Samsung TV running a Tizen OS open the official YouTube application and navigated to:
YouTube
|
+-- Settings
|
+-- Link with TV code
YouTube displayed a numeric pairing code.
The setup wizard will ask to add the device and add the displayed code from you TV:
Paired with 0 Device(s). Add more? (y/N)
Enter pairing code
(found in Settings - Link with TV code):
After entering the code, the application confirmed the connection:
Pairing...
Paired device: YouTube on TV
Paired with 1 Device(s). Add more? (y/N)
Success!
TV is now paired with iSponsorBlockTV and additional Devices can be added later.
Configuring SponsorBlock
The setup wizard continued with several configuration options:
The first question concerned a YouTube API key:
API key only needed for the channel
whitelist function. Add it? (y/N)
The API key is only needed for the optional channel whitelist functionality.
Since I wasn’t planning to exclude individual YouTube channels, there was no reason to configure it.
Skip Categories
Next came the SponsorBlock categories.
The available options were:
sponsor
selfpromo
exclusive_access
interaction
intro
outro
preview
filler
music_offtopic
hook
I decided to enable all available categories.
The wizard accepts categories separated by spaces or commas, you can copy as below:
sponsor selfpromo exclusive_access interaction intro outro preview filler music_offtopic hook
This enables skipping of sponsored segments, self-promotion, introductions, outros and the other supported categories. These settings can be adjusted later.
Channel Whitelist
Do you want to whitelist any channels
from being ad-blocked? (y/N)
I don't currently need channel-specific exceptions so skipped this one.
Minimum Segment Length
The wizard also offered the option to specify a minimum segment length:
Do you want to specify a minimum
length of segment to skip? (y/N)
This means even very short segments can be skipped.
Reporting Skipped Segments
Do you want to report skipped segments
to sponsorblock. Only the segment UUID
will be sent? (Y/n)
Enabling this allows the application to report segment skips back to SponsorBlock.
The application sends the segment UUID for this purpose. As with any external API request, the receiving service can also see connection metadata such as the source IP address.
Native YouTube Advertisements
This is probably my favorite feature.
SponsorBlock normally handles segments that are part of the actual video.
Native YouTube advertisements are different because they are inserted by YouTube itself.
iSponsorBlockTV provides additional functionality for handling those advertisements.
Do you want to mute native
YouTube ads automatically? (y/N)
Do you want to skip native
YouTube ads automatically? (y/N)
With these options enabled, iSponsorBlockTV can automatically mute advertisements and press the Skip Ad button when YouTube makes it available.
Unfortunately it does not magically remove advertisements that YouTube does not allow viewers to skip.
However, it makes the experience considerably more convenient.
Autoplay
Do you want to enable autoplay? (Y/n)
I prefer choosing the next video myself rather than having YouTube automatically continue playing recommendations. This setting does not affect SponsorBlock skipping or advertisement handling.
SponsorBlock API
Enter SponsorBlock API URL
(default: https://sponsor.ajay.app/api/):
There is no reason to change this unless you operate your own compatible SponsorBlock API server.
Verifying the Configuration
Before deploying the permanent container, verify that your configuration had actually been written to the TrueNAS dataset.
sudo ls -lah /mnt/ssd-pool/apps/isponsorblocktv/
The output:
total 2.0K
drwxr-xr-x 2 root root 3 Oct 29 08:34 .
drwxr-xr-x 4 root root 4 Oct 29 07:57 ..
-rw-r--r-- 1 root root 709 Oct 29 08:34 config.json
The configuration file existed on persistent storage.
This is important because the setup container was started with --rm.
Without the volume mapping, the configuration would disappear when the temporary container was removed.
The Final TrueNAS YAML
With the configuration generated install the iSponsorBlockTV as a TrueNAS Custom App.
In TrueNAS SCALE 25.10, I navigated to:
Apps
|
+-- Discover Apps
|
+-- Install via YAML
Application name:
isponsorblocktv
The final configuration is:
services:
isponsorblocktv:
image: ghcr.io/dmunozv04/isponsorblocktv:latest
container_name: isponsorblocktv
restart: unless-stopped
volumes:
- /mnt/ssd-pool/apps/isponsorblocktv:/app/data
That’s it. =D
The restart: unless-stopped policy ensures Docker restarts the container after a failure or host reboot unless it was deliberately stopped.
The latest image tag follows the newest published image when it is pulled. For a more controlled production setup, pinning a tested version or image digest would make updates more predictable.
For my homelab, this simple configuration is sufficient.
How Does the TV Communication Actually Work?
One question I initially had was how a Docker container running on TrueNAS could control a Samsung television without installing anything on the TV itself.
The answer is the YouTube Lounge API.
When you connect your smartphone to the YouTube application on a television, YouTube allows the smartphone to act as a remote controller.
iSponsorBlockTV uses a similar mechanism.
The application uses the Python library pyytlounge to communicate with the YouTube TV application.
The process can be simplified as follows:
1. User starts a YouTube video
2. iSponsorBlockTV obtains playback information
3. Application identifies the video
4. SponsorBlock API provides segment timestamps
5. Playback reaches a segment
6. iSponsorBlockTV sends a seek command
7. YouTube TV jumps to the end of the segment
The important distinction is that iSponsorBlockTV is not a network-level advertisement blocker.
It doesn’t filter DNS requests or intercept video traffic instead it controls the YouTube player.
This is also why it can work with different television manufacturers without requiring separate integrations for Samsung, LG or Android TV.
The downside is that the application depends on YouTube’s Lounge interface, which is not a guaranteed stable public API for third-party applications.
Changes on YouTube’s side can therefore break functionality or require devices to be paired again.
Final Thoughts
What impressed me most was how seamlessly it integrates with the official YouTube application on my Samsung TV. The automatic handling of native YouTube advertisements worked particularly well during my testing. Advertisements were muted, skipped as soon as possible and the audio was restored afterward.
The application also supports multiple televisions & devices, which makes it a useful addition to a self-hosted environment with different Smart TV platforms.
There is one important limitation: iSponsorBlockTV relies on YouTube’s Lounge infrastructure, and changes to that interface can affect compatibility.
Nevertheless for my homelab the advantages clearly outweigh that dependency.