Intro, recap, and credits skipping for CineLark-managed IINA streams.
Features · Preview · Installation · Detection Methods · Troubleshooting
This is a CineLark-focused fork of pparanoiidd/iina-skip-intro. It keeps the original local-file experience and adds support for CineLark's opaque, tokenized HTTPS playback URLs. Chapter title and chapter timing detection work for those streams, and each replacement episode resets detection and Auto-Skip state in the reused IINA player.
- Skip prompts for intros, recaps and credits.
- Uses three detection methods: chapter titles, audio fingerprint analysis and chapter timings.
- Optional Auto-Skip for mouse-free skipping.
- Customize detection and skip behavior through the preferences page.
- Configurable skip pop-up timeout, end buffer, button styling, hotkey and more.
- Install and open IINA, then go to
Settings -> Pluginsfrom the menu bar. - Uninstall or disable the original Skip Intro plugin to avoid duplicate overlays and seeks.
- Choose
Install from GitHub.... - Paste
SamsonLab/skip-intro-cine-larkand install.Note: See Permissions for why the plugin asks for each permission.
- Restart IINA.
- Open
Settings -> Plugins -> CineLark-Skip-Intro -> Preferencesto choose detection methods and skip behavior.
Important
Audio fingerprint matching is an advanced optional feature. Many shows do not include useful chapter titles, so audio matching greatly expands the media files this plugin can support when episodes reuse the same intro audio.
Audio fingerprint matching requires:
- Node.js
- FFmpeg
Installing them with Homebrew:
If you do not have Homebrew installed, install it from brew.sh first, following the instructions shown by the Homebrew installer.
Then paste this in your Terminal to install the prerequisites:
brew install node ffmpegDetection methods run in this order and stop after the first match. This CineLark fork enables chapter title detection, chapter timing fallback, and Intro Auto-Skip by default. You can change each behavior in Preferences.
Uses chapter names such as Intro, OP, Opening, Recap, Previously On, Credits, ED, and related variants. This is the fastest and most reliable method when the file has useful chapters.
Title-detected intros must start near the beginning of the video and have a reasonable duration. Credits are only accepted near the end of the video, with duration limits scaled by runtime.
For chapter title matches, intros, recaps and credits can each be set to Off, Prompt or Auto-Skip.
Audio fingerprint detection is intentionally disabled for CineLark network streams because they contain one opaque URL at a time and do not expose neighboring local files. It remains available for local playback.
For local files, it compares the current episode with nearby playlist episodes and looks for shared audio that appears in the same broad region. This is intended for shows where episodes share the same intro but do not have helpful chapter titles. It requires at least 2 episodes.
The matcher:
- Selects up to 4 reference files from the current playlist.
- Prefers same-season neighboring episodes when season and episode numbers can be parsed from filenames (e.g. S02E11).
- Falls back to nearby playlist items when filename parsing is unavailable or disabled.
- Analyzes the early part of each episode and refines boundaries.
- Caches extracted audio features so repeat scans are faster.
When enabled, audio matching looks for intro-length shared audio between 20 and 150 seconds long and requires a confidence threshold before accepting a match. It is disabled by default because it is an advanced optional feature and requires Node.js and FFmpeg.
Uses chapter structure as a lower-confidence fallback. It looks for an early chapter with intro-like duration followed by a much longer chapter, then scores candidates by position, duration and next-chapter dominance.
This lower-confidence fallback is enabled by default for CineLark streams whose chapters use generic names. Disable it in Preferences if a specific title has unsuitable chapter boundaries.
- Detection runs for supported local video files and HTTP/HTTPS media streams that are at least 10 minutes long.
- Videos longer than 90 minutes are treated as movie-length media. For those files, the plugin only allows credit detection from chapter titles.
- Audio fingerprint matching analyzes the early portion of an episode and accepts shared intro candidates from 20 to 150 seconds long.
If the plugin is not working as expected, check IINA's logs:
- Open
Settings -> Advanced. - Enable
Advanced settings. - Enable
Loggingand restart IINA. - Play the problem video so the plugin can run and write log entries.
- Open logs with
Ctrl + Cmd + L. - Set
SubsystemtoCineLark-Skip-Intro.
Useful things to look for:
- Missing
nodeorffmpegwarnings. See Optional: Enable Audio Fingerprint Matching for setup instructions. - Audio detection messages about playlist references, helper lookup, confidence, or rejected matches.
The plugin checks for audio matching dependencies in these locations:
ffmpeg:/opt/homebrew/bin/ffmpeg,/usr/local/bin/ffmpegnode:/opt/homebrew/bin/node,/usr/local/bin/node,/usr/bin/node
Audio fingerprint detection is not perfect. It works best when nearby episodes share the same intro audio and are loaded together in the playlist. It may miss intros with unusual episode ordering, poor filename parsing, too few neighbouring reference episodes or even humanly inaudible audio differences.
The plugin requests:
file-systemto find the bundled audio matcher, inspect local playlist items, check for dependencies, and use the audio feature cache.video-overlayto render the skip prompt over the video.
