Skip to content

obzessed/obs-node

Repository files navigation

OBS Node.js Plugin

Status OBS License

Bring in the power of the Node.js ecosystem to Supercharge your OBS Studio with JavaScript automation.

Run scripts, automate scene switching, control filters dynamically, and build custom workflows—all using JavaScript and npm packages.

⚠️ Early Development — This plugin is under active development. Expect breaking changes between versions. Not recommended for production use yet.

Script Editor and REPL


✨ Features

  • 🎬 Script Editor — Built-in code editor with line numbers, zoom, and run-on-demand execution
  • πŸ’» REPL Console — Interactive JavaScript console for live experimentation
  • πŸ”§ Full OBS API Access — Control sources, scenes, filters, transitions, audio, and more
  • ⚑ Event-Driven — React to OBS events (scene changes, stream start/stop, etc.)
  • οΏ½ WebSocket API (No Network) — Direct access to obs-websocket protocol internally—no TCP connection needed
  • πŸ“‘ Vendor Events — Register custom vendor requests and emit events for external integrations
  • πŸ“¦ Node.js Powered — JavaScript runtime with basic Node.js APIs (full support planned)

πŸš€ Quick Examples

// Switch to a scene
obs.frontend.setCurrentScene("Gaming")

// Toggle a source's visibility
obs.sceneItems.setVisible("Main Scene", "Webcam", false)

// Adjust filter settings on the fly
obs.filters.setSettings("Camera", "Color Correction", {
  brightness: 0.1,
  saturation: -0.5
})

// React to events
obs.events.on("StreamStarted", () => {
  console.log("We're live! πŸŽ‰")
})

// Direct WebSocket API access (no network!)
const list = obs.websocket.call('GetSceneItemList', {
    sceneName: "My Scene"
});

// Register vendor request handler
obs.websocket.on("myVendor", "doSomething", (data) => {
  console.log("Received:", data)
  return { success: true }
})

// Emit vendor event to connected clients
obs.websocket.emit("myVendor", "statusUpdate", { status: "ready" })

πŸ“– Documentation


πŸ› οΈ Installation

Requirements

  • OBS Studio 31.0 or later
  • Windows 10/11 (macOS and Linux coming soon)

From Releases

πŸ“¦ Coming soon! Pre-built releases will be available once CI is ready. For now, please build from source.

Building from Source

πŸ”¨ Build instructions coming soon! We're working on proper documentation.


🎯 Use Cases

Scenario What You Can Do
Stream Automation Auto-switch scenes based on game state or viewer commands
Dynamic Overlays Update text sources, trigger animations on events
Filter Control Adjust color grading, zoom effects in response to actions
Chat Integration Build custom chat bots that control OBS
Timed Events Schedule scene changes, countdowns, breaks
Multi-Stream Coordinate multiple sources and outputs programmatically

πŸ—ΊοΈ Roadmap

Planned features for future releases:

Priority Feature Description
πŸ”₯ High macOS & Linux Support Cross-platform builds (currently Windows-only)
πŸ”₯ High Syntax Highlighting & IntelliSense Code editor with syntax colors and autocomplete
πŸ”₯ High Hot Reload Auto-reload scripts on file changes
πŸ”₯ High Extension/Plugin System Load and manage third-party JavaScript extensions
πŸ”₯ High Multi-Script Parallel Runtime Run multiple scripts concurrently in isolated contexts
πŸ”§ Medium Debugging Tools Breakpoints, step-through debugging, variable inspection
πŸ”§ Medium Script Marketplace Community script sharing and discovery
πŸ”§ Medium Source Creation APIs Create custom OBS sources with JavaScript or WebAssembly
πŸ”§ Medium WebAssembly Support Run WASM modules for high-performance operations
πŸ”§ Medium JSX UI Components Figma-like API for building Qt UIs with JSX syntax
πŸ”§ Medium Canvas Drawing API HTML Canvas-like API to draw directly on OBS sources
πŸ”§ Medium FFI Module Access non-bound libobs APIs directly via foreign function interface
βš™οΈ Low Runtime Version Selector Choose between LTS Node.js versions

Have a feature request? Open an issue!


⚠️ Early Development Notice

This plugin is in active early development. You should expect:

  • πŸ”„ Breaking API changes between versions
  • πŸ› Bugs and incomplete features
  • πŸ“ Documentation gaps
  • βš™οΈ Platform limitations (Windows-only for now)

We welcome feedback, bug reports, and contributions! Please open an issue if you encounter problems.


🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request

For bug reports and feature requests, please use GitHub Issues.


πŸ“„ License

This project is licensed under the GNU General Public License v2.0 — see LICENSE for details.

Built with ❀️ for the OBS community.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors