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.
Platform
Tone
Length
Why use this tool
FB captions 150-300 chars with CTA. TikTok 80-150 punchy + #fyp. Instagram aesthetic. Threads conversational. Not one-size-fits-all.
Playful, professional, Gen Z (gét gô, kiểu, real), aggressive marketing (cháy hàng, limited), minimalist, storytelling. Pick by audience.
Text flows in 0.5-1s vs waiting 5s. ChatGPT-fast UX, easy to pick favorite.
How to use
- 1Enter topic/event in textarea (e.g. 'New Da Lat cafe with mountain view').
- 2Pick platform (Facebook / TikTok / Instagram / Threads) — formats differ.
- 3Pick tone matching audience (playful, Gen Z, professional, aggressive, minimalist, storytelling).
- 4Pick length (short / medium / long) — TikTok prefers short, FB medium-long.
- 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
Marketers post 5-10 a week. Each needs on-brand captions — AI writes 5 options, pick fast.
Daily TikTok creator runs out of caption ideas. Type topic → 5 viral-ready options.
Launch a product, A/B test captions — generate 10 variations with different tones, measure CTR.
Manage 5-10 brands × 3 platforms — caption time scales fast. AI handles it.
Daily product posts on FB/IG. Sale, review, intro captions — variety.
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.