[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DWW112MMH92D53RZGTKEBA":3,"skill-same:01M6DWW112MMH92D53RZGTKEBA":93},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":69,"commitSha":70,"skillDirectory":71,"forksCount":72,"repositoryHtmlUrl":73,"repositoryHomepageUrl":74,"ownerHtmlUrl":75,"ownerBlogUrl":76,"ownerDescription":77,"updatedAt":78,"install":79,"resources":92},"01M6DWW112MMH92D53RZGTKEBA","video-spec-sheet",null,"Platform video output specs: aspect ratio, length, codec, bitrate, safe zones, ffmpeg presets for TikTok, Reels, Shorts, YouTube. Use to check an export.","Muvon\u002Foctomind-tap","Muvon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25336907?v=4","01M6DWA4KTRX4J73CW5CECKAD0","01M6DWA4QSWFGYE6WDMAMFF1WE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fvideo-spec-sheet\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"video spec sheet","spec","sheet","Video","shorts","form","my","at","which","short-form","platform","export","safe","why","youtube","stack","dimensions","short","tiktok","get","2026-11-10 10:12:30",false,"---\nname: video-spec-sheet\ntitle: \"Video Spec Sheet: Platform Specs and Safe Zones\"\ndescription: \"Platform video output specs: aspect ratio, length, codec, bitrate, safe zones, ffmpeg presets for TikTok, Reels, Shorts, YouTube. Use to check an export.\"\nlicense: Apache-2.0\ncompatibility: \"Stack-agnostic.\"\ndomains: video\nrules:\n  - session(video)\n  - session(adcraft)\n  - content(reels)\n  - content(shorts)\n  - content(tiktok)\n  - content(instagram stories)\n  - content(aspect ratio)\n  - match(\\bsafe\\s+zone\\b)\n  - match(\\b(video\\s+)?codec\\b)\n  - match(\\b(video\\s+)?bitrate\\b)\n  - match(\\bplatform\\s+specs?\\b)\n  - match(\\b(9:16|16:9|1:1|4:5)\\b)\n  - semantic(what dimensions should I export this video at)\n  - semantic(safe export settings for TikTok or Reels)\n  - semantic(what are the platform specs for short-form video)\n  - semantic(which codec and bitrate should I use for vertical video)\n  - semantic(why does my video get cropped on Instagram)\n---\n\n## Overview\n\nEach social platform has its own combination of aspect ratio, max duration, codec, bitrate, frame rate, and caption \u002F UI safe zones. Getting any of these wrong on the export means the platform will either reject, re-encode (quality drop), or crop your creative. This skill encodes the 2026 specs as a single table the agent extracts from per brief. Caps and safe zones move several times a year: treat every number marked 2026 as a starting point and confirm it against the platform's live spec page before a paid launch.\n\n## Instructions\n\n### Core Rules\n\n- Always pick the platform spec before generating frames — generation must match the export aspect ratio (don't generate 16:9 then crop to 9:16 unless intentional).\n- Burn captions on top of the base render, not as a sidecar. Don't assume Reels are watched sound-off: Meta reports over 75% of Reels views are sound-on (official, Meta for Developers, 2024-11-07). Captions carry the message for the muted viewer and accessibility while the audio carries it for everyone else; in TikTok's Kantar survey 88% of TikTok users said sound is essential (self-reported; official, TikTok for Business blog, 2021-06). Render them from word timings through libass with the `video-captions` skill; stock Homebrew ffmpeg has no libass.\n- Respect the safe zone — keep all critical text and faces away from where the platform's UI sits (top, bottom, right side for TikTok).\n- Final encode in H.264 \u002F yuv420p, even if the source is HEVC \u002F 10-bit. Universal compatibility beats marginal quality.\n- Audio: AAC-LC stereo, 48 kHz, 128 kbps minimum (YouTube recommends 384 kbps stereo for uploads). Mono audio reads as low-quality on most feeds.\n- Loudness: master to about -14 LUFS integrated, true peak ≤ -1 dBTP. YouTube normalizes to roughly that level; TikTok and Meta don't publish a target, so -14 is a safe common master.\n- AI-generated clips usually come out at 720p (Runway Gen-4 Turbo renders 1280×720 \u002F 720×1280). Upscale picked shots before the final 1080p encode; never let the platform upscale.\n- Re-encoding with ffmpeg drops any C2PA Content Credentials the generator embedded, so platform auto-labelling of AI content will not fire. Disclose manually at upload (see Disclosure and Rights).\n\n### Platform Spec Table (2026 — verify live)\n\n| Platform | Aspect | Resolution | Length cap | Frame rate | Codec | Bitrate | Audio |\n|---|---|---|---|---|---|---|---|\n| TikTok organic | 9:16 | 1080×1920 | 10 min recorded in-app, 60 min uploaded | 30 \u002F 60 | H.264 | 8–10 Mbps | AAC 128k+ 48kHz |\n| TikTok in-feed ad (non-Spark) | 9:16 (16:9, 1:1 accepted) | 1080×1920 (min 540×960) | 10 min, 500 MB | 30 | H.264 | ≥516 kbps (aim 8 Mbps) | AAC 128k+ 48kHz |\n| Instagram Reels | 9:16 | 1080×1920 (Meta ads guide recommends 1440×2560) | Organic up to 20 min since late 2025, but Reels over 3 min aren't recommended to non-followers (reported, Instagram Help via Socialinsider, 2026-07); Reels ads up to 15 min, 4 GB | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| YouTube Shorts | 9:16 or 1:1 | 1080×1920 | 3 min; any square\u002Fvertical upload ≤3 min is classified as a Short automatically | 30 \u002F 60 | H.264 | 8–12 Mbps | AAC 384k 48kHz |\n| Facebook video | 9:16 or 4:5 | 1080×1920 \u002F 1080×1350 | All Facebook video uploads publish as Reels since 2025; feed ads 1s–241 min, 4 GB | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| IG \u002F FB Stories | 9:16 | 1080×1920 | 60s per card | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| Snapchat | 9:16 | 1080×1920 | 60s (verify Spotlight cap) | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| YouTube long-form | 16:9 | 1920×1080 \u002F 3840×2160 | 12 hr or 256 GB | 30 \u002F 60 | H.264 (or H.265 source) | 8 \u002F 12 Mbps (1080p30\u002F60), 35–45 Mbps (4K30) | AAC 384k 48kHz |\n| X | 16:9 or 1:1 | 1280×720+ | 2 min 20 s standard; longer on Premium | 30 \u002F 60 | H.264 | 5–25 Mbps | AAC 128k 48kHz |\n| LinkedIn feed | 1:1, 4:5, 16:9, 9:16 | 1080×1080 \u002F 1920×1080 \u002F 1080×1920 | 15 min desktop upload, 10 min mobile | 30 | H.264 | 8–10 Mbps | AAC 128k 48kHz |\n| Pinterest video Pin | 9:16 or 2:3 | 1080×1920 | 15 min | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |\n\n### Safe Zones (keep critical text, faces and logos out of these UI bands)\n\n| Platform | Top band | Bottom band | Side bands | Source |\n|---|---|---|---|---|\n| Meta Reels ads (IG + FB) | 14% (~270 px) | 35% (~672 px) | 6% each (~65 px) | Meta Ads Guide |\n| Meta Stories | 14% (~270 px) | 20% (~380 px) | 6% each | Meta Ads Guide |\n| TikTok | ~130–160 px | ~350–440 px, grows with caption length | right ~140–200 px (action rail) | download TikTok's official safe-zone template |\n| YT Shorts | ~110 px | ~280 px | right ~180 px | approximation; preview on device |\n| YT long-form 16:9 | ~60 px | ~100 px (progress bar) | 0 px | approximation |\n\n(Pixels at 1080×1920 or 1920×1080; scale with output resolution. Ads that carry a legal disclaimer on Meta need the bottom 40% clear.) Instagram's profile grid crops covers to 3:4, so keep the cover's subject and title inside the centre 1080×1440.\n\n### Captions \u002F On-Screen Text Rules\n\n- Keep the caption block out of every UI band; never bottom-aligned (bottom is platform UI).\n- 9:16 talking head: block centered at about 58% of height (Y≈1110 of 1920), just below the chin and above the bottom band. Never over the face.\n- 9:16 product or screen demo with the subject mid-frame: upper third (about 30% of height), still below the top band.\n- Font: bold sans (Poppins Black, Montserrat Black, Anton, Inter Black). Caption text roughly 80–110 px at 1080×1920, hook text slightly smaller in a box.\n- Stroke + drop shadow: about 8% of font size stroke, soft shadow — preserves readability over any background.\n- One sentence per card max. Two-sentence cards get skipped.\n- Word-by-word reveal in time with VO is the common preset look; test it against flat full-sentence captions on the account's own data (no measured source). Keep on-screen text at or under 5–10 words per second (TikTok creative guidance).\n- Instagram captions hold at most 2,200 characters (official, Meta developer docs, Instagram Graph API media reference). Instagram posts allow at most 5 hashtags (reported, Business Today, 2025-12-19; newer than the API reference, which may lag). Put the hook and topic words in the first line, before the \"more\" truncation.\n\n### Output Presets (ffmpeg) — copy-paste ready\n\n```bash\n# 9:16 — TikTok \u002F Reels \u002F Shorts \u002F Stories\n-vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 \\\n  -movflags +faststart\n\n# 1:1 — IG \u002F FB feed\n-vf \"scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart\n\n# 16:9 — YouTube long-form \u002F LinkedIn\n-vf \"scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.2 -crf 19 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 192k -ar 48000 -ac 2 -movflags +faststart\n```\n\n### Workflow\n\n1. Identify primary platform for the brief (TikTok \u002F Reels \u002F Shorts \u002F etc.).\n2. Pick aspect, length cap, fps from the table.\n3. Mark safe zones when storyboarding — keep face, hook text, CTA inside the center region.\n4. At export, use the matching ffmpeg preset above.\n5. If publishing to multiple platforms, render the master in the largest aspect (e.g. 9:16 1080×1920 30fps) and downconvert to others — never upscale.\n\n### Decision Guide\n\n| Brief says | Output |\n|---|---|\n| \"TikTok ad\" | 9:16, 1080×1920, 30fps, H.264 8 Mbps; length is a creative choice (allowed up to 10 min) |\n| \"Instagram Reel\" | 9:16, 1080×1920, 30fps, ≤3 min when the goal is non-follower discovery (up to 20 min is allowed but mostly reaches followers), H.264 6 Mbps |\n| \"YouTube Short\" | 9:16, 1080×1920, 60fps if motion-heavy else 30, ≤3 min; keep ≤60s if it uses any claimable music |\n| \"Story (any platform)\" | 9:16, 1080×1920, 30fps, ≤60s per card |\n| \"IG feed\" | 4:5, 1080×1350, 30fps |\n| \"FB feed\" | 4:5, 1080×1350 (1:1 also fine), 30fps |\n| \"YouTube long-form\" \u002F \"explainer\" | 16:9, 1920×1080, 30fps (60fps if screen-cap) |\n| \"Hero video for landing page\" | 16:9, 1920×1080, 30fps, muted, poster frame, MP4 (H.264) + WebM\u002FAV1, short loop under ~5 MB |\n| \"X post\" | 16:9 1280×720 if widescreen, else 1:1 1080×1080 |\n| \"LinkedIn post\" | 1:1 1080×1080 or 4:5 1080×1350 |\n| \"Pinterest\" | 9:16 1080×1920 |\n\n### Disclosure and Rights (2026 — verify live)\n\n| Item | Rule |\n|---|---|\n| YouTube | Turn on \"altered or synthetic content\" in Studio when realistic AI makes a real person say\u002Fdo something, alters a real event or place, or shows a realistic scene that never happened. Not needed for clearly unrealistic\u002Fanimated content or AI used only for scripts, captions, production help. |\n| TikTok organic | Use the AI-generated content label (API field `is_aigc`) for realistic AI content; unlabelled realistic AI content can be removed. Paid partnerships and own-brand promotion need the commercial content toggles. |\n| TikTok ads | Ads Manager's AI-generated content disclaimer is mandatory for AI-generated or AI-significantly-altered images, video or audio; undisclosed ads are rejected or restricted. |\n| Meta | Meta auto-applies \"AI info\" when it detects C2PA\u002FIPTC signals or its own gen-AI tools; political and social-issue ads must self-disclose photorealistic AI. |\n| EU | AI Act Art. 50(4): deepfake content shown to EU audiences must be disclosed as AI-generated or manipulated from 2 Aug 2026. |\n| New York | GBL § 396-b (in force 9 Jun 2026): ads that include a synthetic performer (an AI-generated person not recognizable as a real individual, e.g. an AI avatar presenter) must conspicuously disclose it when the advertiser knows. $1,000 first violation, $5,000 each after. Audio-only ads and AI used solely to translate a human performer are not covered. |\n| Music | YouTube Shorts over 1 min with any active Content ID claim are blocked worldwide. Business TikTok accounts and all ads use the Commercial Music Library or owned\u002Flicensed music; trending sounds are not cleared for brand use. AI music (e.g. ElevenLabs) is commercially usable only on a paid plan per its terms. |\n\n## Examples\n\n### Example 1: TikTok ad export\n\nSource: 4K 16:9 24fps generated at Veo. Target: TikTok ad.\n\n```bash\nffmpeg -i source.mp4 \\\n  -vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 \\\n  -movflags +faststart \\\n  tiktok-ad-9x16.mp4\n```\n\n### Example 2: Cross-platform render plan\n\nBrief: One ad, ship to TikTok + IG Reels + IG feed + YT Shorts + YT long-form trailer.\n\n| Cut | Aspect | Resolution | Length |\n|---|---|---|---|\n| Master | 9:16 | 1080×1920 | 45s |\n| TikTok | 9:16 | 1080×1920 | 45s (master) |\n| IG Reels | 9:16 | 1080×1920 | 45s (master) |\n| YT Shorts | 9:16 | 1080×1920 | 45s (master, captions repositioned higher) |\n| IG feed (1:1 cut-down) | 1:1 | 1080×1080 | 30s (re-edited, key beats only) |\n| YT long-form trailer | 16:9 | 1920×1080 | 60s (re-edited, b-roll padded) |\n\n## Checklist\n\n- [ ] Aspect and resolution match the platform row; no platform-side upscaling.\n- [ ] Length is under the 2026 cap and the cap was checked live for paid launches.\n- [ ] Captions, faces and CTA sit outside every UI band of every placement the cut will run in.\n- [ ] H.264 yuv420p, AAC 48 kHz stereo, `+faststart`, about -14 LUFS \u002F -1 dBTP.\n- [ ] AI-disclosure and music-rights rows resolved for each platform.\n\n## References\n\n- [TikTok in-feed ad specs](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fvideo-ads-specifications)\n- [TikTok ad disclaimers (AI-generated content)](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fabout-ad-disclaimers-in-tiktok-ads-manager)\n- [Instagram Reels ad specs and safe zones](https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fads-guide\u002Fupdate\u002Fvideo\u002Finstagram-reels)\n- [YouTube Shorts up to 3 minutes](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F15424877)\n- [YouTube recommended upload encoding settings](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F1722171)\n- [YouTube altered or synthetic content disclosure](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F14328491)\n- [Meta Ads Guide](https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fads-guide)\n- [New York synthetic performer ad disclosure, GBL § 396-b (Cooley summary)](https:\u002F\u002Fwww.cooley.com\u002Fnews\u002Finsight\u002F2026\u002F2026-01-29-new-york-enacts-synthetic-performer-disclosure-law-for-advertisements-including-those-using-generative-ai)\n- [TikTok creative best practices](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fcreative-best-practices)\n- [Instagram Reels length (Instagram Help via Socialinsider)](https:\u002F\u002Fwww.socialinsider.io\u002Fblog\u002Finstagram-reels-length\u002F), 2026-07, reported.\n- [Meta Reels ads, sound-on share](https:\u002F\u002Fdevelopers.facebook.com\u002Fblog\u002Fpost\u002F2024\u002F11\u002F07\u002Funlock-the-power-of-reel-ads), 2024-11-07, official.\n- [Instagram five-hashtag cap (Business Today)](https:\u002F\u002Fwww.businesstoday.in\u002Ftechnology\u002Fnews\u002Fstory\u002Fno-more-hashtag-stuffing-instagram-limits-hashtag-usage-to-just-5-per-reel-and-post-507444-2025-12-19), 2025-12-19, reported.\n- [Instagram Graph API: IG User media](https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Finstagram-platform\u002Finstagram-graph-api\u002Freference\u002Fig-user\u002Fmedia), official — caption maximum 2,200 characters.\n- [TikTok for Business: Kantar report on sound](https:\u002F\u002Fads.tiktok.com\u002Fbusiness\u002Fen-US\u002Fblog\u002Fkantar-report-how-brands-are-making-noise-and-driving-impact-with-sound-on-tiktok), 2021-06, official — 88% of TikTok users say sound is essential (self-reported).\n","## Overview\n\nEach social platform has its own combination of aspect ratio, max duration, codec, bitrate, frame rate, and caption \u002F UI safe zones. Getting any of these wrong on the export means the platform will either reject, re-encode (quality drop), or crop your creative. This skill encodes the 2026 specs as a single table the agent extracts from per brief. Caps and safe zones move several times a year: treat every number marked 2026 as a starting point and confirm it against the platform's live spec page before a paid launch.\n\n## Instructions\n\n### Core Rules\n\n- Always pick the platform spec before generating frames — generation must match the export aspect ratio (don't generate 16:9 then crop to 9:16 unless intentional).\n- Burn captions on top of the base render, not as a sidecar. Don't assume Reels are watched sound-off: Meta reports over 75% of Reels views are sound-on (official, Meta for Developers, 2024-11-07). Captions carry the message for the muted viewer and accessibility while the audio carries it for everyone else; in TikTok's Kantar survey 88% of TikTok users said sound is essential (self-reported; official, TikTok for Business blog, 2021-06). Render them from word timings through libass with the `video-captions` skill; stock Homebrew ffmpeg has no libass.\n- Respect the safe zone — keep all critical text and faces away from where the platform's UI sits (top, bottom, right side for TikTok).\n- Final encode in H.264 \u002F yuv420p, even if the source is HEVC \u002F 10-bit. Universal compatibility beats marginal quality.\n- Audio: AAC-LC stereo, 48 kHz, 128 kbps minimum (YouTube recommends 384 kbps stereo for uploads). Mono audio reads as low-quality on most feeds.\n- Loudness: master to about -14 LUFS integrated, true peak ≤ -1 dBTP. YouTube normalizes to roughly that level; TikTok and Meta don't publish a target, so -14 is a safe common master.\n- AI-generated clips usually come out at 720p (Runway Gen-4 Turbo renders 1280×720 \u002F 720×1280). Upscale picked shots before the final 1080p encode; never let the platform upscale.\n- Re-encoding with ffmpeg drops any C2PA Content Credentials the generator embedded, so platform auto-labelling of AI content will not fire. Disclose manually at upload (see Disclosure and Rights).\n\n### Platform Spec Table (2026 — verify live)\n\n| Platform | Aspect | Resolution | Length cap | Frame rate | Codec | Bitrate | Audio |\n|---|---|---|---|---|---|---|---|\n| TikTok organic | 9:16 | 1080×1920 | 10 min recorded in-app, 60 min uploaded | 30 \u002F 60 | H.264 | 8–10 Mbps | AAC 128k+ 48kHz |\n| TikTok in-feed ad (non-Spark) | 9:16 (16:9, 1:1 accepted) | 1080×1920 (min 540×960) | 10 min, 500 MB | 30 | H.264 | ≥516 kbps (aim 8 Mbps) | AAC 128k+ 48kHz |\n| Instagram Reels | 9:16 | 1080×1920 (Meta ads guide recommends 1440×2560) | Organic up to 20 min since late 2025, but Reels over 3 min aren't recommended to non-followers (reported, Instagram Help via Socialinsider, 2026-07); Reels ads up to 15 min, 4 GB | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| YouTube Shorts | 9:16 or 1:1 | 1080×1920 | 3 min; any square\u002Fvertical upload ≤3 min is classified as a Short automatically | 30 \u002F 60 | H.264 | 8–12 Mbps | AAC 384k 48kHz |\n| Facebook video | 9:16 or 4:5 | 1080×1920 \u002F 1080×1350 | All Facebook video uploads publish as Reels since 2025; feed ads 1s–241 min, 4 GB | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| IG \u002F FB Stories | 9:16 | 1080×1920 | 60s per card | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| Snapchat | 9:16 | 1080×1920 | 60s (verify Spotlight cap) | 30 | H.264 | 5–8 Mbps | AAC 128k+ 48kHz |\n| YouTube long-form | 16:9 | 1920×1080 \u002F 3840×2160 | 12 hr or 256 GB | 30 \u002F 60 | H.264 (or H.265 source) | 8 \u002F 12 Mbps (1080p30\u002F60), 35–45 Mbps (4K30) | AAC 384k 48kHz |\n| X | 16:9 or 1:1 | 1280×720+ | 2 min 20 s standard; longer on Premium | 30 \u002F 60 | H.264 | 5–25 Mbps | AAC 128k 48kHz |\n| LinkedIn feed | 1:1, 4:5, 16:9, 9:16 | 1080×1080 \u002F 1920×1080 \u002F 1080×1920 | 15 min desktop upload, 10 min mobile | 30 | H.264 | 8–10 Mbps | AAC 128k 48kHz |\n| Pinterest video Pin | 9:16 or 2:3 | 1080×1920 | 15 min | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |\n\n### Safe Zones (keep critical text, faces and logos out of these UI bands)\n\n| Platform | Top band | Bottom band | Side bands | Source |\n|---|---|---|---|---|\n| Meta Reels ads (IG + FB) | 14% (~270 px) | 35% (~672 px) | 6% each (~65 px) | Meta Ads Guide |\n| Meta Stories | 14% (~270 px) | 20% (~380 px) | 6% each | Meta Ads Guide |\n| TikTok | ~130–160 px | ~350–440 px, grows with caption length | right ~140–200 px (action rail) | download TikTok's official safe-zone template |\n| YT Shorts | ~110 px | ~280 px | right ~180 px | approximation; preview on device |\n| YT long-form 16:9 | ~60 px | ~100 px (progress bar) | 0 px | approximation |\n\n(Pixels at 1080×1920 or 1920×1080; scale with output resolution. Ads that carry a legal disclaimer on Meta need the bottom 40% clear.) Instagram's profile grid crops covers to 3:4, so keep the cover's subject and title inside the centre 1080×1440.\n\n### Captions \u002F On-Screen Text Rules\n\n- Keep the caption block out of every UI band; never bottom-aligned (bottom is platform UI).\n- 9:16 talking head: block centered at about 58% of height (Y≈1110 of 1920), just below the chin and above the bottom band. Never over the face.\n- 9:16 product or screen demo with the subject mid-frame: upper third (about 30% of height), still below the top band.\n- Font: bold sans (Poppins Black, Montserrat Black, Anton, Inter Black). Caption text roughly 80–110 px at 1080×1920, hook text slightly smaller in a box.\n- Stroke + drop shadow: about 8% of font size stroke, soft shadow — preserves readability over any background.\n- One sentence per card max. Two-sentence cards get skipped.\n- Word-by-word reveal in time with VO is the common preset look; test it against flat full-sentence captions on the account's own data (no measured source). Keep on-screen text at or under 5–10 words per second (TikTok creative guidance).\n- Instagram captions hold at most 2,200 characters (official, Meta developer docs, Instagram Graph API media reference). Instagram posts allow at most 5 hashtags (reported, Business Today, 2025-12-19; newer than the API reference, which may lag). Put the hook and topic words in the first line, before the \"more\" truncation.\n\n### Output Presets (ffmpeg) — copy-paste ready\n\n```bash\n# 9:16 — TikTok \u002F Reels \u002F Shorts \u002F Stories\n-vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 \\\n  -movflags +faststart\n\n# 1:1 — IG \u002F FB feed\n-vf \"scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart\n\n# 16:9 — YouTube long-form \u002F LinkedIn\n-vf \"scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.2 -crf 19 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 192k -ar 48000 -ac 2 -movflags +faststart\n```\n\n### Workflow\n\n1. Identify primary platform for the brief (TikTok \u002F Reels \u002F Shorts \u002F etc.).\n2. Pick aspect, length cap, fps from the table.\n3. Mark safe zones when storyboarding — keep face, hook text, CTA inside the center region.\n4. At export, use the matching ffmpeg preset above.\n5. If publishing to multiple platforms, render the master in the largest aspect (e.g. 9:16 1080×1920 30fps) and downconvert to others — never upscale.\n\n### Decision Guide\n\n| Brief says | Output |\n|---|---|\n| \"TikTok ad\" | 9:16, 1080×1920, 30fps, H.264 8 Mbps; length is a creative choice (allowed up to 10 min) |\n| \"Instagram Reel\" | 9:16, 1080×1920, 30fps, ≤3 min when the goal is non-follower discovery (up to 20 min is allowed but mostly reaches followers), H.264 6 Mbps |\n| \"YouTube Short\" | 9:16, 1080×1920, 60fps if motion-heavy else 30, ≤3 min; keep ≤60s if it uses any claimable music |\n| \"Story (any platform)\" | 9:16, 1080×1920, 30fps, ≤60s per card |\n| \"IG feed\" | 4:5, 1080×1350, 30fps |\n| \"FB feed\" | 4:5, 1080×1350 (1:1 also fine), 30fps |\n| \"YouTube long-form\" \u002F \"explainer\" | 16:9, 1920×1080, 30fps (60fps if screen-cap) |\n| \"Hero video for landing page\" | 16:9, 1920×1080, 30fps, muted, poster frame, MP4 (H.264) + WebM\u002FAV1, short loop under ~5 MB |\n| \"X post\" | 16:9 1280×720 if widescreen, else 1:1 1080×1080 |\n| \"LinkedIn post\" | 1:1 1080×1080 or 4:5 1080×1350 |\n| \"Pinterest\" | 9:16 1080×1920 |\n\n### Disclosure and Rights (2026 — verify live)\n\n| Item | Rule |\n|---|---|\n| YouTube | Turn on \"altered or synthetic content\" in Studio when realistic AI makes a real person say\u002Fdo something, alters a real event or place, or shows a realistic scene that never happened. Not needed for clearly unrealistic\u002Fanimated content or AI used only for scripts, captions, production help. |\n| TikTok organic | Use the AI-generated content label (API field `is_aigc`) for realistic AI content; unlabelled realistic AI content can be removed. Paid partnerships and own-brand promotion need the commercial content toggles. |\n| TikTok ads | Ads Manager's AI-generated content disclaimer is mandatory for AI-generated or AI-significantly-altered images, video or audio; undisclosed ads are rejected or restricted. |\n| Meta | Meta auto-applies \"AI info\" when it detects C2PA\u002FIPTC signals or its own gen-AI tools; political and social-issue ads must self-disclose photorealistic AI. |\n| EU | AI Act Art. 50(4): deepfake content shown to EU audiences must be disclosed as AI-generated or manipulated from 2 Aug 2026. |\n| New York | GBL § 396-b (in force 9 Jun 2026): ads that include a synthetic performer (an AI-generated person not recognizable as a real individual, e.g. an AI avatar presenter) must conspicuously disclose it when the advertiser knows. $1,000 first violation, $5,000 each after. Audio-only ads and AI used solely to translate a human performer are not covered. |\n| Music | YouTube Shorts over 1 min with any active Content ID claim are blocked worldwide. Business TikTok accounts and all ads use the Commercial Music Library or owned\u002Flicensed music; trending sounds are not cleared for brand use. AI music (e.g. ElevenLabs) is commercially usable only on a paid plan per its terms. |\n\n## Examples\n\n### Example 1: TikTok ad export\n\nSource: 4K 16:9 24fps generated at Veo. Target: TikTok ad.\n\n```bash\nffmpeg -i source.mp4 \\\n  -vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)\u002F2:(oh-ih)\u002F2:color=black,fps=30\" \\\n  -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \\\n  -c:a aac -b:a 128k -ar 48000 -ac 2 \\\n  -movflags +faststart \\\n  tiktok-ad-9x16.mp4\n```\n\n### Example 2: Cross-platform render plan\n\nBrief: One ad, ship to TikTok + IG Reels + IG feed + YT Shorts + YT long-form trailer.\n\n| Cut | Aspect | Resolution | Length |\n|---|---|---|---|\n| Master | 9:16 | 1080×1920 | 45s |\n| TikTok | 9:16 | 1080×1920 | 45s (master) |\n| IG Reels | 9:16 | 1080×1920 | 45s (master) |\n| YT Shorts | 9:16 | 1080×1920 | 45s (master, captions repositioned higher) |\n| IG feed (1:1 cut-down) | 1:1 | 1080×1080 | 30s (re-edited, key beats only) |\n| YT long-form trailer | 16:9 | 1920×1080 | 60s (re-edited, b-roll padded) |\n\n## Checklist\n\n- [ ] Aspect and resolution match the platform row; no platform-side upscaling.\n- [ ] Length is under the 2026 cap and the cap was checked live for paid launches.\n- [ ] Captions, faces and CTA sit outside every UI band of every placement the cut will run in.\n- [ ] H.264 yuv420p, AAC 48 kHz stereo, `+faststart`, about -14 LUFS \u002F -1 dBTP.\n- [ ] AI-disclosure and music-rights rows resolved for each platform.\n\n## References\n\n- [TikTok in-feed ad specs](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fvideo-ads-specifications)\n- [TikTok ad disclaimers (AI-generated content)](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fabout-ad-disclaimers-in-tiktok-ads-manager)\n- [Instagram Reels ad specs and safe zones](https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fads-guide\u002Fupdate\u002Fvideo\u002Finstagram-reels)\n- [YouTube Shorts up to 3 minutes](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F15424877)\n- [YouTube recommended upload encoding settings](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F1722171)\n- [YouTube altered or synthetic content disclosure](https:\u002F\u002Fsupport.google.com\u002Fyoutube\u002Fanswer\u002F14328491)\n- [Meta Ads Guide](https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fads-guide)\n- [New York synthetic performer ad disclosure, GBL § 396-b (Cooley summary)](https:\u002F\u002Fwww.cooley.com\u002Fnews\u002Finsight\u002F2026\u002F2026-01-29-new-york-enacts-synthetic-performer-disclosure-law-for-advertisements-including-those-using-generative-ai)\n- [TikTok creative best practices](https:\u002F\u002Fads.tiktok.com\u002Fhelp\u002Farticle\u002Fcreative-best-practices)\n- [Instagram Reels length (Instagram Help via Socialinsider)](https:\u002F\u002Fwww.socialinsider.io\u002Fblog\u002Finstagram-reels-length\u002F), 2026-07, reported.\n- [Meta Reels ads, sound-on share](https:\u002F\u002Fdevelopers.facebook.com\u002Fblog\u002Fpost\u002F2024\u002F11\u002F07\u002Funlock-the-power-of-reel-ads), 2024-11-07, official.\n- [Instagram five-hashtag cap (Business Today)](https:\u002F\u002Fwww.businesstoday.in\u002Ftechnology\u002Fnews\u002Fstory\u002Fno-more-hashtag-stuffing-instagram-limits-hashtag-usage-to-just-5-per-reel-and-post-507444-2025-12-19), 2025-12-19, reported.\n- [Instagram Graph API: IG User media](https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Finstagram-platform\u002Finstagram-graph-api\u002Freference\u002Fig-user\u002Fmedia), official — caption maximum 2,200 characters.\n- [TikTok for Business: Kantar report on sound](https:\u002F\u002Fads.tiktok.com\u002Fbusiness\u002Fen-US\u002Fblog\u002Fkantar-report-how-brands-are-making-noise-and-driving-impact-with-sound-on-tiktok), 2021-06, official — 88% of TikTok users say sound is essential (self-reported).\n",{"name":5,"rules":48,"title":66,"domains":67,"license":14,"description":7,"compatibility":68},[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],"session(video)","session(adcraft)","content(reels)","content(shorts)","content(tiktok)","content(instagram stories)","content(aspect ratio)","match(\\bsafe\\s+zone\\b)","match(\\b(video\\s+)?codec\\b)","match(\\b(video\\s+)?bitrate\\b)","match(\\bplatform\\s+specs?\\b)","match(\\b(9:16|16:9|1:1|4:5)\\b)","semantic(what dimensions should I export this video at)","semantic(safe export settings for TikTok or Reels)","semantic(what are the platform specs for short-form video)","semantic(which codec and bitrate should I use for vertical video)","semantic(why does my video get cropped on Instagram)","Video Spec Sheet: Platform Specs and Safe Zones","video","Stack-agnostic.","master","e9e4a19559669b1627b1ac5ed3f77b8e36cfad95","skills\u002Fvideo-spec-sheet",0,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap","https:\u002F\u002Foctomind.run\u002Ftap\u002F","https:\u002F\u002Fgithub.com\u002FMuvon","https:\u002F\u002Fmuvon.io","We bring ideas to life","2026-11-13 13:19:02",{"source":8,"skillName":5,"commands":80,"prompt":90,"zipAvailable":91},[81,84,87],{"tool":82,"command":83},"npx","npx skills add Muvon\u002Foctomind-tap --skill video-spec-sheet",{"tool":85,"command":86},"bunx","bunx skills add Muvon\u002Foctomind-tap --skill video-spec-sheet",{"tool":88,"command":89},"pnpm","pnpm dlx skills add Muvon\u002Foctomind-tap --skill video-spec-sheet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fvideo-spec-sheet\u002FSKILL.md",true,[],[94,132,158,177,201,228],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":111,"publishedAt":43},"01M70SFC5CTHRKA9B97N1ARVZ2","seo-content-refresh","Finds decaying pages, picks update, merge, redirect or remove, and briefs each refresh. Use to prioritize existing content and judge whether it helped.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fseo-content-refresh\u002FSKILL.md",[100,103,108],{"categoryNo":101,"categoryName":102,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",{"categoryNo":109,"categoryName":110,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000036","内容创作者",[112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131],"seo content refresh","seo","seo content","content refresh","refresh","content","posts","remove","web search","performance","search","traffic","access","drop","websearch","revamp","merge","diagnosis","update","decay",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":140,"publishedAt":43},"01M70SBWQCHGH7HGS51Y0GTKKW","marketing-review-program","Plans how to ask real customers for honest public reviews: site choice, invitation copy, incentive and disclosure rules. Use to start a review program.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketing-review-program\u002FSKILL.md",[138,139],{"categoryNo":101,"categoryName":102,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},[141,142,143,144,145,42,120,122,146,147,148,149,150,151,152,153,154,155,156,157],"program","review","marketing review program","marketing","reviews","campaign","choice","how to","only","generated","ask","plan","product","generate","customer","how","request",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":43},"01M70SBB65Z2FC71Q7DEAXGJBG","geo-source-actions","Turns AI citation findings into ranked per-source actions for Reddit threads, listicles, review sites and videos. Records only. Use after a GEO audit.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fgeo-source-actions\u002FSKILL.md",[],[165,166,167,168,169,42,120,122,170,171,149,126,142,172,173,37,153,174,175,176],"actions","geo source actions","source","geo","sources","copilot","domains","llms","threads","audit","action","data",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":186,"publishedAt":43},"01M70S99D3Y6GF097GTXWBXHPW","commerce-ai-readiness","Audits product feeds, markup and live pages for AI shopping assistants, then lists exact fixes. Use to make a store catalog readable to AI shoppers.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fcommerce-ai-readiness\u002FSKILL.md",[183],{"categoryNo":184,"categoryName":185,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000031","产品经理",[187,188,189,190,191,192,193,194,195,196,122,197,170,149,124,198,199,153,174,200],"ai readiness","commerce ai readiness","commerce","readiness","feeds","ready","show","shopping","discover","checkout","up","ecommerce","documentation","recommend",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":210,"publishedAt":43},"01M6DWSX45J42KTK6XASKJRGPA","tap-model-training","Train, evaluate and publish the octomind-embed model behind capability auto-activation. Use when capability triggers or skill semantic() phrases change.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-model-training\u002FSKILL.md",[207],{"categoryNo":208,"categoryName":209,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[211,212,213,214,215,197,216,217,218,219,220,221,222,223,224,156,225,226,227,130],"model","training","tap","tap model training","scope","eval","uv","auto","dataset","activate","api","capabilities","publish","change","embedding","re","when",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":235,"publishedAt":43},"01M6DWSQB7NSW53Z86XM81R1W1","tap-deps-authoring","Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",[234],{"categoryNo":208,"categoryName":209,"taxonomyType":20,"taxonomyTypeDesc":21},[236,213,237,238,239,240,241,242,243,244,245,33,246,247,248,249,227,250,251,252],"deps","tap deps authoring","authoring","DEP","MCP","run","scripts","pattern","install","registry","repo","editing","tool","types","write","org","for"]