Making The Daily Sprout
I set out the idea for my Daily Prefab Sprout in this post. Here is the process for making it.
Step 1: Curating the Lyrics
As good a lyricist as McAloon is, you still don’t want everything. I needed to curate the lyrics from the ten albums. I used Claude (claude.ai) to analyse each song’s lyrics and strip out repetition and filler. I then identified lyrics to keep, either as stand-alone or as couplets. I used the extensive collection of lyrics at A2ZLyrics for this.
Step 2: Setting Up the Google Sheet
I needed to create a database of the lyrics so decided to use a simple Google Sheet, with four columns:
| Song | Lyric | Posted | Date Posted |
|---|---|---|---|
| Faron Young | The sunset makes a fence out of the forest. |
There was a lot of copying and pasting here, and this was the most time-consuming part. But also fun as I got to appreciate that often the best lyrics are tucked away in “lesser” songs. I then added a fifth column:
| Random |
|---|
=RAND() |
The Random column contains a =RAND() formula in every row. This recalculates every time the sheet is accessed, giving each row a new random number which allows the selection to be random rather than sequential.
Step 3: Creating a Bluesky Account
I wasted a bit of time messing about with Threads, but the multiple account maintenance and complex OAuth in Meta was too messy. I opted for Bluesky because it had simple authentication, and the site isn’t full of nazis.
I created a dedicated account at bsky.app and under Settings → Privacy and Security → App Passwords I created an App Password specifically for Make.com.
Step 4: Building the Automation in Make.com
I used Make.com (free tier) to automate the daily posting. I hadn’t used it before and after some initial errors (all mine) it was very effective and simple. Make uses “scenarios” and within these you create modules. I used four modules chained together:
Module 1 — Schedule
Triggers the scenario once per day at a set time. This isn’t really a separate module but attached to the Google sheets one.
Module 2 — Google Sheets: Search Rows
- Spreadsheet: my lyrics sheet
- Filter: Posted column is empty (unposted rows only)
- Sort by: Random column, Ascending
- Limit: 1
This fetches one random unposted lyric each time it runs.
Module 3 — Bluesky: Create Post
It has a built-in BlueSky module so once it was connected and authenticated to my account I just had to select the Create A Post function. It prompts for a text field, drawing on the Google Sheets variables. I selected:
"{{Lyric}}"
— {{Song}}
This formats each post cleanly with attribution.
Module 4 — Google Sheets: Update a Row
- Row Number: taken from the Google Sheets module output
- Posted: Y
- Date Posted:
{{now}}
This marks the row as used so it never repeats.
Once it was toggled to active I selected Post Once – Daily and set the time. And there it is, all brave and shiny in the world.
I then asked Claude to create a web page that would choose a random lyric from the spreadsheet. I wasn’t worried about repetition here, as the user can keep smashing the “Give me a lyric” button as often as they like. I cheated here and just let Claude do all the HTML. I know, I know. I then hosted it at my Reclaim site.
