DEV Community

Cover image for I lost all my Prompter scripts on a Friday. By Sunday, I'd built PrompterKit.
snapsynapse
snapsynapse

Posted on • Originally published at snapsynapse.com

I lost all my Prompter scripts on a Friday. By Sunday, I'd built PrompterKit.

TLDR

Elgato Camera Hub has no export, no backup, and no way to recover scripts once they're gone. I built PrompterKit to fix this. It's a CLI and local web GUI that fills every gap. Free and open source. https://prompterkit.app/


Last Friday during a shoot, I opened Camera Hub and my Prompter scripts were gone. All of them.

I don't still know exactly what happened. A sync hiccup, a setting I touched, a cosmic ray? It doesn't matter. What matters is that there was no backup, no export, no recovery path. Camera Hub stores everything in opaque JSON with no tools to touch it. The scripts just weren't there anymore.

I love my Elgato Prompter, but that was the tipping point. It wasn't the first time the Camera Hub software had frustrated me.

The real workflow problem

Here's how I actually use the Elgato Prompter: I write a script, load it in, read it on camera. Two or three takes in, I've changed some of the wording. Lines that sounded good in my head land flat when spoken aloud. If I stumble more than once, I fix it on the fly. By take three the script on the teleprompter is the actual script, not the version I started with.

Then I want to export that final version. For YouTube, for transcripts, for reference. And by default there's just no way to do it. Camera Hub gives you a text box to type into and absolutely nothing else. What goes in doesn't come back out. Boo!

I'd been living with this since I bought the Prompter. Friday made it non-negotiable.

What I found -- and what was missing

I went looking on GitHub. Found elgato_prompter_text_importer by spieldbergo. It's a solid start for getting scripts in, MIT licensed. But import-only wasn't enough. I needed the full picture: export, rename, reorder, backup, restore.

So I rebuilt it from the ground up and added everything Camera Hub should have shipped with.

Introducing PrompterKit

PrompterKit is a CLI + local web GUI for managing your Elgato Prompter script library. It reads and writes the same files Camera Hub uses, so there's no sync step and no format conversion.

GitHub logo snapsynapse / prompter-kit

Manage Elgato Prompter scripts from CLI or local web GUI: import, export, rename, reorder, backup, restore.

PrompterKit

PrompterKit -- Manage your Elgato Prompter scripts

Manage your Elgato Prompter scripts from the command line or a local web GUI Camera Hub stores scripts in opaque JSON with no import, export, rename reorder, or backup path. PrompterKit fills every gap.

Site: https://prompterkit.app/ Repo: https://github.com/snapsynapse/prompter-kit

Based on spieldbergo/elgato_prompter_text_importer (MIT).

Requirements

  • Python 3.10+
  • Elgato Camera Hub installed
  • Flask (GUI only): pip install flask

Close Camera Hub before any write operation, or use --restart / the camerahub subcommand to have PrompterKit do it for you.

Quick start

CLI

# Import a .txt or .md file (one line per chapter)
python3 prompter_kit.py import script.md --name "My Script"
# Import and auto-restart Camera Hub around the write
python3 prompter_kit.py import script.txt --name "My Script" --restart

# List registered scripts
python3 prompter_kit.py export --list

# Export one script by name or GUID
python3 prompter_kit.py export --name "My Script" --output my_script.txt

# Export every script to a directory
python3 prompter_kit.py export --all

What it does

🔁 Import and export
Load any .txt or .md file as a Prompter script. Export any script (or your entire library!) back to plain text. One command, done.

python3 prompter_kit.py import script.md --name "Episode 42 Intro"
python3 prompter_kit.py export --name "Episode 42 Intro" --output ep42.txt
Enter fullscreen mode Exit fullscreen mode

📦 Backup and restore
Zip your entire script library -- scripts plus settings -- into a timestamped
archive. Restore selectively or wholesale.

python3 prompter_kit.py backup --output backup.zip
python3 prompter_kit.py restore backup.zip --merge
Enter fullscreen mode Exit fullscreen mode

✏️ Rename, reorder, delete
Camera Hub shows scripts in the order you added them with no way to rearrange.
PrompterKit lets you rename, delete, and reindex in whatever order you want.

python3 prompter_kit.py rename "Draft v1" "Final Cut"
python3 prompter_kit.py reindex "Intro" "Act One" "Act Two" "Outro"
Enter fullscreen mode Exit fullscreen mode

🌐 Web GUI
The CLI is fast but I didn't want to live in it. Running python3 prompter_kit_gui.py opens a local web app in your browser with drag-and-drop import, one-click export, and full library management. No server, no account, no cloud. Just Flask running on localhost.

Tech stack

  • Python 3.10+
  • Flask for the GUI (optional, CLI works standalone)
  • No database. PrompterKit reads and writes Camera Hub's own files directly

One non-obvious decision: Camera Hub has to be closed before any write operation, or it silently overwrites your changes when it exits. PrompterKithandles this with a --restart flag that quits Camera Hub, makes the change,
and relaunches it. The GUI surfaces this too.

Try it

git clone https://github.com/snapsynapse/prompter-kit
cd prompter-kit
pip install flask       # GUI only
python3 prompter_kit_gui.py
Enter fullscreen mode Exit fullscreen mode

Or use the CLI directly. No install required beyond Python 3.10.

Full docs at https://prompterkit.app/

One thing

As you may know, we're in a moment in history where you can just build the thing that's been annoying you for two years. Last weekend I went from frustrated to shipping in a fewhours. I love that! Don't you?

If you use an Elgato Prompter, or if you've ever been burned by any app storing your data in a format you can't touch, I'd love to hear how you handle it. What's your current workaround for getting text out of tools that trap it? Drop it in the comments.

Top comments (0)