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.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
texts,text,type(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.003 per hook scored = $3 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Hook scored | One title/hook scored for virality. | $0.003 |
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
| Field | What it does | Type |
|---|---|---|
texts | Titles, hooks, or scripts to score. Strings OR objects (uses title/hook/text/scriptText). Pass several variants to rank them. | array |
text | A single title/hook to score (alternative to the array). | string |
type | Score as a short title, a longer script/hook, or auto-detect. | string |
rankResults | Sort results best-first and add a rank. | boolean |
What you get
A structured dataset — each result includes fields like:
rankscoregradetextsuggestionsExport 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.
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.
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).
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.
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.
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.
AI Storyboard Generator
Turn a story or script into storyboard scene images. One art style across every shot. $0.05 per scene image, or $50.00 per 1,000.
Where this tool sits
- Categories
- AI Video & Content Studio
Hook & Virality Scorer: rank your title variants before you post
Send it the five titles you are arguing about and get each one back with a 0-100 score, an A to F grade, a six-part breakdown of where the points came from, the exact words it matched, and concrete suggestions for the parts that scored low. Send a batch and it ranks them best first.
It is a rules engine, not a model. It counts curiosity phrases, emotion words, power words, numbers, questions and "you" or "I" framing, in English. It will not tell you whether your idea is any good, and a high score is not a forecast of views.
| Input | Titles, hooks or scripts, as text |
| Output | One row per text scored |
| Ceiling | No cap on how many texts you send in one run |
| Account needed | None, and no AI key |
| Price | $3.00 per 1,000 hooks, flat on every plan |
🔍 What Hook & Virality Scorer does
The same text always gets the same score. There is no model call, nothing random and nothing that drifts between runs, which is the point: you can rewrite a title, score it again, and the difference in the number is a real difference in the text rather than a different mood on a different day.
Six dimensions make up the score: curiosity, emotion, power words, specificity, relatability and length. breakdown shows what each contributed and signals shows exactly which words and patterns it matched, so a score you disagree with is always traceable to something you can point at.
Length is scored differently for a title and for a script. In auto, anything up to 18 words is treated as a title, and titles do best between about four and eleven words. Scripts do best between 20 and 250 words. Set type yourself if auto guesses wrong for your format.
📥 What you give it
{
"texts": [
"I tried the viral 5am routine for 30 days",
"You won't believe what happened when I confronted my MIL",
"My morning routine"
],
"type": "auto",
"rankResults": true
}
| Field | Default | What it is |
|---|---|---|
texts | none | The titles, hooks or scripts to score. Plain strings, or objects with a title, hook, text or scriptText key. The box starts with three examples in it, which are suggestions and not defaults. |
text | none | One string, as an alternative to the array. |
type | auto | auto, title or script. This only changes how length is scored. |
rankResults | true | Sort the output best first and add a rank. Turn it off and rows come back in the order you sent them, with no rank field. |
At least one of text or texts has to resolve to a non-empty string. With neither, the run fails rather than returning an empty dataset.
📤 What you get back
A real row:
{
"rank": 1,
"text": "I tried the viral 5am routine for 30 days",
"score": 36,
"grade": "D",
"breakdown": {
"curiosity": 0,
"emotion": 0,
"powerWords": 0,
"specificity": 12,
"relatability": 4,
"length": 8
},
"signals": {
"wordCount": 9,
"isTitle": true,
"hasNumber": true,
"isQuestion": false,
"addressesYou": false,
"firstPersonStory": true,
"powerWords": [],
"curiosityPhrases": [],
"emotionWords": [],
"fillerWords": []
},
"suggestions": [
"Open a curiosity gap...",
"Add an emotional or high-stakes word (shocking, heartbreaking, insane)."
]
}
The first suggestion is cut short here; the real one carries a full rewrite tip.
| Field | What it is |
|---|---|
score | 0 to 100. Useful for ranking your own variants against each other. |
grade | The score in bands, so you can gate on a letter instead of arguing about two points. |
breakdown | Points from each of the six dimensions. A zero tells you which lever has not been pulled at all. |
signals | What it actually matched: the word count, whether there is a number, whether it is a question, whether it addresses the reader, and the specific power, curiosity, emotion and filler words found. Empty arrays mean it found none. |
suggestions | Concrete rewrite tips for whatever scored low. It tells you what is missing. It does not write the new title for you. |
rank | 1 is the best-scoring text in the batch. Absent when ranking is off. |
🧾 Reading the output
Every row is a scored text. There are no sample rows and no diagnostic rows in this one, so the dataset is exactly as long as the list you sent.
grade | score |
|---|---|
| A | 80 and above |
| B | 65 to 79 |
| C | 50 to 64 |
| D | 35 to 49 |
| F | below 35 |
The row in the example above scores 36 with a D, and breakdown says why: full marks on specificity because it carries a number and enough words, nothing at all on curiosity, emotion or power words. That is a title stating a fact rather than opening a loop, which is exactly what the two suggestions are pointing at.
Read breakdown and signals together. A dimension at zero with an empty array beside it in signals means it genuinely matched nothing, not that it scored badly.
▶️ How to run it
1. Open Hook & Virality Scorer and click Try for free. 2. Replace the examples in Texts / variants with your own, one per entry. 3. Leave Type on auto unless you are scoring a long script. 4. Click Start. 5. Read the ranked rows, or download the dataset as JSON, CSV or Excel.
💰 How much does it cost?
$3.00 per 1,000 hooks, which is $0.003 each. Flat on every Apify plan, no volume tiers.
You pay per text scored. Twenty title variants in one run is six cents. The same text sent twice is scored twice and counted twice, so strip duplicates before a large batch.
💡 What people use it for
- Settling the five-title argument in thirty seconds, with a number and a reason instead of an
opinion.
- Scoring a back catalogue of your own published titles to see which hooks actually carried the good
posts.
- A pre-publish gate: anything below a C goes back for a rewrite.
- Measuring a rewrite. Score the old title, score the new one, and the gap is real because the
scoring does not move.
- Checking the first twenty words of a script, which is the part people decide on.
🚧 What it does not do
- No AI and no model call. Word lists and patterns, nothing more. It cannot judge whether your
idea is interesting, only whether the wording carries the signals it looks for.
- English only. The word lists are English, so a title in another language scores near zero for
reasons that have nothing to do with the title.
- Not a prediction. It ranks your variants against each other. It does not forecast views, and
nothing here has been checked against real performance data.
- No platform context. A hook for TikTok and a hook for a newsletter are scored the same way.
- Three or more capitals in a row read as shouting. Acronyms like AITA, MIL or NBA cost points
and can trigger a "reduce ALL-CAPS" suggestion, which is worth knowing before you take it.
- It rewards the usual viral vocabulary, so it will happily mark a clickbait title above a
careful one. Use it as a first pass, not as an editor.
- No rewriting.
suggestionsnames what is missing. Writing the better line is still your job. - Every text you send is scored, duplicates included.
🧭 Which creator tool do you need?
| If you want | Use |
|---|---|
| To score and rank titles before posting | This one |
| A long video cut into ranked short clips | AI Viral Clip Cutter |
| A story turned into a finished faceless short | AI Faceless Video Generator |
| A video's subtitles as plain text | YouTube Transcript Scraper |
| What people are actually searching for | Google Trends Scraper |
❓ Questions people ask
Do I need an OpenAI key or any other AI key? No. There is no model behind this, so there is nothing to connect and no second bill.
Will a high score make my video go viral? No, and nobody should sell you that. It tells you which of your own drafts carries more of the signals that tend to travel. The idea underneath still has to be worth watching.
Why did my title score badly? Read breakdown for the dimension at zero and signals for what it matched. It is usually curiosity: a title that states the outcome leaves nothing to open.
Does the score change between runs? No. Same text, same score, every time.
Can I score a whole script? Yes. Set type to script, and note that length scores best between 20 and 250 words.
Does it work in French or Spanish? Not usefully. The word lists are English.
🆘 If something breaks
Open the Issues tab on the actor page. Send the text you scored and the run ID. A score you think is wrong is worth reporting too, with the breakdown and signals from that row.