$npx -y skills add vyralcontent/content-skills --skill viral-captions-and-ctasWrite captions, on-screen text, hashtags, and CTAs for short-form video that earn saves and sends without tripping engagement-bait penalties. Use when someone asks for a viral caption, an instagram caption or tiktok caption or video caption, wants to fix a weak cta or call to act
| 1 | [](https://vyralcontent.com) |
| 2 | |
| 3 | # Viral captions and CTAs |
| 4 | |
| 5 | Help the user write the text around the video: captions, on-screen text, |
| 6 | hashtags, CTAs, and the pinned comment. This is the copy layer that decides |
| 7 | whether a good video gets distributed, saved, and sent. It does not predict |
| 8 | virality. It rules out patterns that suppress reach and pushes toward ones |
| 9 | that tend to lift it. |
| 10 | |
| 11 | For hooks and opening lines, see `viral-hooks`. For platform algorithm depth, |
| 12 | see `viral-tiktok-content`, `viral-youtube-shorts`, `viral-instagram-reels`. |
| 13 | For ideation, see `viral-short-form-ideas`. For full scripting, see the |
| 14 | `viral-short-form` umbrella. |
| 15 | |
| 16 | ## Operating principles (read these first, apply throughout) |
| 17 | |
| 18 | 1. **The caption is the SEO now.** Instagram indexes captions for in-app |
| 19 | search and for Google. TikTok reads captions as a main categorisation |
| 20 | input. YouTube Shorts treats the title and first 125 chars of description |
| 21 | as direct ranking signals. Hashtags aren't the discovery lever anymore. |
| 22 | Words are. |
| 23 | 2. **Most viewers watch on mute.** Roughly 85% of social video is consumed |
| 24 | silent. If the on-screen text doesn't carry the story, the video doesn't |
| 25 | exist for most of the feed. Burn captions in. Don't trust auto-captions. |
| 26 | 3. **Sends and saves beat likes and follows.** The CTAs worth writing are |
| 27 | tied to the algorithmically heavy actions (send, save, watch-to-end), not |
| 28 | the lightweight ones ("like", "follow", "comment below") that pattern-match |
| 29 | as engagement bait. |
| 30 | 4. **Engagement bait is a distribution tax.** "Comment YES for the link", "tag |
| 31 | a friend", "like for part 2", "follow for more" all read as bait under |
| 32 | Meta's and TikTok's policies. Each buys a small action and pays a reach |
| 33 | penalty. |
| 34 | 5. **One ask per video.** Stacking like + save + share + follow + DM dilutes |
| 35 | all five. Pick the action that matches the content type and earn it. |
| 36 | 6. **Native, not cross-posted.** A caption written for TikTok loses to one |
| 37 | rewritten for Reels and another rewritten for Shorts. Different cutoffs, |
| 38 | different keyword vocabulary, different hashtag conventions. |
| 39 | 7. **Pattern-matching, not prediction.** Captions and CTAs tend to perform a |
| 40 | certain way. Nothing here guarantees a result. Honesty is the brand. |
| 41 | |
| 42 | ## Workflow |
| 43 | |
| 44 | Adapt to the ask. If the user just wants a caption fast, jump to step 3. |
| 45 | |
| 46 | 1. **Clarify the brief** (only what's missing): platform, video topic and |
| 47 | format, audience, goal (search reach vs sends vs saves vs long-form click), |
| 48 | any brand voice constraint. |
| 49 | 2. **Pick the primary action.** One per video, matched to format. Tutorial or |
| 50 | list -> save. Story or recommendation -> send. Opinion -> comment with |
| 51 | stance. Cliffhanger -> watch the long-form. |
| 52 | 3. **Write the caption** to the platform's cutoff and SEO shape -> |
| 53 | `references/caption-craft.md`. First line earns the tap. Primary keyword |
| 54 | once, early. Body adds context or payoff; never echoes the on-screen hook. |
| 55 | 4. **Spec the on-screen text.** Headline block + body captions, burned in, in |
| 56 | the platform's safe zone -> `references/on-screen-text.md`. |
| 57 | 5. **Decide on hashtags.** 3 to 5 niche tags on IG and TikTok; 3 to 5 in the |
| 58 | YouTube description plus #Shorts -> `references/hashtag-reality.md`. No |
| 59 | 30-tag walls, no #fyp filler. |
| 60 | 6. **Write the CTA.** Place it 5 seconds before the actual drop-off if known, |
| 61 | otherwise around the 70% mark. Phrasing from `references/ctas-that-work.md`. |
| 62 | Run it through `assets/bait-check.md`. |
| 63 | 7. **Set up the comment section.** Pinned comment or first-comment seed. |
| 64 | Pre-empt the predictable objection, drop the link that didn't fit, or post |
| 65 | the second hook -> `references/pinned-comments.md`. |
| 66 | |
| 67 | ## Modes (route by what the user asked) |
| 68 | |
| 69 | - **"Write a caption for |