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

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MyrinNew
    Senior Member
    • Feb 2024
    • 5168

    #1

    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.







    snapsynapse
    /
    prompter-kit


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






    PrompterKit




    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…





    View on GitHub





    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







    📦 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







    ✏️ 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"







    🌐 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







    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.




    More...
Working...