Reference · Tools
YouTube
Manage YouTube channels, playlists, playlist items, videos, and video categories via the YouTube Data API v3.
The YouTube node manages channels, playlists, playlist items, videos and video categories through Data API v3, uploading videos with a resumable chunked upload. A typical build is publishing a rendered video with its title, description and playlist placement set automatically.
- Node type
- Action (binary)
- Parameters
- 57
- Outputs
- Output, Error
- Credentials
- YouTube OAuth2
YouTube
Manage YouTube channels, playlists, and videos
Overview
The YouTube tool provides full access to the YouTube Data API v3. Supports five resources: (1) Channel — get, getAll, update, uploadBanner. (2) Playlist — create, delete, get, getAll, update. (3) Playlist Item — add, delete, get, getAll. (4) Video — delete, get, getAll (search), rate, update, upload. (5) Video Category — getAll. Binary operations include video upload (resumable upload with chunked transfer) and channel banner upload. Requires Google OAuth2 credentials with YouTube Data API scope.
Category: Marketing
Tool Name: google_youtube
Version: 1
Appearance: Icon: si-youtube | Color: #FF0000
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires YouTube OAuth2 credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Channel | channel |
| Playlist | playlist |
| Playlist Item | playlistItem |
| Video | video |
| Video Category | videoCategory |
Operations
Each resource has its own Operation list, and several resources reuse the same operation values (get, getAll, delete, update). Pick the resource first, then the operation.
| Resource | Operation | Value | Description |
|---|---|---|---|
| Channel | Get | get | Retrieve a channel |
| Channel | Get Many | getAll | Retrieve many channels |
| Channel | Update | update | Update a channel |
| Channel | Upload Banner | uploadBanner | Upload a channel banner image |
| Playlist | Create | create | Create a playlist |
| Playlist | Delete | delete | Delete a playlist |
| Playlist | Get | get | Get a playlist |
| Playlist | Get Many | getAll | Retrieve many playlists |
| Playlist | Update | update | Update a playlist |
| Playlist Item | Add | add | Add a video to a playlist |
| Playlist Item | Delete | delete | Remove an item from a playlist |
| Playlist Item | Get | get | Get a playlist item |
| Playlist Item | Get Many | getAll | Retrieve many playlist items |
| Video | Delete | delete | Delete a video |
| Video | Get | get | Get a video |
| Video | Get Many | getAll | Search for videos |
| Video | Rate | rate | Rate a video (like/dislike) |
| Video | Update | update | Update video metadata |
| Video | Upload | upload | Upload a video (resumable upload) |
| Video Category | Get Many | getAll | Retrieve video categories for a region |
Parameters
Every parameter accepts expressions. Where an ID field is left empty, the node also falls back to a field of the same name on the input item — an item carrying channelId, playlistId, playlistItemId, videoId or title can drive the node directly.
The Fields parameter maps to the API’s part argument and decides which blocks of the resource come back. * asks for all of them.
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Authentication | options | No | oAuth2 | Authentication method to use. |
Options: oAuth2 (OAuth2, recommended), serviceAccount | ||||
Google Account (credentialId) | credential | No | — | Connect or select your Google account. (shown when Authentication is oAuth2) |
| Service Account Email | string | Yes | — | The email address of the Google service account. (shown when Authentication is serviceAccount) |
Private Key (serviceAccountPrivateKey) | string | Yes | — | The private key from the service account JSON key file. Paste the whole PEM block, BEGIN and END lines included. (shown when Authentication is serviceAccount) |
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. Keep low for upload operations (1–20). |
Channel: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Channel ID | string | Yes | — | The ID of the channel to retrieve. |
Fields (part) | multiOptions | No | ['*'] | Comma-separated list of resource properties to include in the response. |
Options: *, brandingSettings, contentDetails, contentOwnerDetails, id, localizations, snippet, statistics, status, topicDetails |
Channel: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Fields (part) | multiOptions | No | ['*'] | Comma-separated list of resource properties to include in the response. |
Options: *, brandingSettings, contentDetails, contentOwnerDetails, id, localizations, snippet, statistics, status, topicDetails | ||||
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return (1–50). (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the listing. With none of these set, the node returns your own channels. |
— Category ID (categoryId) | string | No | — | YouTube guide category ID to filter by. |
— For Username (forUsername) | string | No | — | YouTube username to retrieve the channel for. |
— ID (id) | string | No | — | Comma-separated list of channel IDs. |
— Managed By Me (managedByMe) | boolean | No | false | Whether to only return channels managed by the content owner. |
| Options | collection | No | {} | Extra request options. |
— Language Code (hl) | string | No | — | Language code for localized resource metadata (e.g. “en”, “de”). |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users acting on behalf of the content owner. |
Channel: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Channel ID | string | Yes | — | The ID of the channel to update. |
| Update Fields | collection | No | {} | Branding settings to change. Only the fields you add are sent. |
— Country (country) | string | No | — | The country with which the channel is associated. |
— Description (description) | string | No | — | Channel description (max 1000 characters). |
— Default Language (defaultLanguage) | string | No | — | Default language for the channel. |
— Default Tab (defaultTab) | string | No | — | Content tab to display by default. |
— Featured Channels Title (featuredChannelsTitle) | string | No | — | Title for the featured channels module (max 30 chars). |
— Featured Channels URLs (featuredChannelsUrls) | string | No | — | Comma-separated list of featured channel IDs. |
— Keywords (keywords) | string | No | — | Space-separated keywords for the channel. |
— Moderate Comments (moderateComments) | boolean | No | false | Whether comments need approval before being visible. |
— Profile Color (profileColor) | string | No | — | Prominent color for the channel. |
— Show Related Channels (showRelatedChannels) | boolean | No | false | Whether to show related channels. |
— Show Browse View (showBrowseView) | boolean | No | false | Whether to show browse view on the channel page. |
— Tracking Analytics Account ID (trackingAnalyticsAccountId) | string | No | — | Google Analytics account ID for tracking. |
— Unsubscribed Trailer (unsubscribedTrailer) | string | No | — | Video ID for the featured video for unsubscribed viewers. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Channel: Upload Banner
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Channel ID | string | Yes | — | The ID of the channel to update. |
Binary Property (binaryPropertyName) | string | Yes | data | Name of the binary property containing the banner image to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Playlist: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Title | string | Yes | — | The title of the playlist. |
| Options | collection | No | {} | Optional playlist properties. |
— Description (description) | string | No | — | The playlist description. |
— Privacy Status (privacyStatus) | options | No | — | The playlist privacy status. |
Options: private, public, unlisted | ||||
— Tags (tags) | string | No | — | Comma-separated keyword tags. |
— Default Language (defaultLanguage) | string | No | — | Language code (e.g. “en”). |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID. |
— On Behalf Of Content Owner Channel (onBehalfOfContentOwnerChannel) | string | No | — | Channel ID when acting on behalf of a content owner. |
Playlist: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist ID | string | Yes | — | The ID of the playlist. |
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Playlist: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist ID | string | Yes | — | The ID of the playlist. |
Fields (part) | multiOptions | No | ['*'] | Resource properties to include. |
Options: *, contentDetails, id, localizations, player, snippet, status | ||||
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
— On Behalf Of Content Owner Channel (onBehalfOfContentOwnerChannel) | string | No | — | Channel ID when acting on behalf of a content owner. |
Playlist: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Fields (part) | multiOptions | No | ['*'] | Resource properties to include. |
Options: *, contentDetails, id, localizations, player, snippet, status | ||||
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return (1–50). (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the listing. With neither set, the node returns your own playlists. |
— Channel ID (channelId) | string | No | — | Only return playlists from this channel. |
— ID (id) | string | No | — | Comma-separated playlist IDs. |
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
— On Behalf Of Content Owner Channel (onBehalfOfContentOwnerChannel) | string | No | — | Channel ID when acting on behalf of a content owner. |
Playlist: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist ID | string | Yes | — | The ID of the playlist. |
| Title | string | Yes | — | The title of the playlist. It is always sent, so set it even when changing something else. |
| Update Fields | collection | No | {} | Other playlist properties to change. |
— Description (description) | string | No | — | The playlist description. |
— Privacy Status (privacyStatus) | options | No | — | The playlist privacy status. |
Options: private, public, unlisted | ||||
— Tags (tags) | string | No | — | Comma-separated keyword tags. |
— Default Language (defaultLanguage) | string | No | — | Language code (e.g. “en”). |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Playlist Item: Add
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist ID | string | Yes | — | The ID of the playlist to add to. |
| Video ID | string | Yes | — | The ID of the video to add. |
| Options | collection | No | {} | Optional placement and playback settings. |
— Position (position) | number | No | — | Zero-based position in the playlist. |
— Note (note) | string | No | — | User-generated note (max 280 chars). |
— Start At (startAt) | string | No | — | Start time in seconds. |
— End At (endAt) | string | No | — | End time in seconds. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Playlist Item: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist Item ID | string | Yes | — | The ID of the playlist item — not the video ID. |
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Playlist Item: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist Item ID | string | Yes | — | The ID of the playlist item — not the video ID. |
Fields (part) | multiOptions | No | ['*'] | Resource properties to include. |
Options: *, contentDetails, id, snippet, status | ||||
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Playlist Item: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Playlist ID | string | Yes | — | The playlist whose items you want. |
Fields (part) | multiOptions | No | ['*'] | Resource properties to include. |
Options: *, contentDetails, id, snippet, status | ||||
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return (1–50). (shown when Return All is false) |
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Video: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Video ID | string | Yes | — | The ID of the video. |
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Video: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Video ID | string | Yes | — | The ID of the video. |
Fields (part) | multiOptions | No | ['*'] | Resource properties to include. |
Options: *, contentDetails, id, liveStreamingDetails, localizations, player, recordingDetails, snippet, statistics, status, topicDetails | ||||
| Options | collection | No | {} | Extra request options. |
— On Behalf Of Content Owner (onBehalfOfContentOwner) | string | No | — | Content owner ID for CMS users. |
Video: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return (1–50). (shown when Return All is false) |
| Filters | collection | No | {} | Search criteria. This operation is a search, so a Query or a Channel ID is usually what you want. |
— Channel ID (channelId) | string | No | — | Only return videos from this channel. |
— For Developer (forDeveloper) | boolean | No | false | Restrict to videos uploaded via your app. |
— Published After (publishedAfter) | string | No | — | ISO 8601 datetime. Only return videos published after this time. |
— Published Before (publishedBefore) | string | No | — | ISO 8601 datetime. Only return videos published before this time. |
— Query (q) | string | No | — | Search query term. |
— Region Code (regionCode) | string | No | — | ISO 3166-1 alpha-2 country code. |
— Related To Video ID (relatedToVideoId) | string | No | — | Retrieve videos related to this video. |
— Video Category ID (videoCategoryId) | string | No | — | Only return videos in this category. |
— Video Syndicated (videoSyndicated) | boolean | No | false | Only videos playable outside youtube.com. |
— Video Type (videoType) | options | No | — | Restrict results to one kind of video. |
Options: any, episode, movie | ||||
| Options | collection | No | {} | Result ordering and filtering. |
— Order (order) | options | No | relevance | The order results come back in. |
Options: date, relevance | ||||
— Safe Search (safeSearch) | options | No | — | Whether to filter restricted content. |
Options: moderate, none, strict |
Video: Rate
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Video ID | string | Yes | — | The ID of the video. |
| Rating | options | No | like | The rating to apply as the authenticated account. |
Options: dislike, like, none (remove any previous rating) |
Video: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Video ID | string | Yes | — | The ID of the video. |
| Title | string | Yes | — | The title of the video. It is always sent, so set it even when changing something else. |
| Region Code | string | No | — | ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”, “DE”). Used to determine video category availability. |
Category ID (categoryId) | string | Yes | — | Numeric video category ID. Use Video Category: Get Many to list available categories for your region. |
| Update Fields | collection | No | {} | Other video properties to change. |
— Description (description) | string | No | — | The video description. |
— Tags (tags) | string | No | — | Comma-separated tags. |
— Default Language (defaultLanguage) | string | No | — | Language code (e.g. “en”). |
— Privacy Status (privacyStatus) | options | No | — | Who can see the video. |
Options: private, public, unlisted | ||||
— Embeddable (embeddable) | boolean | No | false | Whether the video can be embedded on other websites. |
— Public Stats Viewable (publicStatsViewable) | boolean | No | true | Whether extended stats are publicly viewable. |
— Publish At (publishAt) | string | No | — | Scheduled publish date (ISO 8601). Requires privacyStatus=private. |
— Recording Date (recordingDate) | string | No | — | Date and time when the video was recorded (ISO 8601). |
— Self Declared Made For Kids (selfDeclaredMadeForKids) | boolean | No | false | Whether the video is designated as child-directed. |
— License (license) | options | No | — | The licence the video is published under. |
Options: creativeCommon, youtube |
Video: Upload
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Title | string | Yes | — | The title of the video. |
| Region Code | string | No | — | ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”, “DE”). Used to determine video category availability. |
Category ID (categoryId) | string | Yes | — | Numeric video category ID. Use Video Category: Get Many to list available categories for your region. |
Binary Property (binaryPropertyName) | string | Yes | data | Name of the binary property containing the video file to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
| Options | collection | No | {} | Optional video properties. |
— Description (description) | string | No | — | The video description. |
— Tags (tags) | string | No | — | Comma-separated keyword tags. |
— Default Language (defaultLanguage) | string | No | — | Language code (e.g. “en”). |
— Privacy Status (privacyStatus) | options | No | — | Who can see the video. |
Options: private, public, unlisted | ||||
— Embeddable (embeddable) | boolean | No | false | Whether the video can be embedded on other websites. |
— Public Stats Viewable (publicStatsViewable) | boolean | No | true | Whether extended stats are publicly viewable. |
— Publish At (publishAt) | string | No | — | Scheduled publish date (ISO 8601). Requires privacyStatus=private. |
— Recording Date (recordingDate) | string | No | — | Date and time when the video was recorded (ISO 8601). |
— Self Declared Made For Kids (selfDeclaredMadeForKids) | boolean | No | false | Whether the video is designated as child-directed. |
— License (license) | options | No | — | The licence the video is published under. |
Options: creativeCommon, youtube | ||||
— Notify Subscribers (notifySubscribers) | boolean | No | false | Whether to send notifications to channel subscribers. |
Video Category: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Region Code | string | Yes | — | ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”). |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return (1–50). (shown when Return All is false) |
Output Data
Every operation merges its result onto the input item’s JSON — the fields the item already carried survive, and a result field with the same name overwrites the item’s value. Binary data on the input item is forwarded on every operation, including the two upload operations, which read the file but do not consume it.
| Operation | Output |
|---|---|
| Channel Get, Channel Get Many, Playlist Get, Playlist Get Many, Playlist Item Get, Playlist Item Get Many, Video Get, Video Get Many, Video Category Get Many | One output item per record returned. Return All keeps paging until YouTube runs out of results. |
| Channel Update, Playlist Create, Playlist Update, Playlist Item Add, Video Update | One output item carrying the returned resource. |
| Video Upload | One output item carrying the created video resource plus uploadId, the new video’s ID. |
| Channel Upload Banner | One output item carrying the API response plus bannerUploaded: true. |
| Playlist Delete, Playlist Item Delete, Video Delete | One output item carrying success: true and the ID that was removed — deletedPlaylistId, deletedPlaylistItemId or deletedVideoId. |
| Video Rate | One output item carrying success: true, videoId and rating. |
An empty result never drops the item. A listing that matched nothing emits the input item with results: [] added; a Get that found nothing emits it with success: false and a message such as “Video not found”. Check for the field you expect rather than assuming an item means a hit.
Usage Examples
- Upload a video to YouTube
- Search for videos on a channel
- Create a new YouTube playlist
- Add a video to a playlist
- Update video metadata (title, description, tags)
- Upload a channel banner image
- Get video categories for a region
- Rate a video (like/dislike)
Example Configuration
Upload a video file produced by an upstream node:
{
"type": "google_youtube",
"parameters": {
"resource": "video",
"operation": "upload",
"title": "{{ $json.title }}",
"regionCode": "US",
"categoryId": "22",
"binaryPropertyName": "data",
"options": {
"description": "{{ $json.description }}",
"tags": "tutorial,howto",
"privacyStatus": "private",
"notifySubscribers": false,
"selfDeclaredMadeForKids": false
}
}
}
Search a channel’s most recent videos:
{
"type": "google_youtube",
"parameters": {
"resource": "video",
"operation": "getAll",
"returnAll": false,
"limit": 25,
"filters": {
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"q": "release notes",
"videoType": "any"
},
"options": {
"order": "date",
"safeSearch": "moderate"
}
}
}
Create a public playlist:
{
"type": "google_youtube",
"parameters": {
"resource": "playlist",
"operation": "create",
"title": "Best of {{ $json.year }}",
"options": {
"description": "Our most watched uploads",
"privacyStatus": "public",
"tags": "highlights,annual"
}
}
}
Add a video to a playlist at the top:
{
"type": "google_youtube",
"parameters": {
"resource": "playlistItem",
"operation": "add",
"playlistId": "PLxxxxxxxxxxxxxxxx",
"videoId": "{{ $json.uploadId }}",
"options": {
"position": 0,
"note": "Added automatically"
}
}
}
Publish a video that was uploaded as private:
{
"type": "google_youtube",
"parameters": {
"resource": "video",
"operation": "update",
"videoId": "{{ $json.uploadId }}",
"title": "{{ $json.title }}",
"categoryId": "22",
"updateFields": {
"description": "Updated description",
"tags": "tutorial,howto",
"privacyStatus": "public",
"license": "youtube"
}
}
}
Read a video’s statistics only:
{
"type": "google_youtube",
"parameters": {
"resource": "video",
"operation": "get",
"videoId": "{{ $json.videoId }}",
"part": ["snippet", "statistics"]
}
}
List the video categories available in a region:
{
"type": "google_youtube",
"parameters": {
"resource": "videoCategory",
"operation": "getAll",
"regionCode": "US",
"returnAll": true
}
}
Replace a channel banner from a binary field:
{
"type": "google_youtube",
"parameters": {
"resource": "channel",
"operation": "uploadBanner",
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"binaryPropertyName": "data"
}
}
Like a video:
{
"type": "google_youtube",
"parameters": {
"resource": "video",
"operation": "rate",
"videoId": "{{ $json.videoId }}",
"rating": "like"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage YouTube channels, playlists, videos (with resumable upload), and video categories via the YouTube Data API v3.
- Uploads are resumable and chunked, so a large file is sent in pieces rather than one request. Keep Max Concurrency low when a batch of items each carries a video — several simultaneous uploads is the quickest way to exhaust the API quota.
- Category ID is numeric. Run Video Category: Get Many for the region first if you do not already know the ID.
- Scheduling requires privacy. Publish At only takes effect on a video whose Privacy Status is
private. - Playlist Item ID is not the Video ID. Delete and Get on a playlist item want the item’s own ID, which comes back from Playlist Item: Add or Get Many.
- Listings default to your own account. Channel and Playlist Get Many return the authenticated account’s resources until you set a filter such as Channel ID or ID, at which point they return those instead.
- Fields trims the response. Asking for
snippetalone instead of*makes big listings much smaller and cheaper to page through.
Frequently asked questions
How are large videos uploaded?
Resumably and in chunks rather than one request. Keep Max Concurrency low when a batch of items each carries a video — several simultaneous uploads is the quickest way to exhaust the API quota.
What form does Category ID take?
Numeric. Look it up rather than passing the category's display name, which is not accepted.
What can it manage besides videos?
Channels, playlists, playlist items and video categories, so publishing and organisation are both covered.
Which credential does it need?
A YouTube OAuth2 credential for the channel you are publishing to.
Build with the YouTube node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need YouTube OAuth2 credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.