AI,  Music

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:

SongLyricPostedDate Posted
Faron YoungThe 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

css.php