christianandClaude Opus 5.5 f2306f781e Carry underlines to the slides; keep Bible names in the typo check (v1.3.1)
- Underlined words in the notes are underlined on every slide type, as the
  operator does by hand (Part 8: "saved", "saves"); segments are now
  (text, bold, italic, underline); TextEdit edit format uses __word__
- Typo check never changes capitalised words inside scripture, or names
  the notes' scripture uses ("Gilead was the father..." became "Gilled")
- Tests: Part 8 + Together Tuesday notes, hand-fixed Part 8 deck

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:11:30 -04:00

Message Notes → ProPresenter

Turns the pastor's sermon notes (Slides - <message>.rtf, or a Word file) into the message presentation in ProPresenter's Messages library, built from the series or generic template. These are the same slides you'd otherwise make by copy and paste.

Using it (on the ProPresenter Mac)

Double-click Message Notes to ProPresenter.command on the Desktop. It works everything out:

  • Notes: the newest Slides - ….rtf. The email script saves these into Google Drive > My Drive > Message Notes; it also checks Downloads, Desktop and Documents.
  • Speaker: from the email ("Pastor Mehdi will be preaching live from NA…"), matched to the speakers in your library; otherwise the template's speaker.
  • Template: series when the title matches the series template's sample title, else generic.
  • Date and playlist: the Planning Center playlist for this message, e.g. "Where is Your Faith? - Part 8 - October 18, 2026". Its date gives the name: 261018 Where Is Your Faith Part 8.
  • YouTube: Claude writes the title and description in the house style.

It shows one short summary, plus notes only where something changed or needs a look: a scripture split over two slides, text that is too long somewhere, picture slides, lines left off the slides. Font sizes are never changed; if text is too long, the note says what size would fit.

Enter then does it all:

  1. Saves the presentation in the Messages library.
  2. Links it into the playlist's Message section (Planning Center's "Resi Message" item). ProPresenter only reads playlists when it starts, so the tool quits ProPresenter, adds the link, and reopens the same version, about 30 s. It won't do that on a Sunday morning or while a slide is on screen, or while the Message timer runs; it tells you to drag it in instead. If the playlist isn't imported yet, it asks you to import it from Planning Center first. Each change backs the playlist file up to …/MessageNotes/backups (last 20 kept).
  3. Opens the YouTube title and description in TextEdit, ready to paste into Restream. They're saved as …/MessageNotes/youtube-<name>.txt.

Typo check: the summary's Spelling line says "no typos found" or how many were fixed, and each fix is listed ("Slide 31: fixed “OBEDIANCE” → “OBEDIENCE”"). It uses macOS's own spelling checker and autocorrect, including ALL-CAPS emphasis words and doubled words ("the the").

  • Names it doesn't know (Rahab, Chniouli) are left alone.
  • Greek/Hebrew sermon words (dunamis, agape…) and Bible compounds (lampstand, firstfruits) are never changed.
  • r undoes all fixes or just the ones you pick. An undone word goes into …/MessageNotes/allowed-words.txt and is never changed again.

Keys at the summary: r undo typo fixes · e edit the slides in TextEdit · t s n d f change template / speaker / name / date / notes file · v view the description · y setup · q quit.

One-time setup (y), done at the ProPresenter Mac:

  • Claude API key (console.anthropic.com → API keys). It goes straight into the Keychain.
  • Email pickup: paste apps-script/SaveSermonNotes.gs into script.google.com as media@waterschurch.org, run install, Allow. It checks every 10 minutes and saves the notes and the email text into Drive > Message Notes.
  • The first restart asks "Terminal wants to control ProPresenter". Click OK.

PICTURE / CLEAR PICTURE slides are always kept. When the notes mark a picture ("[PICTURE: …]", "<pic - ….jpg>"), they go there with the picture named in the slide notes.

Other campuses

