Score Before You Post: A Creator's Guide to Pre-Posting Analysis
A walkthrough of how to score a video before you publish — hook, format, tactics, music, suggestions — and which signals actually matter.
Most creators post and then wait. The video goes up, the first hour of views comes in, and by then there’s nothing you can do about the hook, the cut, or the sound choice. The feedback loop is too slow to act on, and by the time you’ve figured out what didn’t work, you’ve already burned a post slot.
The alternative — scoring a video before you publish it — used to be impractical. You’d need someone with deep pattern recognition to look at your edit and tell you, in concrete terms, what was likely to work and what wasn’t. Now you can do it with a pipeline.
This is a walkthrough of how we use Blossom’s analysis pipeline to score a video before posting it. The same flow works whether you paste a competitor’s URL or upload your own draft. The signals are the same. What changes is what you do with them.
If you want a primer on hook archetypes specifically before we get into the workflow, we wrote one here. Otherwise, let’s get into it.
Step 1: Run the hook analysis first
The first thing to look at is the hook. Not because everything else doesn’t matter, but because if the hook fails, nothing else gets a chance to be tested by the algorithm.
When you upload a video or analyze a URL, the pipeline runs analyzeHookV2() on the opening 3 seconds. The response shape looks roughly like this:
{
"hook_type": "Direct Question",
"hook_text": "Why does your camera roll have 40 unposted videos?",
"hook_effectiveness": 8,
"hook_reasoning": "Opens with a specific, second-person question..."
}
Four fields. The one creators usually look at first is hook_effectiveness — the 1-10 score. That’s the wrong place to start. The score is the conclusion, not the signal.
What you actually want to read is hook_reasoning. The reasoning field tells you why the hook is rated where it is. If the reasoning calls out a specific weakness — “the question is too broad to feel personal,” or “the opening frame is static for 1.4 seconds before the message lands” — that’s a fixable problem. You can recut. You can re-record the line.
The score itself is most useful as a threshold. In our experience, videos with a hook_effectiveness of 7 or below are worth reshooting if the rest of the video is strong, because the opener is going to throttle distribution regardless of what’s downstream. Videos at 8 or above usually have a fightable opener even if some other element is weaker.
The hook_type field tells you which archetype the AI classified your opener as. If you intended a disqualifying filter and the AI read it as a vague claim, the hook isn’t doing the job you thought it was. That’s a useful disagreement to surface before you post.
Step 2: Read the format classification critically
Next, look at the format_classes field. This comes from the full video analysis (analyzeVideoV2()) and tells you which format the AI thinks your video is.
{
"format_classes": ["Talking Head", "Tutorial"]
}
The reason this matters isn’t that one format is better than another. Format performance varies by niche, by audience, by platform. What matters is whether the AI’s classification matches what you thought you were making.
If you set out to film a day-in-the-life and the pipeline came back with “Talking Head Tutorial,” that’s a signal. Either the format drifted during production, or your structure isn’t reading as what you intended. Both are useful to know before you post.
The other thing the format classification gives you is a reference cohort. If your video is classified as a Tutorial, you can pull other Tutorials from our library at a similar score range and look at what they did differently — different pacing, different opener, different cut frequency. That’s a much faster path to fixing the video than trying to invent the answer from scratch.
A small note on multi-format videos. If format_classes returns two or three formats instead of one, that often means the video is structurally indecisive. It opens like a tutorial, drifts into vlog, and ends like a CTA. The platforms usually punish that kind of structural drift because the algorithm can’t categorize the audience cleanly. If you see multiple format classes on a single video, treat it as a flag to tighten the structure before posting.
Step 3: Audit the tactics
The tactics field is where the texture of the video shows up — the specific moves the analysis detected. Fast cuts. Text overlay. Audio drop sync. Camera move. Subject-matter pivot.
{
"tactics": ["Fast cuts", "Text overlay", "Audio drop sync"]
}
The thing to look for here is mismatch. If your video is a long-form storytelling piece and the only tactic detected is “Static frame,” the video probably isn’t using enough variation to hold retention through its length. If your video is a 12-second TikTok and the tactics list includes “Slow zoom” and “Held frame,” you’re pacing for the wrong format.
The other useful thing is what’s missing. If you’re posting to TikTok and the tactics list doesn’t include any audio-related move — no beat sync, no drop alignment, no music switch — that’s a flag. TikTok rewards audio-locked editing, and a video with otherwise good structure but no audio tactic frequently underperforms on the platform.
Tactics aren’t a checklist to maximize. The point isn’t to add as many tactics as possible. The point is to make sure the tactics in the video match what the format and platform reward, and to remove anything that’s pulling against that.
Step 4: Check the audio context
If your video has audio (and if it doesn’t, that’s a separate problem), the pipeline runs an audio analysis. The output looks roughly like this:
{
"duration": 14.2,
"bpm": 124,
"beatStrength": 0.78,
"drops": [
{ "timestamp": 2.1, "type": "drop", "intensity": 0.9 },
{ "timestamp": 8.4, "type": "buildup", "intensity": 0.6 }
],
"sections": [
{ "start": 0, "end": 2.1, "label": "intro", "energy": 0.4 },
{ "start": 2.1, "end": 14.2, "label": "chorus", "energy": 0.8 }
]
}
Two things to look at first: bpm and the position of drops.
The BPM tells you the tempo of your audio. If you’ve made a fast-cut video with a 78 BPM track, the cuts and the audio are fighting each other — the viewer’s brain is being asked to process visual rhythm at one rate and audio rhythm at another. Either slow the cuts or change the music.
The drops array is more actionable. If there’s a strong drop at, say, the 2.1-second mark, look at what’s happening in your video at 2.1 seconds. If it’s a held frame, you’ve wasted the drop. If it’s a punchline cut, the audio is reinforcing the structure and the algorithm will likely reward the alignment.
The single highest-leverage edit we see, repeatedly, is moving the first major cut so it lands on the first audio drop instead of being 0.3 seconds early or late. The viewer doesn’t consciously notice. The retention curve does.
The spectralBrightness and energyVariance fields are less actionable on a per-video basis but useful for understanding why your overall content is reading the way it is. If everything you make has flat energy variance, that’s a structural pacing problem across your content, not a per-video fix.
Step 5: Read the virality scores
This is where the platform-specific scores come in. The pipeline returns four numbers:
{
"overall_score": 76,
"instagram_score": 81,
"tiktok_score": 64,
"youtube_score": 70,
"score_reasoning": "Strong opener and clear visual narrative..."
}
The first thing to look at is the gap between instagram_score and tiktok_score. If the gap is large — say, more than 15 points — you’re holding a video that’s structurally suited for one platform and not the other. We wrote a detailed breakdown of why the same video scores differently on each platform, and the short version is that the seed audience, the hook calibration, and the audio dependency are all different.
If you’re planning to cross-post, a wide score gap means you should reshoot the first three seconds of one version, not post the same edit to both.
The overall_score is useful as a directional signal. Below 50, the video has structural problems that won’t be fixed by tweaks. Between 50 and 70, you’re in the iteration zone where individual fixes (better hook, tighter cut on the drop, removed unnecessary tactic) can move the needle meaningfully. Above 70, you’re posting a competent video and the marginal returns of further editing drop off.
Don’t chase the score. Chase the reasoning. score_reasoning is where the AI tells you which specific things lifted or hurt the rating, and that’s where the actionable feedback lives.
Step 6: Work through the improvement suggestions
The last stage of the pipeline is generateImprovements(), which returns a ranked list of specific actions to take. The shape:
{
"improvements": [
{
"category": "hook",
"suggestion": "Move the main claim from second 2 to second 0.5",
"priority": "high",
"example": "Open with 'Three hashtags is the sweet spot' instead of leading with the setup line"
},
{
"category": "pacing",
"suggestion": "Add a cut between seconds 5 and 7 — the held frame is causing a retention dip",
"priority": "medium",
"example": "Insert a B-roll cut or zoom punch at second 6"
}
]
}
The priority field is doing a lot of work here. The high-priority items are the ones that, based on the analysis, are likely to materially change the outcome of the video. Medium and low are nice-to-haves that can wait.
The right move is to address every high-priority suggestion before you publish, and to ignore the medium ones unless you have time. Trying to address everything almost always over-edits the video and produces a worse result than addressing the top two or three issues cleanly.
The example field is the most useful one for actually doing the fix. The suggestion tells you what to change; the example tells you what to change it to. If the example is too vague to act on, you can run the analysis again after a small edit and see whether the priority on that item drops.
Step 7: Re-score after you edit
This is the part most creators skip, and it’s where the system actually pays off.
After you’ve made the high-priority fixes, run the analysis again. The pipeline supports versioning — every analysis is linked to a version_group_id so you can see the same content across iterations. The previous version’s results get injected into the next analysis as context, and the model returns a version_progress field that explicitly references which previous weaknesses you addressed.
What you’re looking for is movement on the specific scores and tactics that the previous pass flagged. Did hook_effectiveness go up? Did the drop alignment register this time? Did the format classification settle on a single class instead of two?
If you’ve addressed the high-priority items and the scores haven’t moved, the diagnosis was probably wrong — the issue is structural, not editable, and the right move might be to scrap and reshoot instead of continuing to tweak.
If you’ve addressed the items and the scores have moved meaningfully (say, hook effectiveness up by 2 points, overall score up by 8-12 points), you’ve turned a directional signal into a measurable lift, and you have a version of the video that’s structurally better than the one you would have posted blind.
The point isn’t perfection, it’s iteration speed
Pre-posting analysis isn’t a guarantee of virality. Nothing is. The algorithm will still do what it does, the cultural moment is still chaotic, and good videos still flop sometimes.
What scoring before you post buys you is iteration speed. Instead of waiting six hours after publishing to see if the algorithm liked the hook, you find out in two minutes and can ship a better version. Over 10-20 videos, the compounded effect of catching issues pre-post is much larger than any single creative decision.
The creators we see breaking out consistently aren’t doing anything magical. They’re running the loop faster than everyone else. Score, edit, re-score, ship. The next video starts from what the previous version’s analysis taught them.
If you want to try this on one of your own drafts, you can sign up here and run the full pipeline on a video in a couple of minutes. The FAQ covers the common questions about how the scoring works under the hood. And if you want to keep going on hook archetypes specifically, we have a piece on that too.
The goal is to stop posting blind. Once you can see the signal before the post goes out, the question stops being “will this work” and starts being “what should I change.”
Read next
The Anatomy of a Viral TikTok Hook in 2026
What actually makes the first three seconds of a TikTok work in 2026, broken down by the hook archetypes our analysis pipeline sees most often.
Instagram Reels vs TikTok: What Actually Changes When the Algorithm Changes
We score the same videos on both Reels and TikTok with the same pipeline. Here's what the score gap actually tells us about how each platform reads content.