# Caption

> Writes caption, hashtag set, alt text, and first comment for a finished video, worded separately per platform. Use when you need post text, a caption, hashtags, or posting copy for Instagram or TikTok. Can create the draft directly in a connected scheduling tool (e.g. Buffer).

- Skill: `bendemartin97/caption` (Agent Skill)
- Install (CLI): `npx skillmds@latest add bendemartin97/caption`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bendemartin97/caption/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bendemartin97 (https://skillmd.com/u/bendemartin97)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bendemartin97/caption

---


# Caption, Hashtags, Alt Text

Instagram and TikTok get read differently. A text written once and copied twice fails on at least one of the two platforms.

## Approach

1. Read the script – the promise and CTA are already there and don't get reinvented.
2. Pull `BRAND.md` for the voice, `LEARNINGS.md` for what generated comments most recently.
3. Write separately per platform.
4. On request, create it as a draft in the connected scheduling tool, if one is connected.

## Instagram

- **The first line is the actual work.** It stands alone in the feed before anyone taps "more." It doesn't repeat the hook from the video, it gives a second way into the same thing.
- Then two to four short paragraphs. Generous line breaks – blocks of text don't get read.
- One CTA that asks for a **single** action. "Save" and "comment" at the same time means neither happens.
- Length: 60 to 150 words. Shorter feels careless, longer nobody reads.
- Emojis only if `BRAND.md` calls for them, and then as structure, not decoration.

## TikTok

- **150 characters max.** The text is trim, not the carrier – the video carries.
- Direct, spoken tone. One thought, no paragraphs.
- A question at the end works better here than a call to action.

## Hashtags

**Instagram allows at most five hashtags per post**, and they no longer improve
reach — Adam Mosseri has said so explicitly. They are
categorization: they help the platform and search understand what something is about.
Use them sparingly and precisely, accordingly.

- **Instagram: three to five**, topical, all substantively covered. No
  reach tags, no broad catch-all terms "for the algorithm."
- **TikTok: three to five**, topical. More dilutes the targeting.
- If `LEARNINGS.md` contains hashtag observations, prioritize those.

According to Instagram, what actually drives reach are three signals: **watch time,
sends per reach** (forwards via direct message), **and likes per
reach**. The caption works toward the second one — a text that gets someone
to send the video to a friend is worth more than any hashtag set.

## Alt Text

One to two sentences describing **what's visible** – not what it's about. Written for people using a screen reader, not for the algorithm. No hashtags, no keywords.

## First Comment

A sentence that opens the conversation: a concrete follow-up question, an addition that didn't fit in the video, or a pointer to a related video. Not "What do you think?"

## Output Format

Clearly separated by platform, each as a copy-ready block:

```
── INSTAGRAM ──────────────────
<Caption>

<Hashtags on one line>

Alt text: <…>
First comment: <…>

── TIKTOK ─────────────────────
<Caption incl. hashtags, under 150 characters>
```

State the word count for Instagram and the character count for TikTok, so the limits can be checked.

## Handoff to the Scheduling Tool

If a scheduling connector (such as Buffer or Metricool) is connected, offer to create the drafts there – one per channel, with caption, hashtags, and a suggested time. The video itself gets exported from the editing software and attached in the scheduling tool; that part isn't handled here.

**Nothing gets published.** Drafts always land in the queue for approval, no exceptions.

