Files

127 lines
7.9 KiB
Markdown
Raw Permalink Normal View History

2026-10-13 15:58:03 -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`.
2026-10-14 12:37:18 -04:00
**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 /
2026-10-13 15:58:03 -04:00
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.
2026-10-13 15:58:03 -04:00
## 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
2026-10-14 12:37:18 -04:00
- `spelling.py` is the typo check (macOS spelling checker via JXA)
2026-10-13 15:58:03 -04:00
- `docxnum.py` keeps Word list numbers
- `app.py` is the Terminal app; `settings.py` is the per-Mac campus settings
2026-10-13 15:58:03 -04:00
- `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).
2026-10-13 15:58:03 -04:00
- `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`.