← Back to blogs
Setup guide

Connect your Google account to auto-upload & schedule YouTube reels

September 13, 20266 min read

To publish and schedule reels straight to a YouTube channel, Reel Hearth talks to the YouTube Data API v3 using your own Google credentials — created and stored on your machine, never on ours. This guide walks through creating those credentials, from a fresh Google Cloud project to the moment they're dropped into the app.

1

Create a Google Cloud project

Head to the Google Cloud Console. Open the project dropdown in the top bar and select New Project.

Name it something recognizable, like reelhearth-uploader, click Create, and make sure the new project is selected before moving on.

2

Enable the YouTube Data API v3

From the navigation menu, go to APIs & Services → Library and search for YouTube Data API v3.

Open it and click the blue Enable button.

3

Configure the OAuth consent screen

Uploads modify your channel's content, so Google requires a consent screen before it hands out access.

  1. Go to APIs & Services → OAuth consent screen, choose External, and click Create.
  2. Fill in an app name (e.g. Reel Hearth Uploader) plus a support and developer contact email, then Save and Continue.
  3. Under Scopes, add https://www.googleapis.com/auth/youtube.upload, then continue.
  4. Under Test users, add the exact Google account that owns the target YouTube channel — this step is easy to skip and is why the consent screen fails later if missed.
4

Create an OAuth client ID

  1. Go to APIs & Services → Credentials → Create Credentials → OAuth client ID.
  2. Set Application type to Desktop app — Reel Hearth runs locally, not as a hosted web app, so this is the right type even though it feels unintuitive for something that opens a browser window.
  3. Name it (e.g. Headless CLI Uploader) and click Create.
  4. In the confirmation dialog, click Download JSON and rename the file to client_secrets.json.
5

Add the credentials to Reel Hearth

In the dashboard, open Accounts and choose Connect YouTube channel. Point it at the client_secrets.json file you just downloaded.

The file is copied into Reel Hearth's local config directory on your machine — it's never uploaded anywhere. On first connect, a browser window opens for you to sign in and approve theyoutube.upload scope for that channel; since the app is in testing mode, you'll see an "unverified app" warning, which is expected — click Advanced → Go to (your app name) to continue.

Once approved, Reel Hearth stores the resulting refresh token alongside the client secret and reuses it silently from then on, refreshing it as needed so uploads and schedule slots keep running without a browser prompt.

6

Schedule your first reel

With the channel connected, open a subject's queue and set publish slots the same way you would for Facebook — Reel Hearth picks the next open slot in the channel's target market timezone and uses the YouTube API to upload the rendered reel, title, description, and tags at that time.

Run a dry run first to confirm the pipeline end-to-end before letting it publish for real.

Where your credentials actually live

  • client_secrets.json and the refresh token it produces are stored only in Reel Hearth's local config directory on your machine.
  • Nothing is sent to a Reel Hearth server — there isn't one. The dashboard only answers to the machine it runs on.
  • Revoke access anytime from your Google Account's Security → Third-party access settings; Reel Hearth will simply prompt you to reconnect.

Common snags

"Google hasn't verified this app"

Expected while the OAuth consent screen is in testing mode. As long as the signed-in account is listed as a test user, click through via Advanced.

Consent screen rejects the login

The Google account signing in must exactly match one added under Test users in step 3 — a typo'd or different account will be refused before it reaches the scope approval screen.

Uploads stop working after a while

Refresh tokens for apps in testing mode expire after 7 days of inactivity. Reconnect the channel from Accounts, or publish the OAuth consent screen to production once you're past testing to avoid the limit.