Skip to content

YouTube

Your agents upload your walkthroughs with title, captions and thumbnail, publish them on schedule, and answer every comment as you.

Connect
Sign in once, 3 grants
Runs through
Your account
First run
See which videos rank for your problem, about 0.03¢
Sites
YouTube
Post.publish
You, to your agent

Upload my rent-tracking walkthrough as a public video with automatic captions, and show me how it will read.

curl -X POST "https://api.sb/leaseline.app/posts/publish?mode=try" \
  -H "Authorization: Bearer $SB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"handle":"youtube:leaseline","format":"video","title":"Track rent for 50 units without a spreadsheet","file":"files/walkthrough-rent","captions":"auto","status":"public"}'
npx startup-builder do Post.publish --try --data '{"handle":"youtube:leaseline","format":"video","title":"Track rent for 50 units without a spreadsheet","file":"files/walkthrough-rent","captions":"auto","status":"public"}'
{
  "name": "do",
  "arguments": {
    "mode": "try",
    "code": "return await $.Post.publish({ handle: 'youtube:leaseline', format: 'video', title: 'Track rent for 50 units without a spreadsheet', file: 'files/walkthrough-rent', captions: 'auto', status: 'public' })"
  }
}
import { $ } from 'startup-builder'

const result = await $.try.Post.publish({ handle: 'youtube:leaseline', format: 'video', title: 'Track rent for 50 units without a spreadsheet', file: 'files/walkthrough-rent', captions: 'auto', status: 'public' })
Response
{
  "$type": "Post",
  "mode": "try",
  "stored": false,
  "venue": "youtube",
  "status": "public",
  "title": "Track rent for 50 units without a spreadsheet",
  "titleLength": 45,
  "descriptionBytes": 812,
  "captions": "en, automatic",
  "thumbnail": "set from files/walkthrough-rent at 0:42",
  "checks": {
    "title": "within 100",
    "description": "within 5,000 bytes",
    "tags": "within 500"
  }
}
Try mode reads, stores nothing and spends nothingAPI referenceIts Nouns

Connect once

  1. Call Integration.connect with system: 'social' and venue: 'youtube', then open the connectUrl it returns and sign in as the Google account that owns your channel.
  2. Approve the three grants Google lists, then pick the channel if the account holds more than one.
  3. Call Handle.connect to bind the channel as your account.
GrantWhat it unlocksScope
UploadNew videos, with title, description, tags and privacyhttps://www.googleapis.com/auth/youtube.upload
Manage videos and commentsCaptions, thumbnails, playlists, edits and takedowns, and replies to commentshttps://www.googleapis.com/auth/youtube.force-ssl
Read your channelEach video’s views, likes and commentshttps://www.googleapis.com/auth/youtube.readonly
ToDo this
PauseIntegration.pause stops every call through Google at once and keeps the token; Integration.resume picks up from the same cursor.
ReconnectIntegration.reconnect returns a fresh connectUrl that lasts one hour, and keeps the Integration's id and cursor, so nothing imports twice.
DisconnectIntegration.revoke revokes the token with Google; every record it brought in stays in your records.

What your agents do

AskVerbRuns throughPrice
Upload this walkthrough with its title, description, captions and thumbnail.Post.publishYour accountFree
Upload it now and make it public Tuesday at 9:00.Post.scheduleYour accountFree
Reply to each new comment on my videos.Conversation.answerYour accountFree
Take down the old pricing video.Post.withdrawYour accountFree
Show me each video’s views and comments this month.Metric.queryYour accountFree

Calls on your own account are free.

Reading this site’s public data needs no account: Keyword.search is a Data call (the three ways a call runs).

What it holds

NounThe account’s objectWhenWhich side leads
PostvideoYour agent uploadsYour records
MessagecommentThreadSomeone comments, or your agent repliesThe account
ProspectchannelA commenter who fits asks how it worksYour records

Events and webhooks

DirectionEvent
EmitsPost.published, Post.scheduled, Post.withdrawn, Message.created
Hears PubSubHubbub channel feedBecomes Post.published

Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed (Events and webhooks).

Limits

WhatLimitCall
A scheduled videoUploads private and goes public at its time; YouTube allows a time only on a video never published beforePost.schedule
Upload quotaYouTube meters uploads a day; an upload past the day’s quota refuses with quota-reached and runs after the reset at midnight PacificPost.publish
Custom thumbnails and videos over 15 minutesNeed a verified channel; the agent checks before it uploads and says which step is missingPost.publish
CommentsRead every 30 minutes, since YouTube sends no webhook for commentsEvery call

Start here

MoveThe rule
StructureOne channel and one walkthrough a week, each answering one search your buyers type, titled with that search.
BudgetNo spend: about 2 hours of your time a video, cut into 3 Shorts and one post, so each recording feeds four places.
CreativeShow the result in the first 15 seconds, then the steps on screen; captions on every video, and a description whose first line repeats the search.
Kill ruleRetitle a video once if it has under 100 views from search at 30 days; after 8 videos with no signups from YouTube, move the hours to your next Play.
BenchmarkSource
Title 100 characters, description 5,000 bytes, tags 500 charactersYouTube Data API
Judge a video at 30 days by views from search, not by subscribersOur planning number
8 videos before you judge the channelOur planning number

Field map

Our fieldYouTube’s fieldNotesCalls
Post.titlesnippet.title100 characters, no < or >Post.publish, Post.schedule
Post.bodysnippet.description5,000 bytes, so accented letters count doublePost.publish, Post.schedule
Post.tagssnippet.tags500 characters in all, commas includedPost.publish, Post.schedule
Post.publishAtstatus.publishAtSent with status.privacyStatus privatePost.schedule
Post.statusstatus.privacyStatuspublic, unlisted or private; public when none is setPost.publish

What try does here

Checks the file, title, description and tags against YouTube’s limits and returns the video page as it will read; nothing uploads and no quota is spent.

How long a connection lasts

A connection lasts until you revoke it in your Google Account; Google also ends a grant left unused for six months, and every call your agents make counts as use.

The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with needs-reauth.

Formats

SiteFormatSizeLimits
YouTubeVideoNone.Title 100 characters; description 5,000 bytes; tags 500 characters in all

Plays and strategies

Used by

No Workflow, agent task or Service acts through it yet: your agents call it directly.

Reference

5 calls, each with its path and price
CallPathPrice
Post.publishPOST /posts/publishFree
Post.schedulePOST /posts/scheduleFree
Conversation.answerPOST /conversations/answerFree
Post.withdrawPOST /posts/withdrawFree
Metric.queryPOST /metrics/queryFree

Contents