youtube-title
GitHub基于频道历史数据(CTR、观看时长等)生成SEO优化、高点击率的YouTube视频标题及完整上传包(描述、标签),支持A/B测试,适用于视频创作流程。
Trigger Scenarios
Install
npx skills add leamsigc/ShortsGenerator --skill youtube-title -g -y
SKILL.md
Frontmatter
{
"name": "youtube-title",
"version": "1.1.0",
"description": "Generates the best SEO-targeted, attention-grabbing YouTube video title.\nCalibrated on the channel's own Shorts performance data (CTR, views,\nimpressions, avg view duration). Also produces the full upload package:\ndescription, tags and keywords. Use whenever a YouTube title must be\nchosen or improved: called as a step by twitter-research-topics,\ntwitter-research (Topics Mode), short-generator, the video-idea-research\nplaybook (every video idea gets title + description + tags + keywords),\nor standalone when the user asks for \"the best title\", \"SEO title\",\n\"title for my YouTube video\/Short\", \"description\", \"tags\" or \"keywords\".\n",
"allowed-tools": [
"Read",
"Write",
"Edit",
"Question",
"WebSearch"
]
}
YouTube SEO Title Generator (calibrated on channel data)
Produces ONE recommended title + 2 A/B alternates for a video idea, scored against an evidence-based rubric. Titles are in Spanish (channel language) unless the user requests otherwise.
Channel benchmark (empirical — source of truth for these rules)
Channel totals (last period): 3,582 thumbnail impressions · 5.1% CTR · 10,394 views · 0:37 avg view duration · 69.4 watch hours.
| Title | Impr | CTR | Views | AVD |
|---|---|---|---|---|
| Mohamed EXPLOTA contra Katia Itzel tras el Cruz Azul 3-3 Toluca | 200 | 0% | 1,835 | 0:50 |
| Buscan obligar el regreso del Ascenso por ley | 32 | 3.1% | 1,541 | 0:36 |
| ¡HUMILLADOS! Querétaro le gana 0-2 a Chivas en su casa | 270 | 3.7% | 1,339 | 0:33 |
| El gobierno forzará el descenso en la Liga MX | 81 | 4.9% | 1,320 | 0:39 |
| mediocridad en la Liga MX | 26 | 7.7% | 1,223 | 0:39 |
| Mohamed EXPLOTÓ contra la árbitra y el video es brutal | 120 | 1.7% | 1,220 | 0:38 |
| El dato que nadie vio del empate de México ante Colombia | 3 | 66.7% | 1,188 | 0:25 |
| Ditta EMPUJÓ al árbitro y se puede ir suspendido | 2,057 | 6.4% | 529 | 0:23 |
| ¡Cantó el GALLO! / Cantó el GALLO: Querétaro humilla a Chivas | 267 | 4.9% | 103 | 0:43 |
| El debut de Rafa Márquez con el Tri casi fue un desastre | 153 | 5.2% | 45 | 0:44 |
| 🔴 Así quedó el debut de Rafa Márquez al frente de México | 153 | 2.6% | 18 | 0:28 |
| Los aficionados ABANDONARON el estadio al medio tiempo | 101 | 0% | 16 | 0:31 |
| Mexico vs Colombia El niño que salvó el debut de Rafa Márquez | 45 | 8.9% | 7 | 0:34 |
| La Hormiga falló lo IMPOSIBLE y los memes no perdonan | 60 | 0% | 6 | 1:07 |
| El partido se le complicaba a México frente a Colombia | 14 | 0% | 4 | 0:36 |
What the data proves
- Conflict + specificity wins views. Top-7 titles (1,188–1,835 views) all contain drama (EXPLOTA, EMPUJÓ, obligar, humillar), a score/number (3-3, 0-2), or a bold stake (descenso por ley, dato que nadie vio).
- Same event, better title = 13× views: "¡HUMILLADOS! Querétaro le gana 0-2 a Chivas en su casa" (1,339 views) beat "Cantó el GALLO: Querétaro humilla a Chivas en su casa" (103 views). Score + caps exclamation outperformed the softer phrasing.
- Passive/descriptive titles die: "El partido se le complicaba a México frente a Colombia" → 4 views, 0% CTR. "El niño que salvó..." → 7 views. No stake, no conflict, no caps.
- Emoji prefixes hurt: "🔴 Así quedó el debut..." → 18 views, 2.6% CTR (the 🟣/🔴 convention reads like clickbait spam).
- ALL-CAPS power word works only with substance: EXPLOTA, HUMILLADOS, EMPUJÓ, GALLO (in caps with score) succeeded; "ABANDONARON" flopped (16 views) because the claim had no names/score attached.
- CTR peaks on curiosity gaps: "El dato que nadie vio..." got 66.7% CTR (3 impressions — directional only). "Ditta EMPUJÓ..." combined curiosity + stake and delivered the best volume CTR (6.4% over 2,057 impressions).
- Search still needs the entity front-loaded: highest-impression titles carried searchable nouns (Ditta, árbitro, Liga MX, Rafa Márquez, México, Chivas). Feed-driven views hide this, but impressions come from search/discovery.
Title rules (apply in order)
- Keyword first (chars 0–40): start with the primary search entity — matchup ("México vs Perú"), player ("Gilberto Mora"), competition ("Liga MX Jornada 10"), or event. Never bury it mid-title.
- One power word in ALL CAPS: a single verb/noun of conflict or emotion (ABUCHEADO, EXPLOTA, HUMILLÓ, RECHAZÓ, RENUNCIAR, TRIPLUTE, DEBE GANAR). Max 1–2 words; never the whole title.
- Attach a concrete detail: final score, money figure, date, club, or role ("1-1", "12 millones", "3 de octubre", "Real Madrid").
- Create the stake/curiosity gap: what it costs, what nobody saw, what happens next ("puede PERDER EL PUESTO", "el dato que nadie vio").
- Length: 45–70 characters (YouTube cuts search display ~70; aim ≤ 60 so the full title survives mobile). Absolute max 100.
- No emoji prefix, no hashtags in the title (hashtags go in the description). No ALL-CAPS sentences, no deception — the title must match the video (channel AVD is 0:37; broken promises kill retention).
- Honest clickability: if two candidates score equal, prefer the one whose promise the script actually delivers.
Process
- Read the topic/video idea: script hook, key facts, keywords.
- Generate 5 candidate titles covering different angles (conflict, score+result, curiosity gap, stake/pressure, SEO-plain).
- Score each 0–2 on five axes (max 10):
- SEO — primary keyword in first 40 chars, entity people search
- Power — ALL-CAPS conflict word with substance
- Specificity — score/number/names/date present
- Stake — curiosity gap or consequence
- Format — 45–70 chars, no emoji/hashtag spam
- Pick the highest scorer; make sure 2nd/3rd differ in angle so they are usable as A/B thumbnail-test variants.
- Output the block below (in Spanish) and, when inside a research session, append it as section 6 of the topic file.
Output format
## 6. Título SEO para YouTube
**Título recomendado:** <best title> (<n>/10)
**Alternativo A:** <angle> — <title> (<n>/10)
**Alternativo B:** <angle> — <title> (<n>/10)
**Keywords para descripción:** <3-5 search phrases, comma separated>
**Por qué funciona:** <1-2 lines citing the data rules it hits>
Full upload package (title + description + tags + keywords)
Every video produced by the video-idea-research playbook needs the complete
metadata block, not just the title. After the title block above, output:
## Paquete YouTube
**Título:** <recommended title>
**Descripción:** <2-4 lines: hook line first, summary of what the video shows,
1-2 questions to drive comments, 3-5 hashtags at the end>
**Tags:** <8-15 comma-separated tags: entities (player/club/matchup),
competition, format words ("resumen", "goles", "polémica"), Spanish + English>
**Keywords:** <8-15 search phrases: how people actually search —
"<player> hoy", "<team> vs <team>", "liga mx jornada N">
Rules:
- Title: the rubric above — keyword front-loaded, one ALL-CAPS power word, concrete detail, stake, 45-70 chars, no emoji/hashtag spam, honest promise.
- Description: first line repeats the title's promise with a twist (it shows in search); 2-4 short lines; a question to farm comments; hashtags last.
- Tags/keywords: mix narrow (exact matchup) + broad (competition) + format words; include the English spelling of names when the audience is bilingual.
- Backend seed option:
generate_metadata()inBackend/gpt.py(title / description / 6 keywords / social post) — treat its output as a first draft and rewrite with these rules; the rubric-scored title wins.
Quick examples (before → after, using channel evidence)
- "🔴 Así quedó el debut de Rafa Márquez al frente de México" (18 views) → "El debut de Rafa Márquez CASI FUE UN DESASTRE con México" (stakes + caps)
- "Cantó el GALLO: Querétaro humilla a Chivas en su casa" (103 views) → "¡HUMILLADOS! Querétaro le gana 0-2 a Chivas en su casa" (1,339 views)
- "El partido se le complicaba a México frente a Colombia" (4 views) → "México vs Colombia: el empate que CASI se vuelve desastre del Tri"
Version History
- 7e4e16b Current 2026-10-20 01:53


