算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
youtube-marketing【设计与创意】Create, optimize, and manage YouTube content for channel growth, audience building, and monetization. Use when someone asks to "grow on YouTube", "optimize YouTube videos", "YouTube SEO", "YouTube Shorts strategy", "YouTube API integration", "automate YouTube uploads", "YouTube analytics", "YouTube thumbnail", or "YouTube content strategy". Covers lo…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
This skill helps AI agents create high-performing YouTube content and integrate with the YouTube Data API. It covers long-form video strategy, Shorts, SEO optimization, thumbnail design, upload automation, analytics, monetization paths, and growth strategies for YouTube's search-and-recommendation algorithm.
Search (YouTube is the #2 search engine): title/description/tags keyword matching, video transcript indexed, engagement rate (CTR + watch time), fresh content boost.
Recommendations (70%+ of views): click-through rate (thumbnail + title), average view duration, session time, viewer satisfaction (likes, shares, comments), upload consistency.
What kills reach: clickbait without delivery, long intros, inconsistent uploads, misleading thumbnails.
Long-Form (8-20 min): Hook (0-30s) -> Context (30s-1min) -> Main content -> CTA. Specs: 1080p minimum (4K preferred), MP4 H.264, clear audio at -14 to -12 LUFS. Retention techniques: pattern interrupts every 30-60s, open loops, chapters/timestamps, visual variety.
Shorts (under 60s, 9:16 vertical): Hook in first 1 second, single focused idea, loop-friendly endings, use as funnel to long-form. Post 3-5 Shorts/week.
Community Posts (500+ subscribers): Polls, images, video teasers. Post 2-3x/week between uploads.
Title: 60-70 chars, primary keyword near start, number + benefit works. Formula: [Primary Keyword] — [Benefit/Hook] ([Modifier]). Example: "Next.js Authentication — Complete Guide (2026)".
Description: First 150 chars appear in search (front-load keywords). Include timestamps/chapters (min 3). 150-300 words total. Links below the fold.
Tags: 5-15 per video, primary keyword first, mix exact match + broader terms.
Thumbnail: 1280x720px, high contrast, expressive face, 3-5 words max bold text, consistent branding, rule of thirds.
Captions: Upload accurate SRT (auto-captions have errors). YouTube indexes caption text for search. Multi-language subtitles expand global reach.
import { google } from 'googleapis';
const oauth2Client = new google.auth.OAuth2(
process.env.GOOGLE_CLIENT_ID, process.env.GOOGLE_CLIENT_SECRET, process.env.GOOGLE_REDIRECT_URI
);
oauth2Client.setCredentials(tokens);
const youtube = google.youtube({ version: 'v3', auth: oauth2Client });
// Upload video
const res = await youtube.videos.insert({
part: ['snippet', 'status'],
requestBody: {
snippet: {
title: 'Next.js Authentication — Complete Guide (2026)',
description: 'Learn how to implement auth in Next.js...\n\n0:00 Introduction\n1:23 Setup',
tags: ['nextjs', 'authentication', 'tutorial'],
categoryId: '28',
},
status: { privacyStatus: 'private', publishAt: '2026-03-01T15:00:00.000Z', selfDeclaredMadeForKids: false },
},
media: { body: fs.createReadStream('/path/to/video.mp4') },
});
await youtube.thumbnails.set({ videoId: res.data.id, media: { body: fs.createReadStream('/path/to/thumb.jpg') } });
// Upload Short (vertical video + #Shorts in title)
await youtube.videos.insert({
part: ['snippet', 'status'],
requestBody: {
snippet: { title: '3 Git Commands You Didn\'t Know #Shorts', tags: ['shorts', 'git'], categoryId: '28' },
status: { privacyStatus: 'public', selfDeclaredMadeForKids: false },
},
media: { body: fs.createReadStream('/path/to/short-vertical.mp4') },
});
// Create playlist and add video
const playlist = await youtube.playlists.insert({
part: ['snippet', 'status'],
requestBody: { snippet: { title: 'Next.js Complete Course' }, status: { privacyStatus: 'public' } },
});
await youtube.playlistItems.insert({
part: ['snippet'],
requestBody: { snippet: { playlistId: playlist.data.id, resourceId: { kind: 'youtube#video', videoId: 'abc123' } } },
});
const youtubeAnalytics = google.youtubeAnalytics({ version: 'v2', auth: oauth2Client });
// Channel stats
const stats = await youtubeAnalytics.reports.query({
ids: 'channel==MINE', startDate: '2026-01-01', endDate: '2026-02-18',
metrics: 'views,estimatedMinutesWatched,averageViewDuration,subscribersGained',
dimensions: 'day', sort: '-day',
});
// Top videos
const top = await youtubeAnalytics.reports.query({
ids: 'channel==MINE', startDate: '2026-01-01', endDate: '2026-02-18',
metrics: 'views,estimatedMinutesWatched,averageViewDuration,likes',
dimensions: 'video', sort: '-views', maxResults: 20,
});
YPP requirements: 1,000 subscribers + 4,000 watch hours (12 months) or 10M Shorts views (90 days).
Revenue streams: Ad revenue ($3-8 CPM tech niche), channel memberships, Super Chat/Thanks, YouTube Shopping, Shorts revenue sharing.
Beyond YPP: Sponsorships ($50-200/1K views for tech), affiliate links, own products/courses, consulting.
Upload 1-2 long-form/week + 3-5 Shorts/week. Content mix: 50% tutorials, 25% Shorts, 15% trend-jacking, 10% community. First 48 hours: share everywhere, reply to every comment, pin a question comment, post to relevant communities.
User prompt: "Upload my Next.js authentication tutorial video to YouTube with proper SEO, a custom thumbnail, and schedule it for Saturday at 3 PM UTC."
The agent will:
youtube.videos.insert with privacyStatus: 'private' and publishAt: '2026-03-07T15:00:00.000Z'youtube.thumbnails.setUser prompt: "Pull my YouTube analytics for the last 30 days and tell me which videos are driving the most subscribers and where my traffic is coming from."
The agent will:
youtubeAnalytics.reports with dimensions: 'video' and metrics: 'subscribersGained,views,averageViewDuration' sorted by subscribers gaineddimensions: 'insightTrafficSourceType' to identify search vs. browse vs. suggested splits