If you're anything like me, you've had that moment — the pull goes perfectly, you finally clear, and then you realise OBS was sitting there doing absolutely nothing because you forgot to press Record. Again.
I already had rec-cue to show me an in-game indicator when recording was active, which was great for noticing the problem... but not so great at preventing it. So I built PullToOBS: a Dalamud plugin that talks to OBS over WebSocket v5, starts recording the moment you enter combat, and saves a replay buffer clip of the prepull for good measure. No more "I forgot to record" sadness.
-
Automatic Recording -- the whole point
- Starts OBS recording when combat begins (detected via Dalamud)
- Stops recording after a 5-second grace period when combat ends
- If you re-enter combat during that grace period, the pending stop is cancelled and you get one continuous recording instead of two fragments
-
Replay Buffer Integration -- never miss the prepull
- Automatically starts the OBS replay buffer when the plugin connects
- Saves the replay buffer 5 seconds into the encounter, capturing everything that happened before the pull
- If PullToOBS started the replay buffer, it will stop it again when you disconnect the plugin or unload it
- You'll end up with two files per encounter: a replay buffer clip (prepull) and a full recording
-
Visual Status Indicator -- know what OBS is doing at a glance
- Always-visible on-screen dot showing the current OBS state
- Grey dot: Not connected to OBS
- Green dot: Connected & ready (replay buffer active)
- Orange dot: Connected but replay buffer inactive or not configured
- Cyan dot: Standby mode on (recording suppressed)
- Pulsing red dot: Recording in progress
- Click the indicator while out of combat to toggle standby mode
- Draggable when the config window is open
- Adjustable scale (0.5x - 2.0x)
-
Encounter Metadata -- optional JSON files alongside recordings
- Writes a JSON file per encounter with encounter name, job, territory, and file paths
- Designed for use with the limitcut companion tool
- Enabled via the "Save encounter metadata" checkbox in the config window (disabled by default)
-
Quick Save / InstaPost -- on-demand replay buffer clips
- Press a configurable hotkey in-game to save the current OBS replay buffer immediately
- Writes a timestamped
instapost_YYYYMMDD_HHMMSS.jsondescriptor next to the replay buffer clip - Includes replay buffer filename, job, encounter (if applicable), territory name, combat flag, and player name
- Designed for use with a future
limitcut --watchflow for automated conversion/upload - Shows a brief gold flash on the indicator when triggered
-
Simple Configuration
- OBS WebSocket URL and password
- Optional auto-connect on plugin start
- Indicator position, scale, and visibility settings
- Save encounter metadata toggle
- InstaPost enable toggle, hotkey capture, and cooldown setting
- All settings are saved automatically
Since PullToOBS produces two files per encounter (a replay buffer clip and the full recording), you'll probably want to stitch them together afterwards. limitcut does exactly that -- it finds where the two recordings overlap using audio cross-correlation and combines them into a single MP4, no manual trimming required.
PullToOBS can optionally generate JSON metadata files alongside recordings, which limitcut reads to organise your outputs into a structured directory tree. It can also generate timestamped InstaPost JSON descriptors alongside manually quick-saved replay buffer clips for a future limitcut --watch workflow. Enable "Save encounter metadata" and/or the InstaPost hotkey in the config window as needed.
- OBS Studio with WebSocket v5 enabled (OBS > Tools > WebSocket Server Settings)
- Replay Buffer enabled in OBS (OBS > Settings > Output > Replay Buffer)
The Replay Buffer must be enabled in OBS before connecting. This is what captures the prepull clip. You can confirm it's active by the indicator turning green after connecting. If the indicator shows orange instead, open OBS Settings > Output > Replay Buffer and enable it, then reconnect. If PullToOBS was already connected when you enabled Replay Buffer in OBS, disconnect and reconnect PullToOBS so it can detect the buffer and return to the ready state.
PullToOBS is available in the official Dalamud plugin repository.
Open the Plugin Installer in-game (/xlplugins), search for PullToOBS, and install it.
- Enable OBS WebSocket v5 (OBS > Tools > WebSocket Server Settings)
- Set up a Replay Buffer in OBS (Settings > Output > Replay Buffer) -- this is what captures the prepull
- Open PullToOBS config with
/pulltoobsor/pto - Enter your OBS WebSocket URL and password, then click Connect
- The indicator shows up on screen -- green means ready, orange means replay buffer is not ready yet
- Enter combat and recording starts automatically
- (Optional) Check "Save encounter metadata" in the config window if you use limitcut — a JSON file will be written alongside each recording
- (Optional) Enable Quick Save (Instapost) in the config window, click Change, then press your desired key combination to capture it
/pulltoobsor/pto- Toggle the configuration window/pulltoobs obsor/pto obs- Toggle OBS connection/pulltoobs recor/pto rec- Toggle standby mode (suppresses automatic recording; command is blocked during combat)/pulltoobs showor/pto show- Show the indicator/pulltoobs hideor/pto hide- Hide the indicator/pulltoobs instaor/pto insta- Manually trigger an InstaPost quick-save clip
- Open the configuration window with
/pulltoobs - While the configuration window is open, drag the indicator to your desired position
- Use the "Indicator Scale" slider to adjust size
- Position is saved automatically when you finish dragging
- While the config window is closed and you are out of combat, click the indicator to toggle standby mode
- During combat, the indicator becomes click-through again
All settings are saved automatically, so you can just set things up once and forget about it (forgetting is what we're good at, after all):
- WebSocket URL - OBS WebSocket server address (default:
ws://localhost:4455) - Password - OBS WebSocket server password
- Auto-connect on start - Automatically connect to OBS when the plugin loads
- Disconnect behavior - If PullToOBS started OBS replay buffer, disconnecting/unloading PullToOBS stops it again; pre-existing replay buffer sessions are left alone
- Indicator Scale - Scale multiplier for the indicator (0.5x to 2.0x)
- Hide Indicator - Toggle indicator visibility
- Save encounter metadata - Toggle JSON metadata file generation for use with limitcut (default: disabled)
- Enable quick save hotkey - Enables InstaPost replay buffer saves (default: disabled)
- Quick save hotkey - Click Change, then press your desired key combination; Escape cancels capture and Delete/Backspace clears the binding while capturing
- Quick save cooldown - Minimum seconds between InstaPost triggers (default: 15)
dotnet build --configuration Releasedotnet test- Launch the game and use
/xlsettingsto open Dalamud settings - Go to
Experimentaland add the full path toPullToOBS.dllto Dev Plugin Locations - Use
/xlpluginsto open the Plugin Installer - Go to
Dev Tools > Installed Dev Pluginsand enable PullToOBS - Use
/pulltoobsto open the configuration window
AGPL-3.0-or-later
Based on SamplePlugin template by goatcorp