My Live Streaming Workflow

I started doing the Squares TV App Lab live every week or two, over 2 years ago now. This started out as something for the highly discerning audience of Office Hours Global community members.
If I was going to keep people’s attention and not look stupid, I would need a process.
What I’ll show you today uses some bespoke tools that I have been able to create as a software developer. In pre-LLM times I might not have bothered going into all this as the bottleneck for many steps involved coding experience. But these days, spinning up quick tools like mine is possible using tools like Claude Code with little-to-no programming experience.
I don’t expect your stream to follow my exact process - everyone is different. Instead I hope that you will take inspiration from my process when you create your own.

What Are The Streams Like?

My streams have decent production value and tight delivery - more like live TV than most streamers.
I go live on YouTube for about 40 minutes or longer if there is a lot of chat interaction.
I include a title sequence, background music, and a couple of different segments - weekly updates and the main content.
When I’m live, I’m using a teleprompter to see my script, program preview, and any chat messages, directly in my eye line.
I send an email to my mailing list with a link to the live stream and a blog post about the week’s subject.

Preparing For The Stream

Here’s what I do to prepare each week. I make a blog post, create a thumbnail, schedule a live stream, send an email, turn the blog post into a CueCam script, and set up my mic, camera and lights.

The Blog Post

I like to start from a blog post as this means I have a new tutorial on my site, and the content is available in text form as well as video. I’m pretty sure this has helped the LLMs to absorb and recommend my content, so it’s not just for SEO!
I have a Coda doc where I edit all of my content for the website. I like this approach because it’s a good WYSIWYG editor where I can paste images.
Unfortunately, Coda’s API is a little incomplete, so I have made a Chrome Extension to correct this. I have to remember to do this for all the images in my post.
image-tag-extension
When the post is done, I add it to a “Docs Index” table and set a publish time/date.
docs-index
The post can now be synced via an admin page on my server, to become a post on the website with a proper URL.

Email

I have another Coda doc with an email template.  It has fields for the email structure, a link to the blog post, the live stream and thumbnail. I have a link to my big Figma doc with all my thumbnails.
coda-template
I use a “Compose” column to turn the template into markdown.
compose

Thumbnail

Each week I copy the previous week’s thumbnail with Cmd+D. I like to put my face in the thumbnails. Here’s how I do it.
all-the-thumbnails

Transparent Headshot

In CueCam I use the Output→Save Current Frame item a few times.
save-current-frame
This gives me some pictures in my Downloads folder which I open in Preview and use the “Remove Background” feature.
remove-background
I then copy-paste this straight into Figma.
clear-background
I have two standard exports in Figma - a small image for emails and a large one for YouTube and the blog post.
image.png

Creating the Live Stream

I don’t have a YouTube link yet, but I have a “Copy Subject” and “Copy Event Body” button back in my Email Template doc.
buttons
In CueCam, I use the dropdown next to the Go Live button.
new-stream
This remembers the last stream settings but I use my Subject and Copy Event Body buttons to fill it in. I drag in the large thumbnail from my desktop and hit Schedule Now. This gives me an event link for the watch page.
schedule
If I remember, I update my doc index and re-sync the blog post so that it includes the live stream video (or countdown) at the top of the post.
video-link

Sending The Email

Back in the email template, I can now add the YouTube link and small thumbnail image.
I drag the small thumbnail into Coda and then right-click to copy the image URL (so Coda hosts it).
I can see a preview of the final email thanks to another Coda plugin.
email-preview
Once all the fields are filled in, the Copy Markdown button is enabled.
I have a hand-built email system on squares.tv which uses Mailgun to send emails.
I paste in the email subject and body and set the campaign name. It’s pretty rough and ready but it gets the job done. I usually send a test email to myself and check it on my phone, just to make sure I didn’t do anything silly. Then I hit “Send 6,563 emails at once” and make a cup of tea.
email-platform

Preparing the CueCam Script

In CueCam Presenter, I load up the previous week’s script. This has a video loop on the first card, an intro with background, a title sequence, and a few other standard segments. I use File→Duplicate to make an new copy and write some variation of the email intro in the “Today” bit.
app-lab-template
I multi-select last week’s updates and delete them, before adding this weeks’ updates.
delete-cards

