Recipe catalog / clickbait-level
Grade clickbait level
How much does headline rely on curiosity gaps, exaggeration, or emotional bait instead of stating what the content is?
You want to rank, flag, or reject headlines that manipulate readers into clicking rather than telling them what they will get.
Explore this recipe interactively ยท Source and implementation guide
Use clickbait-level in TypeScript
Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.
import { clickbaitLevel } from 'jev-recipes/clickbait-level';
const result = await clickbaitLevel({
"headline": "This One Kitchen Habit Is Secretly Destroying Your Health - Doctors Are Stunned",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| headline | string | Required |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"headline": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"headline"
]
},
"result": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"model": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"input_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"input_tokens",
"output_tokens"
],
"additionalProperties": false
},
"status": {
"type": "string",
"enum": [
"ready",
"review"
]
},
"score": {
"type": "number",
"minimum": 0
},
"level": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"bait": {
"type": "string",
"enum": [
"none",
"mild",
"moderate",
"heavy",
"extreme"
]
}
},
"required": [
"model",
"usage",
"status",
"score",
"level",
"confidence",
"probabilities",
"bait"
],
"additionalProperties": false
}
}Saved example result
This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo clickbait-level.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "review",
"score": 2.92,
"level": 3,
"confidence": 0.62,
"probabilities": {
"0": 0.01,
"1": 0.04,
"2": 0.15,
"3": 0.62,
"4": 0.18
},
"bait": "heavy"
}
Evaluation evidence
No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.
Use the evaluation guide to measure this decision on your own labeled cases.
Limitations
- Grades the wording of the headline alone; it does not see the article and cannot say whether the headline is accurate.
- Does not measure click-through rate or reader trust. Publishing thresholds and rewrite policies belong in code.
Related recipes
- outcome-framing: Use outcome-framing to judge whether a message frames a result as a gain or a loss.
- question-leading: Use question-leading to detect questions that push the reader toward a particular answer.