tools/make_kit.sh builds dist/Message Notes Kit <version>.zip: an installer, the program, the Desktop launcher and READ ME FIRST.txt. Send the zip to the campus; on their ProPresenter Mac they unzip it and double-click Install Message Notes.command (it installs Apple's Command Line Tools first if Python is missing). The first run asks which campus it is and saves it in ~/Library/Application Support/MessageNotes/settings.json:

  • The campus code picks the preacher from the notes email ("Pastor Geyser will be preaching live in AB"); a lone surname matches the most recent speaker with it.
  • YouTube text is only written at NA ("youtube": true); tools/deploy.sh writes NA's settings.
  • The ProPresenter folder, network port and template library are read from ProPresenter itself. Templates are any _TEMPLATE…DO NOT DELETE….pro (with GENERIC in the name = generic).
  • Without ProPresenter's network on, it never restarts ProPresenter to link the playlist.

How notes become slides

In the notes On the slides
first line / second line / bare reference Title slide (title, subtitle, main passage)
paragraph starting with a reference (John 1:12 ESV …) SCRIPTURE. Bold words stay bold.
a line on its own Point
lead-in (…: / …? / italic) + one line one Point, lead-in in the italic style
3+ lines together, a list, or after "(one at a time)" *STREAM DECK* slide + Build (one step per line)
Sermon in a Sentence: + sentence SERMON IN A SENTENCE
(…), […], // …, coloured non-scripture notes left off, shown in the review

Formatting always comes from the template's own sample slides. To change how something looks, change the template in ProPresenter and the tool follows. Templates are found by name: any _TEMPLATE … DO NOT DELETE … presentation in Messages, with GENERIC marking the generic one.

Fitting. Every text is laid out with macOS's text system (the one ProPresenter uses) in each place it will be seen:

  • the slide itself
  • each themed screen of the Look the template's SPEAKER NAME slide triggers (today Message: Stream Lower Thirds on the stream, Center LED Wall on the LED wall)

On themed screens ProPresenter uses the theme's font size, and only words styled differently from the rest of their box keep bold/italic.

  • Scriptures too long anywhere are split at verse numbers into as few, even slides as possible, all with the same reference.
  • Other text too big for the slide is reduced in 1pt steps.
  • Text too long for a theme box is flagged, since the theme fixes the size there.

Files

  • src/: the program (pure Python 3.9, no installs)
    • notes.py reads the notes and decides the slides
    • deck.py copies template slides and fills them in
    • themes.py finds the stream and LED wall theme boxes
    • measure.py does the text layout
    • rtf.py, pbwire.py + schema.json read and write the RTF and ProPresenter files
    • plantext.py is the TextEdit format
    • playlist.py + ppctl.py handle the playlist link and the safe ProPresenter restart
    • youtube.py writes the YouTube text (Claude API over HTTPS); secrets_store.py keeps the key in the Keychain
    • spelling.py is the typo check (macOS spelling checker via JXA)
    • docxnum.py keeps Word list numbers
    • app.py is the Terminal app; settings.py is the per-Mac campus settings
  • apps-script/SaveSermonNotes.gs is the Google Apps Script for email pickup.
  • tools/build.sh builds dist/message-notes.pyz and the launcher. tools/deploy.sh builds and installs both on the NA ProPresenter Mac, via the ingest Mac's SSH key. tools/make_kit.sh builds the kit for other campuses (tools/kit/ holds its installer and read-me).
  • tools/gen_schema.py regenerates schema.json from the community ProPresenter .proto files (github.com/greyshirtguy/ProPresenter7-Proto, autogen-proto) after a ProPresenter upgrade.
  • tests/run_tests.py runs offline checks against real notes and presentations. Last Sunday's notes must rebuild last Sunday's deck. tests/gen.py builds a deck from a laptop, measuring on the ProPresenter Mac.

On the ProPresenter Mac: app in ~/Library/Application Support/MessageNotes/, log in ~/Library/Logs/message-notes.log, last preview page in …/MessageNotes/last-run/index.html.

S
Description
Sermon notes (RTF) -> ProPresenter message presentation, playlist link and YouTube text
Readme
363 KiB
Languages
Rich Text Format 69.3%
Python 29.3%
Shell 1%
JavaScript 0.4%