A CALM START, ONE STEP AT A TIME

Connect your channel.
Start with a JSON file.

Create your own Google desktop client, keep the downloaded file safe, then authorize your own channel in YouTube Publisher. Setup happens in your Google project and your local app.

The diagrams illustrate the workflow; they are not screenshots of Google or the app. Labels may vary. All fields are neutral placeholders, with no real account, project or credential data.

01 / GOOGLE CLOUD

First, prepare your Google project.

Choose or create a project you manage in the Google Cloud console. Use that same project for the API, consent configuration and client.

  1. Find and enable YouTube Data API v3 in the API library. Creating a project or downloading a client file alone is not enough.
  2. Open Google Auth platform. In Branding, enter the app name and contact information Google requests. In Audience, choose the appropriate user type. Use accurate information you control.
  3. For an External app in Testing, add the Google account you will authorize as a test user. Internal is limited to eligible organization users and may be restricted by organization policies.
  4. Review permissions in Data Access. This tool requests https://www.googleapis.com/auth/youtube.force-ssl, which permits viewing, editing and permanently deleting videos, ratings, comments and captions. It is broader than upload-only access. Continue only if you understand and accept the scope.
One projectCreate or choose
Enable APIYouTube Data API v3
Set up consentBranding · Audience · Data Access
Desktop clientClients → Desktop app
Download JSONImport locally next
Illustration 1 · Complete these steps in the same Google project. Labels may vary.

Google setup references: OAuth for desktop apps and consent configuration. See Google’s scope documentation for permission details.

02 / DESKTOP CLIENT

Choose Desktop app. Then download JSON.

Create an OAuth client in Clients in Google Auth platform. Choose Desktop app and a name you will recognize. Download and save the client JSON when creating it; do not rely on being able to view the secret or retrieve the same content later.

Do not choose Web application, an API key or a service account. The desktop client uses a local loopback callback handled by the app. You do not need to enter Web application redirect URIs or edit the JSON manually.

Google Auth platform / Clients

Create OAuth client

Application type
Desktop app
Name
Your desktop client

Client configuration JSON

Download after creation
Keep the original file

Download JSON ↓
Illustration 2 · Check the Desktop app type, then download the client configuration. This is not a token file. Labels may vary.

Client type and flow follow Google’s desktop OAuth documentation. For saving downloads and secrets at creation, see Google’s client management guidance; the interface varies by client type. These cards illustrate the process and are not interactive Google controls.

03 / KEEP THE FILE SAFE

Keep it safe before importing.

Keep a safe original

Keep the downloaded JSON in a private location you control, with a private backup if needed. Import it only into a local app you trust. You do not need to rename the original file or edit its contents when importing through the interface.

Do not treat it as an ordinary attachment

Do not commit it to Git, upload it to a public website, paste it into chat or send it to others for troubleshooting. Describe the error, or share a screenshot with account, client and token information removed.

Client JSON ≠ authorization tokens. The client configuration identifies the app you created. Tokens generated after Google authorization carry channel access and need even stronger protection. Keep both private, especially the tokens/ directory and resumable upload URLs.

File and token handling guidance draws on Google’s OAuth best practices. A desktop client is a public client: its client secret is not a security boundary and does not carry the same access as a refresh token.

04 / CONNECT IN THE APP

Back in the app, authorize your channel.

  1. Open Accounts & channels, choose Import client JSON and select the Desktop app file you downloaded. Importing copies it to client_secret.json in the app’s data directory. Keep the original download safely.
  2. Choose Add account and set a local alias using 1–64 letters, digits, underscores or hyphens, for example my-channel. Do not enter your Google password here. Entering the target channel ID (starting with UC…) is recommended to verify the binding.
  3. Where do I find the Channel ID? Switch to the intended channel and, as its primary owner, open YouTube advanced settings (profile picture → Settings → Advanced settings). Copy Channel ID, not User ID, a channel URL or an @handle. See YouTube’s instructions, then compare it with the ID returned by the app after authorization.
  4. Choose Open Google authorization. On Google’s official page, select the account and channel you actually manage, review the permissions and decide whether to approve. Check carefully if you manage multiple channels or Brand Accounts.
  5. Back in the app, compare the displayed channel name and ID, then choose Check connection to verify online. “Authorization saved” is only a local record. An existing alias cannot be rebound to another channel; use a new alias for another channel.

YouTube Publisher

Accounts & channels

① Import Desktop client JSON
Local aliasmy-channel
Target channel IDUC…
② Open Google authorization ↗
Google

Choose account & channel
Review and approve permissions

③ Return to app, check connection
Illustration 3 · Import JSON locally, authorize at Google, then verify the channel in the app. Placeholder fields are not usable channel information.

This section describes the current app: the default data directory is ~/.video_publisher (configurable). Imported configuration is saved as client_secret.json, and account authorization records as tokens/youtube_<account-alias>.json. This website does not receive these files.

05 / A SMALL FIRST UPLOAD

Try one private video first.

Manually add a short video you have the right to upload, check the channel and metadata, then start the upload. The app interface and folder watcher upload privately first. Wait for both transfer completion and successful YouTube processing, then review in YouTube Studio and decide whether to publish. Transfer completion does not mean processing succeeded or the video is public.

06 / IF SOMETHING STOPS YOU

Check the cause before starting over.

JSON import fails, or redirect_uri_mismatch appears

Check that the file is for an OAuth Desktop app client in the same project, not a Web client, API key or service account. If the type is wrong, create the correct client, save the JSON provided at creation, and import it. Do not edit JSON or invent callback addresses to troubleshoot.

Google denies access, or your account cannot authorize

Check Audience, Testing test users and organization restrictions. If Google raises a risk, verification or organization approval message, first check your project and the message. Do not proceed blindly. Switching to Production does not mean Google verification is complete or that every account can authorize.

Authorization expires after a few days, or invalid_grant appears

For an External project in Testing with this tool’s YouTube scope, refresh tokens usually expire after 7 days. Reauthorization can restore current access, but is not a permanent fix. Revocation, inactivity, account or organization policies and other conditions can also invalidate tokens. Production does not promise permanent validity or remove verification requirements.

Authorization succeeds for the wrong channel

Check the account, Brand Account and returned channel ID before uploading. Reauthorize with the correct target channel ID. An existing alias cannot switch its binding to another channel; use a new alias for another channel.

The channel connects, but uploads fail

Check that YouTube Data API v3 is enabled in the client’s project, then inspect the app’s error, usage and channel restrictions. Valid authorization does not guarantee enough quota, successful uploads or successful YouTube processing.

Token lifetime guidance follows Google’s token expiration documentation. Actual access also depends on project status, the account and organization policies.

07 / STAY IN CONTROL

Sign-out, revocation and backups are separate.

Pause local tasks first. Sign out in the app clears local credential fields but keeps channel bindings and records. It does not revoke access at Google. To revoke access, remove the app in Google Account third-party connections. Backups, other local copies and uploaded videos still need separate management.

Credentials are stored locally as plaintext files without application-level encryption. Protect your system account, disk and backups, and keep the data directory private. Read the privacy policy for retention, cleanup, revocation and third-party transfers.

Ready? Start on your Mac.

Download the app, import your own client and authorize your own channel. This guide only provides instructions; it does not change your Google project. The tool is independent of Google and YouTube and makes no claim of Google verification.

Download for Mac ↗