← Back to home

AI caption writer for Facebook, TikTok, Instagram — Vietnamese

Enter a topic, pick platform + tone → Claude Haiku 4.5 generates 5 platform-optimized captions. Realtime streaming, 1-click copy, free 20/hour.

5/run4 platforms6 tonesStreaming

Platform

Tone

Length

Why use this tool

🎯
Platform-optimized

FB captions 150-300 chars with CTA. TikTok 80-150 punchy + #fyp. Instagram aesthetic. Threads conversational. Not one-size-fits-all.

🎨
6 diverse tones

Playful, professional, Gen Z (gét gô, kiểu, real), aggressive marketing (cháy hàng, limited), minimalist, storytelling. Pick by audience.

Realtime streaming

Text flows in 0.5-1s vs waiting 5s. ChatGPT-fast UX, easy to pick favorite.

How to use

  1. 1Enter topic/event in textarea (e.g. 'New Da Lat cafe with mountain view').
  2. 2Pick platform (Facebook / TikTok / Instagram / Threads) — formats differ.
  3. 3Pick tone matching audience (playful, Gen Z, professional, aggressive, minimalist, storytelling).
  4. 4Pick length (short / medium / long) — TikTok prefers short, FB medium-long.
  5. 5Hit Generate, wait 1-2s, 5 captions stream in. Copy favorite or Copy All.

How does AI caption writing work?

Every social platform has its own viral rules. Facebook favors engagement (comments, shares) so captions tend to be longer with CTA questions. TikTok scrolls fast — the 3-second hook is critical, captions stay short and punchy. Instagram captions are aesthetic with deliberate line breaks. Threads are conversational, hashtag-light.

This tool anchors each platform via system prompts with character limits, hashtag style, emoji density, and CTA patterns. Few-shot examples in the prompt help Claude Haiku 4.5 output the right style — not machine-translated generic English.

Tone selector lets you pick personality: playful (light VN-appropriate humor), professional (formal, business), Gen Z (slang, lowercase), aggressive marketing (scarcity, strong CTA), minimalist (1-2 sentences no emoji), storytelling (2-3 paragraph narratives).

Streaming responses (SSE from Anthropic API) give a fast UX — first character in 0.5s, 5 captions complete in 3-5s. Each renders as a separate block with a Copy button.

  • Claude Haiku 4.5 — Anthropic's fastest model
  • 4 platforms: Facebook, TikTok, Instagram, Threads
  • 6 tones: playful, professional, Gen Z, aggressive marketing, minimalist, storytelling
  • 3 lengths: short (≤80 chars), medium (80-200), long (200-400)
  • 5 caption variations per generation
  • Streaming response — realtime text
  • Copy per caption + Copy All
  • Vietnamese-native with few-shot examples
  • Rate limit 20 gen/hour/IP

Use cases

Business page

Marketers post 5-10 a week. Each needs on-brand captions — AI writes 5 options, pick fast.

Personal creator

Daily TikTok creator runs out of caption ideas. Type topic → 5 viral-ready options.

Marketing campaign

Launch a product, A/B test captions — generate 10 variations with different tones, measure CTR.

Agency client work

Manage 5-10 brands × 3 platforms — caption time scales fast. AI handles it.

E-commerce shop

Daily product posts on FB/IG. Sale, review, intro captions — variety.

Local business

Cafe/restaurant new menu posts. Playful tone with CTA to visit.

Under the hood

Backend Next.js Route Handler /api/ai/caption accepts POST {topic, platform, tone, length}. Validates input, calls Anthropic Messages API with stream=true. System prompt is built dynamically via buildCaptionSystem(platform, tone, length) — includes 3 few-shot examples (FB playful, TikTok Gen Z, IG minimalist).

Anthropic response is SSE — parser extracts content_block_delta → text_delta → text chunks. The server transforms SSE into a plain ReadableStream and pipes to the client. The client uses the ReadableStream API to decode UTF-8 realtime, appending to output state.

In-memory bucket rate-limit per IP (key 'caption:{ip}'). 20 requests/hour. Daily budget cap $5/day — tracked in .data/budget.json, resets at UTC 00:00. Each request logs cost_usd via estimateCostUsd(usage).

splitCaptions() splits 5 blocks via regex /^\d+\.\s/ at line start. Each block renders separately with a Copy button. While streaming, raw text + blinking cursor show — both flowing text and parsed blocks visible.

FAQ

Are 5 captions truly different?

Yes. Temperature 0.8 (creative) + prompt requires 'NO repeated ideas or opening structures'. 5 captions usually differ in sentence structure, emoji, hashtag, angle.

Could the AI output something inappropriate?

Rarely. Claude Haiku 4.5 is safety-tuned by Anthropic. On sensitive topics (politics, sexual), it refuses or stays generic — that's correct behavior.

Does TikTok caption auto-include #fyp?

Yes. The TikTok prompt specifies 'hashtags 3-5, always include #fyp #xuhuong #foryou'. Remove if unwanted, or swap for nicher tags.

Is Gen Z tone too slangy?

Tone 'Gen Z' deliberately uses slang. If your audience isn't Gen Z, pick 'playful' or 'professional' instead.

Custom prompts?

Phase 1 only allows fixed platform + tone + length. Phase 2 (paid tier) will add custom instructions for brand voice.

Output in English if topic is English?

Default Vietnamese (anchored). For pure English, use /en/tao-caption with English UI.