A Secret Feature

I don’t want to put all of the week’s main content in the same script, so I will use CueCam’s “Jump To Script” feature.
Now I use the “Open with CueCam” feature on the blog post to download the script and all its images (and videos, which work via GIF previews on the website, but we’ll talk about that another time!).
download-blog-post
This creates a new CueCam script, although it needs a bit of tidying up. (If I forgot to right-click any images, they will be missing).
generated-script
By the way, you don’t really need to do this, you could just copy a large block of text with images and paste them into CueCam and it will usually do a pretty good job of separating them into cards and bringing in the images!).
I save out the file to make sure the next step works. Right-clicking the first card provides a deep link.
deep-link
Now, on a new card, on the More toolbar button, I can use “Jump To Doc” and paste in that deep link.
jump-to-doc
Now, during the stream, when I land on this card in the main script, it will jump to the other doc. Once that other script is finished, CueCam jumps back to the main script again, to the following card (to which I have added the text ”And we’re back”, just to reassure myself).
jump-to-doc-
My live stream script ends with some standard calls-to-action so I never forget, and then I try to remember to add some music or a video at the end, to play us out. Or if I’ve had time, I might play some live music, but that’s another story!
ctas
Next, let me tell you about the audio/video equipment I use to go live.

My Equipment

My camera is a Canon R6 with an older zoom lens on an EF-R adapter, with an Elgato Prompter hanging off the end. It’s a little tenuous but keeps focus and looks good.
gear
I use a Rode NT1 5th Gen as my main mic, as it has some built-in DSP features (although I don’t think I’m using them at the moment - the Rode apps are pretty confusingly named so I never know which is which!).
I have some messy acoustic foam on the walls, but I use CueCam’s Voice Isolation feature to make sure the mic sounds good, and filters out the inevitable screams of the toddler arriving home from his daily travels!
I use a Stream Deck+ with buttons to navigate my script. I have the knob push-actions hooked up to my lighting.
I use a cheap but small bluetooth earpiece to monitor any music and video during the stream. CueCam lets you select a Headphone output and only sends the right thing to your headphones (you can turn on Mic monitoring but it’s very distracting, so it’s available for sanity-checks, but is off by default!).

Go Live Checklist

I have a Shortcut that turns on my HomeKit lights and pops up an alert to remind me to turn on (or off) my camera and background lights. I trigger this by pushing a knob on my StreamDeck.
I set up a Key Light knob on the Stream Deck + for my Elgato Key Light.
I raise my standing desk so I’m standing when I speak.
I use CueCam’s built-in Delay Calculator to make sure my mic is in sync.
I put CueCam’s Teleprompter Window on the Elgato Prompter screen. If I’ll be sharing my browser window, I’ll tidy up my laptop’s main desktop, and move other windows to my larger side-monitor.
I press “Present” on the main CueCam script which has the “Start Time” set, so a large countdown clock appears once the stream is less than an hour away.
Then I’ll go for a walk. This is essential for the transition from “technical / preparation” mode into “performer” mode. It’s time to get loose.

Going Live

In CueCam I press Go Live. On YouTube, this will start pushing video but won’t be live until I press “Go Live” in CueCam or from inside the YouTube dashboard.
Chat messages will now start appearing on the teleprompter.
I used to go live three minutes early with CueCam’s countdown timer going, before pressing “next” on the hour. Now I just press Go Live about five seconds before the hour and get started straight away, to avoid people having to scan through the live video to get to the start.
And then I just read from the teleprompter and press “next”!
I can respond to chat messages as I go. I like to have them in my teleprompter in case anybody is saying “We can’t hear you!”, and I’ll either sequence-break by responding as they come in, or wait until I’ve finished the current segment before responding.
I have the freedom to go off-script whenever I feel like it, or share some other picture or video in-the-moment, thanks to CueCam’s Share Bar.

Thanks For Reading!

That might seem like a lot but I‘m doing a lot!
I think the most important part is the writing. Coming up with an idea and writing it all out.
Beyond that, I expect my tools to take away as much admin as possible.
CueCam gives me the confidence to work this way. I couldn’t do this without CueCam Presenter.
BETA Download script My Live Streaming Workflow