Claude Code skill
Bilingual worship songs in ProPresenter 7, built by a Claude Code skill
Every Sunday my church shows new songs in Ukrainian and English, and building one by hand in ProPresenter 7 took 10 to 30 minutes. I built a Claude Code skill that turns the lyrics and their translation into a ready song in 4–6 minutes, with the same readability rules on every slide, and shared it for free with other church media teams.
10–30 → 4–6 min to prepare one song
2 languages on every slide
0 extra packages plain Python 3, works with or without Claude
MIT free and open source
The task
Every Sunday the service has new songs, and existing songs get changed. We show the lyrics in two languages, and to be attractive and easy to read for the congregation, every slide has to follow a set of rules: accessibility, text sizes, the background bar and its height, line breaks.
By hand, one song meant clicking, positioning to the pixel, copying line by line, scrolling and reformatting. Lyrics copied from websites bring the site’s fonts and formatting with them, which we don’t want on screen.
The idea
I asked myself why I spend so much time on each song when Claude could do it for me, and started with a quick test instead of a big plan. Together with Claude Code I spent about 40 minutes studying how ProPresenter 7 stores a song in its file, then created the script. The first test worked.
The slide rules
- The primary language (Ukrainian) is large, on a black bar; English is smaller, below it.
- One or two lines per slide. A one-line slide gets a short bar, a two-line slide a tall bar, picked per slide.
- Song sections become ProPresenter groups (Verse 1, Chorus, Bridge, Tag…) with the same colours in every song.
- Repeats are not duplicated: each section is one group, and the operator replays it live.
How it works
- ProPresenter 7 has no official way to create song files, so the tool works with the program’s real file format.
- It does not draw slides from scratch. It copies a known-good slide made in ProPresenter and changes only the text, IDs and position, so the design stays exactly as designed.
- The song is written as a short JSON spec, or pasted as lyrics into Claude Code, which splits it into slides.
- An inspect script checks every slide’s text, layout and IDs before anything goes into the library.
Two pitfalls, so you don’t hit them
- Every slide needs its own base-slide ID. Otherwise every preview thumbnail shows slide 1, while the live output is still correct, which is confusing.
- Close ProPresenter before writing into its library. While open, it can overwrite the new file.
Result
One song now takes 4–6 minutes instead of 10–30: no manual clicks, pixel-hunting, copying, scrolling or cleaning up website formatting. A full song built by the skill opens in the library as 11 slides in five colour-coded groups, with Ukrainian on the bar and English below on every slide, and preview and live output work right away.
The time saved goes into more creative work in the media service. The tool is public and free, with a README in English, Ukrainian, Russian and Dutch.
Tools
FAQ
- How long does it take to build a bilingual song with the skill?
- About 4–6 minutes per song, compared with 10–30 minutes of manual work in ProPresenter 7.
- Do I need Claude to use it?
- No. Claude Code makes it conversational (paste the lyrics and ask for a new song), but the Python scripts work on their own with no extra packages.
- Does it work with languages other than Ukrainian and English?
- Yes. The first language is simply the primary one and the second the secondary one, so any language pair works.
- Can I use my own slide design?
- Yes. Two one-slide template songs define the look. Replace them with songs made in your own ProPresenter, using the same three layers, and new songs follow your design.
- Is it safe for my ProPresenter library?
- It only adds new files and stops if ProPresenter is open, because an open ProPresenter can overwrite files in its library. Back up your library first anyway.