Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Social Metadata Generator icon

Social Metadata Generator

Write titles, captions, hashtags, SEO tags and a pinned comment. For YouTube, TikTok, Reels, Shorts and X. $15.00 per 1,000 packs ($0.015 each).

119 runs on Apify $0.015 per metadata pack ($15 / 1,000)
Run this in the cloudRun on Apify →

AI Video & Content Studio

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust text, sources, platform (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.015 per metadata pack = $15 per 1,000

You are charged forWhenPrice
Metadata packOne metadata pack (titles, hashtags, SEO).$0.015

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.

Inputs

FieldWhat it doesType
textThe video topic, title idea, or full script to generate metadata for.string
sourcesArray of strings OR objects (uses title/script/scriptText/text/selftext). Pipe the Script Rewriter / Reddit Scraper in.array
platformPlatform to tune titles, limits, and hashtag counts for.string
titleCountHow many title variations to generate.integer
keywordsComma-separated SEO keywords to weave in.string
languageOutput language.string
openaiApiKeyYour OpenAI key. Kept private.string
modelChat model. Default gpt-4o-mini.string
baseUrlOpenAI-compatible base URL. Default https://api.openai.com/v1.string

What you get

A structured dataset — each result includes fields like:

platformtitlesdescriptionhashtagstags

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in AI Video & Content Studio

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Hook & Virality Scorer iconAI Video & Content Studio

Hook & Virality Scorer

Score any title, hook or script for viral potential. You get 0-100 with a grade, a breakdown and rewrite tips. No AI key. $3.00 per 1,000 hooks.

Ready to run — no setup

AI Viral Clip Cutter — Long Video to Shorts iconYouTube & Creator Tools

AI Viral Clip Cutter — Long Video to Shorts

Turn a long podcast or interview into ranked vertical clips. AI scores each moment and captions follow every word. $0.20 per clip row, samples included.

3 use cases

AI Text-to-Speech Voiceover iconYouTube & Creator Tools

AI Text-to-Speech Voiceover

Turn any script into an AI voiceover file: MP3, WAV, Opus or AAC. Pick the voice, speed and format. $40.00 per 1,000 voiceovers ($0.04 each).

3 use cases

Video & Audio Transcriber — Word-Level + SRT/VTT iconYouTube & Creator Tools

Video & Audio Transcriber — Word-Level + SRT/VTT

Transcribe any video or audio URL with word-level timestamps. Download SRT, VTT and TXT. The language is found for you. $0.02 per transcribed minute.

3 use cases

AI Character Reference Bank iconYouTube & Creator Tools

AI Character Reference Bank

Make a consistent AI character reference set. You get portrait, 3/4, full body, side and expression sheets, plus a character-bible prompt.

2 use cases

AI Faceless Video Generator iconAI Video & Content Studio

AI Faceless Video Generator

Make a faceless short video from a subreddit, story or topic. You get a 9:16 MP4 with script, voiceover, AI scenes and captions.

Ready to run — no setup

See all AI Video & Content Studio →

Social Metadata Generator: titles, captions, hashtags and SEO tags for a video

Give it a topic, a title idea or the whole script. It writes back a pack: several title options, a description, hashtags, 10 to 15 keyword tags and a pinned comment, written for the platform you picked.

Two things to know up front. You bring your own OpenAI key, so the writing is on your account and your bill, not hidden inside a markup. And the platform rules are asked of the model rather than trimmed afterwards, so a title can still come back longer than YouTube will show. Read them before you post.

InputA topic, a title idea or a full script
OutputOne pack per source: titles, description, hashtags, tags, pinned comment
CeilingOne platform per run, source text read up to 6,000 characters
Account neededYour own OpenAI key
Price$15.00 per 1,000 packs, which is $0.015 each

✍️ What Social Metadata Generator does

Every platform wants something different from the same video. YouTube rewards a title that reads like a search, TikTok wants the first three words to land, Reels leans on the caption, X has almost no room at all. Pick the platform in platform and the pack is written for that one.

A pack is five things: titles with as many options as you asked for, a description you can paste as the caption, hashtags already normalised with the # and no spaces, tags as bare keywords for the YouTube tag box, and a pinnedComment to drop under your own video.

Run it with sources to do a batch. One pack per item, all on the platform you chose.

📥 What you give it

{
  "text": "A 60-second video explaining why cats knock things off tables, with funny examples.",
  "platform": "youtube shorts",
  "titleCount": 5,
  "keywords": "cat behaviour, why cats do that",
  "language": "English"
}
FieldDefaultWhat it is
textnoneOne topic, title idea or script.
sourcesnoneA batch. Strings, or objects carrying title, script, scriptText, text or selftext.
platformyoutubeyoutube, youtube shorts, tiktok, instagram reels or twitter. One per run.
titleCount5Title options to write. 1 to 15.
keywordsnoneComma separated terms to work in. Useful when you already know what you rank for.
languageEnglishOutput language. Write the language name in plain words.
openaiApiKeynoneYour own key. Held as a secret field, never written into the results.
modelgpt-4o-miniAny chat model your key can reach.
baseUrlOpenAIPoint it at any OpenAI-compatible endpoint instead.

An object in sources is read title first. If it has a title, that is what gets used and the script alongside it is ignored. When you want the whole script considered, pass it as a plain string.

📤 What you get back

Real output from run klZSQrDLaGg65VZEK. That run had no key on it, so this is the free sample pack the actor writes rather than model output, which is why the text says so. A real pack has the same fields without _sample and note:

{
  "ok": true,
  "_sample": true,
  "note": "SAMPLE output ... Add your OpenAI key (openaiApiKey or the OPENAI_API_KEY env var) to generate real, AI-written metadata.",
  "source": "A 60-second video explaining why cats knock things off tables, with funny examples.",
  "platform": "youtube",
  "titles": [
    "A 60-second video explaining why cats knock things off table ... You Won't Believe #3",
    "The Truth About A 60-second video explaining why cats knock things off table",
    "A 60-second video explaining why cats knock things off table: A Quick Guide"
  ],
  "description": "[SAMPLE] Hook line about A 60-second video explaining why cats knock things off table...",
  "hashtags": ["#sample", "#demo", "#metadata", "#contentcreator", "#socialmedia"],
  "tags": ["sample", "demo", "metadata generator", "titles", "hashtags", "seo tags"],
  "pinnedComment": "[SAMPLE] Drop a comment below ... this is example engagement bait."
}

The title list and hashtag list are cut short above so the block stays readable.

FieldWhat it is
titlesYour options, in the order the model wrote them. Pick one, they are not ranked.
descriptionThe caption or video description, as one block of text.
hashtagsAlready carrying the # with the spaces taken out, so they paste straight in.
tagsBare keywords, no #. This is the YouTube tag box, not the caption.
pinnedCommentA comment to pin under your own video. Hidden in the default table view, so open the JSON or export to see it.
sourceThe first 1,000 characters of what you sent, so you can tell packs apart in a batch.

🧾 Reading the output

A dataset row is a finished pack, and every dataset row is charged. Two other things the actor writes never reach the dataset at all, so they never bill:

WhatWhere it goesCharged
A finished packThe dataset, ok: trueyes
The sample pack, when no key was suppliedKey-value store, SAMPLE_AND_NOTICES, flagged _sampleno
An item the model could not writeKey-value store, same key, ok: false with the reasonno

So if you ran a batch of 20 and the dataset holds 17 rows, the other three are in Storage under SAMPLE_AND_NOTICES with the reason attached. A run where every item failed still finishes green with an empty dataset, which is why the row count is the thing to check rather than the run status.

With a key on the run and nothing in text or sources, the run fails outright rather than writing an empty dataset.

▶️ How to run it

1. Open Social Metadata Generator and click Try for free. 2. Paste your topic or script into Topic / script. 3. Pick the Platform. This is the one setting that changes the output most. 4. Put your key into OpenAI API key. Without it you get the sample pack instead. 5. Click Start, then take the pack from the dataset or read it from the API.

💰 How much does it cost?

$15.00 per 1,000 packs, which is $0.015 per pack. Flat on every Apify plan, no volume tiers.

One source in, one pack out, one charge. The sample pack and any item the model could not write go to the key-value store instead of the dataset, so neither is billed here.

Your OpenAI usage is separate and goes to OpenAI on your own key. gpt-4o-mini is the default because it is cheap for this kind of short writing job.

💡 What people use it for

  • Writing the title, caption and tags for a batch of shorts in one pass instead of one video at a

time.

  • Getting five title options to choose from, which is more useful than one confident guess.
  • Rewriting the same video's metadata for a second platform by running it again with platform

changed.

  • Keeping a house set of keywords in keywords so every upload leans the same way.

🚧 What it does not do

  • It does not enforce the platform limits. Lengths, hashtag counts and the 10 to 15 tag range

are asked for, not trimmed afterwards. Check a title before you paste it.

  • No trend or search-volume data. The tags are written from your topic, not from what is

currently being searched.

  • One platform per run. Two platforms means two runs, and two packs to pay for.
  • It reads an object's title, not its script. Pipe rows in and you may be generating from a

headline. Pass the script as a string when the body is what matters.

  • Long scripts are trimmed. Roughly the first 6,000 characters are what the model sees.
  • No key, no writing. A run without one produces the sample pack so you can see the shape, and

nothing more.

  • It does not post anything. For that, see the uploader linked below.

🧭 Which social actor do you need?

If you wantUse
Titles, captions, hashtags and tags for a videoThis one
To find someone's profiles from a name, domain or emailSocial Profile Finder
To post the finished video from your AI clientSocial Media Uploader Pro
Public LinkedIn posts matching a keywordLinkedIn Post Search Scraper

❓ Questions people ask

Why do I need my own OpenAI key? Because the writing happens on your account, at your model choice, and nothing about your script passes through a key of ours.

Can I use a model that is not OpenAI's? Yes, if it speaks the OpenAI chat format. Put the endpoint in baseUrl and the model name in model.

Where is my pinned comment? On the row. The default table view does not show that column, so open the JSON or export the dataset.

Can I batch a whole channel's worth? Yes, put them all into sources. One pack per item, all on the same platform, one charge each.

Will the titles be under the YouTube limit? Usually, but it is not guaranteed. The length is requested from the model and not cut afterwards.

What language can it write in? Whatever you put in language. Write the name of the language, not a code.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and the topic you used. If rows are missing, look in Storage under SAMPLE_AND_NOTICES first, because the reason is usually written there.