
Viral Content Predictor
- 47 installs
- 5 repo stars
- Updated June 18, 2026
- drshailesh88/integrated_content_os
Scores content ideas for viral potential and predicts views, engagement, and retention, then outputs a research-backed content blueprint.
About
Analyzes content ideas from PDF/DOCX files and predicts viral potential (views, engagement, retention) for a medical-education channel. A creator uses it to prioritize which video ideas to produce and how to structure them.
- Scores medical-education content ideas 0-100 for viral potential and predicts view ranges
- Runs trend and YouTube-comment research to surface knowledge gaps and content blueprints
Viral Content Predictor by the numbers
- 47 all-time installs (skills.sh)
- Ranked #576 of 853 Sales & Marketing skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/drshailesh88/integrated_content_os --skill viral-content-predictorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 47 |
|---|---|
| repo stars | ★ 5 |
| Last updated | June 18, 2026 |
| Repository | drshailesh88/integrated_content_os ↗ |
What it does
Scores content ideas for viral potential and predicts views, engagement, and retention, then outputs a research-backed content blueprint.
Files
Viral Content Predictor for Medical Education
This skill analyzes healthcare/medical education content ideas and predicts their viral potential using multi-factor analysis, trend research, and YouTube audience insights.
Core Capabilities
1. Content Idea Analysis: Extract and score content ideas from uploaded documents 2. Viral Potential Prediction: Estimate views, engagement, and AVD based on multiple factors 3. Trend Research: Identify hot topics and emerging trends in medical education 4. Audience Intelligence: Analyze YouTube comments to understand knowledge gaps and concerns 5. Content Optimization: Provide subtopics, myths to address, and structural recommendations
Workflow
Phase 1: Content Extraction & Initial Scoring
When the user provides PDF/DOCX files with content ideas:
1. Extract all content ideas from the document 2. Initial categorization by topic, complexity, and format 3. Preliminary viral score (0-100) based on:
- Topic relevance and timeliness
- Emotional appeal (fear, hope, relief, empowerment)
- Searchability and SEO potential
- Educational value vs entertainment balance
- Novelty factor
Phase 2: Deep Research & Validation
For top-scoring ideas (score >70) or user-selected ideas:
1. Search current trends: Use web_search to find:
- Recent high-performing videos on the topic
- News articles and medical publications
- Reddit/forum discussions
- Trending searches related to the topic
2. Competitive analysis:
- Identify top-performing videos in the niche
- Analyze view counts, engagement ratios, and video length
- Note common patterns and differentiators
3. Knowledge gap identification:
- What questions are people asking?
- What misconceptions exist?
- What information is missing from existing content?
Phase 3: Predictive Analytics
For each analyzed idea, calculate:
1. Predicted View Range: Based on:
- Search volume data (estimated from trends)
- Similar video performance benchmarks
- Topic saturation level
- Seasonal/temporal relevance
- Channel authority factor (assumed moderate for interventional cardiology niche)
2. Engagement Prediction:
- Estimated likes, shares, comments
- Expected like-to-view ratio
- Share potential score
3. AVD (Average View Duration) Optimization Score:
- Topic retention potential (inherent interest)
- Complexity level (optimal: moderate complexity for patient education)
- Hook strength assessment
- Pacing recommendations
Phase 4: Content Blueprint
For prioritized ideas, provide:
1. Video Structure Recommendation:
- Optimal video length
- Hook suggestions (first 10 seconds)
- Chapter breakdown with timestamps
- Pacing guidance for high retention
2. Subtopics to Include (in priority order):
- Core information (must-have)
- High-interest tangents (AVD boosters)
- Myth-busting segments (engagement drivers)
- Practical takeaways (satisfaction & shareability)
3. Psychological Triggers to Address:
- Common fears related to the topic
- Misconceptions to debunk
- Hope/empowerment angles
- Trust-building elements
4. SEO & Discoverability:
- Title suggestions (tested patterns)
- Thumbnail concepts
- Keyword recommendations
- Description template
Scoring Methodology
Viral Potential Score (0-100)
Topic Factors (40 points):
- Search demand: 15 pts (estimated from trend data)
- Emotional resonance: 10 pts (fear, hope, curiosity)
- Timeliness: 10 pts (recent news, seasonal relevance)
- Novelty: 5 pts (unique angle or new information)
Engagement Factors (30 points):
- Shareability: 10 pts (will people send to family/friends?)
- Comment-worthiness: 10 pts (controversial or discussion-inducing?)
- Practical value: 10 pts (actionable information)
Retention Factors (30 points):
- Hook potential: 10 pts (compelling opening)
- Information density: 10 pts (value per minute)
- Narrative flow: 10 pts (story or logical progression)
View Prediction Formula
Estimated Views = Base_Audience × Topic_Multiplier × Quality_Factor × Trend_Factor
Where:
- Base_Audience: 5,000-15,000 (typical for established medical education channel)
- Topic_Multiplier: 0.5-10.0 (based on search volume and competition)
- Quality_Factor: 0.8-1.5 (based on production quality, assumed 1.0)
- Trend_Factor: 0.5-3.0 (based on current trending status)
Range Output:
- Minimum (conservative): Lower quartile estimate
- Expected (median): Most likely scenario
- Maximum (optimistic): Upper quartile with viral potentialResearch Tools & Techniques
Web Search Strategies
When researching topics, use these search patterns:
1. Trend identification:
- "[topic] latest research 2024"
- "most common questions about [topic]"
- "[topic] myths debunked"
2. Audience analysis:
- "reddit [topic] patient experience"
- "[topic] what to expect forum"
- "[topic] success stories"
3. Competition analysis:
- "[topic] youtube popular"
- "how to explain [topic] to patients"
- "[topic] doctor explains"
YouTube Comment Analysis Strategy
When the user provides a topic or video URL:
1. Search for top 5-10 videos on the topic 2. Analyze comment patterns for:
- Most frequently asked questions
- Common confusions or misconceptions
- Emotional reactions (fear, gratitude, skepticism)
- Requests for specific information
- Demographic clues (age, situation)
3. Categorize insights into:
- Knowledge gaps: What people don't understand
- Fears: What worries them
- Desires: What they hope to learn
- Trust signals: What builds credibility
Output Format
Content Idea Report
For each analyzed idea, provide:
## [Content Idea Title]
### 🎯 Viral Potential Score: [X/100]
**Predicted Performance**:
- Views: [min - expected - max]
- Like Ratio: [X%]
- AVD: [X:XX - Y:YY minutes]
- Shareability: [Low/Medium/High]
### 📊 Analysis
**Strengths**:
- [Key strength 1]
- [Key strength 2]
**Opportunities**:
- [Improvement area 1]
- [Improvement area 2]
**Market Insights**:
- Current search trends: [summary]
- Competition level: [Low/Medium/High]
- Audience demand: [description]
### 🎬 Content Blueprint
**Optimal Length**: [X-Y minutes]
**Video Structure**:
1. Hook (0:00-0:10): [specific suggestion]
2. Problem Setup (0:10-1:00): [what to cover]
3. Core Education (1:00-[X]:00): [main content]
4. Myth-Busting ([X]:00-[Y]:00): [misconceptions to address]
5. Practical Takeaways ([Y]:00-end): [actionable advice]
**Essential Subtopics** (in order of priority):
1. [Subtopic 1] - [why it matters for AVD]
2. [Subtopic 2] - [why it matters for AVD]
3. [Subtopic 3] - [why it matters for AVD]
**Knowledge Gaps to Address**:
- [Gap 1] - [source: YouTube comments/Reddit/forums]
- [Gap 2] - [source]
**Myths & Misconceptions**:
- [Myth 1] - [prevalence & why it persists]
- [Myth 2] - [prevalence & why it persists]
**Emotional Hooks**:
- Fear to address: [specific patient fear]
- Hope to provide: [specific positive outcome]
- Empowerment angle: [how viewers take control]
**SEO Recommendations**:
- Primary keyword: [keyword]
- Title suggestions:
1. [Title option 1]
2. [Title option 2]
3. [Title option 3]
- Thumbnail concept: [description]
### 🔥 Hot Take / Unique Angle
[One compelling angle that differentiates this from existing content]Trend Report
When analyzing current trends:
## 🚀 Trending Topics in [Niche]
### High Priority (Create ASAP)
1. **[Topic]** - Viral Score: [X/100]
- Why now: [reason for timeliness]
- Quick summary: [one-liner]
### Medium Priority (Plan for Next Month)
[Similar format]
### Emerging Trends (Watch Closely)
[Similar format]
### Seasonal Opportunities
[Upcoming events/seasons that create content opportunities]Best Practices
For Medical Education Content
1. Balance authority with accessibility: Use simple language but demonstrate expertise 2. Lead with empathy: Acknowledge fears and concerns first 3. Provide hope: Always include positive outcomes or management strategies 4. Be specific: Concrete examples outperform abstractions 5. Use visual analogies: Help patients visualize complex concepts 6. Address "why": Explain mechanisms, not just recommendations 7. Anticipate objections: Address common pushback or skepticism 8. Include patient stories: Anonymized cases increase retention 9. End with empowerment: Clear next steps or takeaways
AVD Optimization Tactics
1. Pattern interrupt every 60-90 seconds: Change visual, topic, or energy 2. Open loops: Tease information that comes later 3. Progress indicators: "Three things you need to know..." 4. Highlight surprising facts: "Most people don't know..." 5. Use conversational pacing: Speak as if to one person 6. Strategic repetition: Reinforce key points without being boring 7. Maintain momentum: Cut dead air and unnecessary transitions
Reference Files
- references/medical-content-patterns.md: Analysis of high-performing medical YouTube content patterns
- references/cardiology-keywords.md: SEO-optimized keywords for cardiology topics
- references/avd-tactics.md: Advanced retention strategies specific to educational content
When to Use Multiple Research Iterations
For content ideas scoring 85+: 1. Run initial analysis 2. Conduct deep competitive research 3. Search for recent medical publications 4. Analyze comment sections of top 5 competing videos 5. Check Reddit/forums for patient perspectives 6. Synthesize into comprehensive blueprint
This ensures the highest-potential ideas get the deepest analysis.
Advanced AVD (Average View Duration) Tactics
The Psychology of Retention
Attention Span Reality
- First 30 seconds: 80% retention (critical)
- 1-minute mark: 60-70% retention
- 2-minute mark: 50-60% retention
- 5-minute mark: 40-50% retention
- 10-minute mark: 30-40% retention
Goal: Keep viewers above these benchmarks through strategic content design.
The Hook Architecture
First 3 Seconds (The Scroll-Stopper)
Must answer: "Why should I stop scrolling?"
Effective Patterns:
- Shocking visual (before/after angiogram)
- Bold statement: "This mistake puts 1 in 3 people at risk"
- Urgent question: "Are you having a heart attack right now?"
- Pattern interrupt (unexpected sound, movement)
Seconds 4-10 (The Promise)
Must answer: "What will I learn?"
Structure: 1. State the problem clearly 2. Promise the solution/knowledge 3. Qualify the viewer ("If you've ever felt...")
Example: "Last week, three people came to my clinic thinking they had heartburn. All three were having heart attacks. In the next 8 minutes, I'll show you the exact signs they missed, so this never happens to you."
Seconds 11-30 (The Credibility Bridge)
Must answer: "Why should I trust you?"
Elements:
- Brief credential mention (interventional cardiologist)
- Number of patients treated
- Set expectations for video length
- Show visual preview of what's coming
Pattern Interrupts (Every 60-90 Seconds)
Visual Interrupts
- Switch camera angle
- Insert B-roll or graphics
- Show a different medical image
- Zoom in/out
- Change background
Auditory Interrupts
- Shift in vocal energy
- Brief pause for emphasis
- Background music change
- Sound effect (subtle)
Content Interrupts
- Start a new section/topic
- Ask a rhetorical question
- Share a surprising fact
- Reference something said earlier
- Preview what's coming next
Example Pattern (10-minute video):
- 0:00 - Hook
- 0:45 - First pattern interrupt (new section)
- 2:00 - Second interrupt (surprising statistic)
- 3:30 - Third interrupt (patient story)
- 5:00 - Fourth interrupt (myth-busting segment)
- 6:45 - Fifth interrupt (return to main point)
- 8:15 - Sixth interrupt (action steps)
- 9:30 - Summary and CTA
The Open Loop Technique
What It Is
Introducing a question or topic, then delaying the answer to create curiosity.
How to Use It
Early Loop Opening (first 30 seconds): "And later, I'll show you the one test that can predict your heart attack risk better than cholesterol—but first..."
Mid-Video Loops: "The third warning sign is the one that surprises people most—I'll get to that in just a moment..."
Multiple Loops: Layer 2-3 loops throughout the video, closing them strategically:
- Loop 1 (opened 0:30, closed 4:00)
- Loop 2 (opened 2:00, closed 6:30)
- Loop 3 (opened 5:00, closed 8:00)
Critical: Always close loops before video ends. Broken promises tank retention.
The Progress Indicator Strategy
Viewers stay when they know how much content remains and feel progress.
Explicit Progress
- "Three things you need to know. First..."
- "We're halfway through the five warning signs..."
- "Last point before I show you what to do..."
Visual Progress
- On-screen graphics showing progress (1 of 5, 2 of 5, etc.)
- Checklist that fills in
- Timeline graphic
Chapter Markers
- Use YouTube chapters to show clear structure
- Viewers can see they're making progress
- Helps them skip to most relevant part (better than leaving)
Information Density Management
The Goldilocks Principle
- Too sparse: Viewers feel time is wasted
- Too dense: Cognitive overload, viewers give up
- Just right: Steady value delivery with breathing room
Optimal Pacing for Medical Content
- New concept every 30-45 seconds: Main points
- Supporting detail every 15-20 seconds: Examples, explanations
- Transition every 60-90 seconds: Pattern interrupt
Value Markers
Explicitly mark value delivery:
- "Here's what's important..."
- "This is the key takeaway..."
- "Most doctors won't tell you this..."
- "This could save your life..."
The Curiosity Gap Method
Formula
Start with a question or partial information, then gradually reveal the answer.
Weak: "Chest pain can indicate a heart attack." Strong: "Why do some heart attacks cause no chest pain at all? The answer reveals a critical blind spot in how we think about heart attacks..."
Layering Curiosity
1. Surface question: What are the symptoms? 2. Deeper question: Why do symptoms vary so much? 3. Unexpected angle: What do symptoms tell us about mechanism? 4. Practical application: How can you use this knowledge?
The Narrative Arc
Even in educational content, story structure drives retention.
Three-Act Structure
Act 1 - Setup (0-20% of video):
- Introduce the problem
- Make it personal/relatable
- Set stakes (what happens if they don't know this?)
Act 2 - Confrontation (20-80% of video):
- Dive into the complexity
- Challenge misconceptions
- Build understanding progressively
- Include obstacles or nuances
Act 3 - Resolution (80-100% of video):
- Synthesize information
- Provide clear action steps
- Leave viewer empowered
- Call to action
Mini-Stories Within the Arc
Patient Vignettes (30-60 seconds each):
- Introduce specific case
- Show the problem
- Reveal the insight
- Connect to broader lesson
Example: "I remember a 52-year-old marathon runner who came in. She was the healthiest person in her family—or so she thought. Her calcium score was 400. Here's why fitness alone isn't enough..."
The Surprise & Delight Strategy
Types of Surprises That Work
Statistical Surprises: "You'd think cholesterol would be the best predictor. But studies show this other marker is twice as accurate..."
Mechanism Surprises: "Most people think blocked arteries are like clogged pipes. The reality is far more dynamic—and that changes everything about prevention..."
Treatment Surprises: "Doctors used to recommend complete bed rest after a heart attack. Now we know that's dangerous. Here's why..."
Frequency of Surprises
- Major surprise: Every 2-3 minutes
- Minor interesting fact: Every 45-60 seconds
- Reinforces that video is worth watching
The Anticipation Builder
Future Pacing
Reference what's coming to build anticipation:
- "In a moment, I'll show you the imaging that reveals this..."
- "Wait until you see what happens when..."
- "The most important part is coming up..."
Visual Previews
Show quick flashes of compelling visuals that will appear later:
- Dramatic medical imaging
- Before/after results
- Key diagrams
The Callback Technique
Reference earlier content to create cohesion and reward attention.
Simple Callback: "Remember that calcium score I mentioned earlier? Here's where it becomes critical..."
Callback with New Context: "Earlier I showed you that angiogram with 90% blockage. Now let me show you what we can do about it..."
Layered Callbacks: Build a throughline by referencing multiple earlier points: "So we've talked about symptoms, risk factors, and testing. All of this comes together when we look at prevention..."
The Cliffhanger Close
End the video in a way that promotes next video consumption.
Types of Cliffhangers
Series Setup: "In the next video, I'll show you exactly how to interpret your cholesterol results..."
Related Topic Tease: "Now that you understand stents, you might be wondering about bypass surgery. I cover that in detail here..." [end screen]
Question Hook: "But what if you've already had a heart attack? That changes everything. Let me show you..." [end screen]
Specific Tactics for Educational Content
The Teaching Progression
1. Concrete Before Abstract: Start with specific examples, then generalize:
- Bad: "Atherosclerosis is a complex inflammatory process..."
- Good: "Imagine trying to push water through a hose filled with sludge. That's what's happening in blocked arteries. Here's how it builds up..."
2. Simple Before Complex: Build understanding in layers:
- Layer 1: Basic mechanism
- Layer 2: Why it matters
- Layer 3: Complications and nuances
- Layer 4: What you can do about it
3. Known Before Unknown: Connect new information to what viewers already know: "You know how a car engine needs clean oil to run smoothly? Your heart needs clean arteries in much the same way..."
The "Aha Moment" Engineering
Create moments of insight that feel rewarding:
Setup → Tension → Release:
- Setup: "Everyone focuses on lowering LDL cholesterol..."
- Tension: "But what if your LDL is low and you still have plaque?"
- Release: "That's because it's not just the amount, it's the type of LDL particle that matters..."
Retention Killers to Avoid
Dead Time
- Long intros before value delivery
- Excessive thanking/housekeeping
- Repetition without new insight
- Slow transitions between points
- Rambling tangents
Confusion
- Unexplained jargon
- Too many concepts too fast
- Unclear structure
- Contradictory information without explanation
Disappointment
- Promising more than you deliver
- Clickbait titles that don't match content
- Opening loops that never close
- Vague or obvious conclusions
Discomfort
- Overly graphic medical imagery
- Fear-mongering without solutions
- Condescending tone
- Making viewers feel stupid for not knowing
Advanced Metrics to Track
Audience Retention Graph Analysis
Spikes (increased engagement):
- Mark what content caused the spike
- Replicate these patterns in future videos
- Common spike causes: surprising info, visual reveals, story payoffs
Drops (viewers leaving):
- Identify exactly when and why
- Common drop points: after promise delivered, during slow sections, at confusion points
- Redesign those sections for next video
Relative Retention
Compare your video's retention to similar-length videos on YouTube:
- Above average: You're doing something right, analyze what
- Average: Room for improvement
- Below average: Critical issues to address
The 80/20 of AVD
If you can only focus on a few tactics, prioritize these:
1. Nail the first 30 seconds (promise + credibility + preview) 2. Pattern interrupt every 60-90 seconds (visual, auditory, or content) 3. Open at least one loop in first minute, close it midway 4. Use progress indicators (viewers need to see progress) 5. End strong (summarize value, provide action, tease next video)
These five tactics alone will put you in the top 20% of retention.
Cardiology Keywords for SEO Optimization
Primary Keywords (High Volume, High Intent)
Conditions & Symptoms
- heart attack symptoms
- chest pain causes
- heart palpitations
- high blood pressure
- atrial fibrillation (afib)
- heart failure symptoms
- coronary artery disease
- heart murmur
- irregular heartbeat
- angina symptoms
Procedures & Treatments
- cardiac stent
- bypass surgery (CABG)
- angioplasty
- heart catheterization
- pacemaker
- defibrillator (ICD)
- ablation procedure
- stress test
- echocardiogram (echo)
- cardiac CT scan
Tests & Diagnostics
- ECG/EKG
- troponin test
- cholesterol levels
- lipid panel
- cardiac calcium score
- holter monitor
- event recorder
- treadmill test
- nuclear stress test
Medications
- beta blockers
- statins
- blood thinners
- ACE inhibitors
- aspirin for heart
- warfarin vs eliquis
- metoprolol
- atorvastatin
Long-Tail Keywords (Lower Volume, Higher Conversion)
Patient Questions
- "what does a heart attack feel like"
- "can you have a heart attack without chest pain"
- "how long does angioplasty take"
- "heart stent recovery time"
- "afib stroke risk"
- "when to go to er for chest pain"
- "heart attack vs anxiety attack"
- "can stress cause heart attack"
- "what is a good cholesterol level"
- "side effects of blood thinners"
Comparison Searches
- "stent vs bypass surgery"
- "eliquis vs xarelto"
- "stress test vs calcium score"
- "heart attack vs cardiac arrest"
- "angina vs heart attack"
- "systolic vs diastolic blood pressure"
How-To Queries
- "how to lower cholesterol"
- "how to prevent heart disease"
- "how to read an ecg"
- "how to take blood pressure"
- "how to recover from heart attack"
Keyword Clusters for Topic Authority
Cluster 1: Heart Attack
- Core: heart attack
- Supporting: myocardial infarction, heart attack symptoms, silent heart attack, heart attack in women, heart attack vs cardiac arrest, mini heart attack, heart attack recovery, heart attack prevention
Cluster 2: Cholesterol
- Core: cholesterol
- Supporting: LDL cholesterol, HDL cholesterol, triglycerides, cholesterol levels, lower cholesterol, statins, cholesterol diet, cholesterol medication, cholesterol ratio
Cluster 3: AFib
- Core: atrial fibrillation
- Supporting: afib symptoms, afib treatment, afib ablation, afib stroke risk, afib medication, paroxysmal afib, persistent afib, rate control vs rhythm control
Cluster 4: Interventional Procedures
- Core: cardiac catheterization
- Supporting: angioplasty, stent, coronary angiogram, PCI, radial access, femoral access, drug eluting stent, restenosis
Local SEO Keywords (If Applicable)
- "interventional cardiologist [city]"
- "heart doctor near me"
- "cardiac catheterization [city]"
- "best cardiologist [city]"
Trending Keywords (Check Regularly)
Current Trends (2024-2025)
- "ozempic heart benefits"
- "covid and heart damage"
- "heart disease in young people"
- "SGLT2 inhibitors"
- "coronary calcium score"
- "heart rate variability"
- "watchman device"
- "tavr procedure"
Keyword Integration Best Practices
Title Optimization:
- Primary keyword in first 5 words
- Keep under 60 characters
- Natural language (don't keyword stuff)
- Include numbers when possible
Description Optimization:
- Primary keyword in first sentence
- Include 2-3 related keywords naturally
- Use keyword variants
- Include timestamps with keyword-rich chapter titles
Tags:
- Use 8-12 tags
- Mix primary and long-tail keywords
- Include misspellings/variants (afib, a-fib, a fib)
- Add broader category tags (cardiology, heart health)
Closed Captions:
- Speak keywords naturally in video
- Correct auto-generated captions for keyword accuracy
- Repeat key terms 3-5 times throughout video
Keyword Difficulty Assessment
Low Competition (easier to rank):
- Specific procedure recovery times
- Medication-specific questions
- Symptom combinations
- Local searches
Medium Competition:
- Common condition overviews
- General treatment information
- Comparison topics
- "How to" queries
High Competition (harder to rank, but high reward):
- Single-word conditions (e.g., "diabetes")
- Broad symptoms (e.g., "chest pain")
- Generic prevention (e.g., "heart health")
- Mainstream wellness topics
Voice Search Optimization
People ask voice assistants full questions. Target these patterns:
- "What is [condition]?"
- "How do I know if [symptom]?"
- "What causes [condition]?"
- "When should I see a doctor for [symptom]?"
- "Is [symptom] serious?"
- "What's the difference between [A] and [B]?"
Seasonal Keyword Opportunities
January: new year health goals, heart healthy resolutions February: American Heart Month, heart disease awareness March: women's history (women and heart disease) September: AFib awareness month November-December: holiday heart health, stress and heart Year-round: condition-specific awareness months
Negative Keywords (Avoid or Use Carefully)
These may trigger incorrect assumptions or violate medical advertising guidelines:
- "cure" (unless referencing specific curable conditions)
- "guaranteed results"
- "miracle treatment"
- "secret" (can sound clickbaity)
- Competitor medication names (unless doing fair comparison)
Keyword Research Tools to Use
- Google Trends (trending topics)
- YouTube Search Suggest (type partial query, see completions)
- Google Search Console (what you already rank for)
- Answer the Public (question-based keywords)
- Reddit search (real patient language)
Keyword Performance Metrics to Track
- Impressions (how often you appear in search)
- Click-through rate (CTR) - aim for >10%
- Average view duration from search traffic
- Conversion to subscribers from keyword traffic
- Top performing keywords monthly
High-Performing Medical YouTube Content Patterns
Analysis of Top Medical Education Channels
Common Success Factors
Video Length Sweet Spots:
- Quick explainers: 3-5 minutes (symptom recognition, quick tips)
- Standard education: 8-12 minutes (condition overview, treatment options)
- Deep dives: 15-20 minutes (complex procedures, comprehensive guides)
- Avoid: 5-8 minute range (too long for quick info, too short for depth)
Title Patterns That Perform: 1. Question format: "Why Does [Condition] Happen?" (curiosity-driven) 2. Contrarian: "Doctors Don't Want You to Know..." (intrigue, though use carefully) 3. Urgency: "7 Warning Signs of [Condition] You Shouldn't Ignore" 4. Demystification: "What Actually Happens During [Procedure]" 5. Patient perspective: "What to Expect: [Condition/Procedure]" 6. Myth-busting: "The Truth About [Common Belief]"
Hook Structures (First 10 Seconds)
Pattern 1: Shocking Statistic "Every 40 seconds, someone in America has a heart attack. But here's what most people don't know about the warning signs..."
Pattern 2: Personal Story Opening "Last week, a 45-year-old patient came to my clinic thinking he had heartburn. It was actually a heart attack. Here's how to tell the difference..."
Pattern 3: Direct Question "Could you be having a heart attack right now and not know it? Today I'm going to show you the signs that don't feel like chest pain..."
Pattern 4: Myth-Bust Opening "You've probably heard that heart attacks always cause severe chest pain. That's wrong, and this misconception costs lives. Let me explain..."
Thumbnail Strategies for Medical Content
High-CTR Elements:
- Before/after visuals (angiograms, ECGs with clear difference)
- Medical professional in frame (builds trust)
- Bold, readable text (3-5 words max)
- Visual metaphors (blocked artery shown as traffic jam)
- Emotional faces (concerned but hopeful, not scary)
- Color coding: Red/yellow for warnings, green/blue for solutions
Avoid:
- Graphic medical imagery (can reduce CTR due to squeamishness)
- Too much text (won't read on mobile)
- Stock photos without personalization
- Generic "doctor at desk" shots
Content Structure for Maximum Retention
The 3-Act Structure:
Act 1 (0:00-1:30): Problem & Promise
- Hook with relatable scenario or shocking fact
- State the problem clearly
- Promise what they'll learn/gain
- Build credibility quickly
Act 2 (1:30-[Length-2:00]): Education & Engagement
- Chunk information into 3-5 main points
- Use analogies for complex concepts
- Include mini-stories or case examples
- Address common misconceptions
- Pattern interrupts every 60-90 seconds
Act 3 (Final 2:00): Summary & Action
- Quick recap of key points
- Empower with actionable steps
- Clear call-to-action (subscribe, related video, talk to doctor)
- Leave on hopeful/positive note
Topic Categories by Performance
Consistently High Performers: 1. Early warning signs/symptom recognition 2. "What actually happens during [procedure]" 3. Risk factors for major conditions 4. Medication explanations (what it does, side effects) 5. Lifestyle interventions with immediate impact 6. Myth-busting common health beliefs 7. Test result interpretation
Moderate Performers: 1. Anatomy/physiology deep dives 2. Technical procedure explanations 3. Research paper breakdowns 4. Medical history/evolution of treatments
Underperformers (unless trending or novel): 1. Generic wellness tips 2. Overly technical content without clear patient benefit 3. Topics already saturated with similar content 4. Purely theoretical discussions
Cardiology-Specific High Performers
Proven Winners:
- "Signs of a heart attack that aren't chest pain"
- "Cholesterol explained: What your numbers really mean"
- "Stent vs Bypass: Which is better?"
- "Can you reverse heart disease?"
- "Blood pressure medications: Which one is right for you?"
- "AFib explained: Why it matters and what to do"
- "Heart attack vs cardiac arrest vs heart failure" (comparison videos)
Emerging Topics (growing interest):
- SGLT2 inhibitors for heart failure
- Watchman device for AFib
- Coronary calcium scores
- Heart disease in women (different symptoms)
- Young people and heart disease (rising concern)
Engagement Drivers
Comment-Generating Elements:
- Ask specific questions in the video
- Present controversial (but evidence-based) positions
- Share surprising statistics or findings
- Invite viewers to share their experiences
- Address viewer questions from previous videos
Share-Inducing Elements:
- Information family members need to know
- Potentially life-saving warning signs
- Myth-busting that corrects common mistakes
- Empowering information for patient advocacy
- Clear, actionable advice
Seasonal Content Opportunities
Q1 (Jan-Mar):
- New Year's health goals (heart-healthy habits)
- Post-holiday heart health recovery
- American Heart Month (February)
- Spring allergy vs heart symptoms
Q2 (Apr-Jun):
- Pre-summer fitness safety (exercise and heart)
- Traveling with heart conditions
- Father's Day heart health awareness
Q3 (Jul-Sep):
- Heat and heart health
- Back-to-school stress management
- September is AFib Awareness Month
Q4 (Oct-Dec):
- Cold weather and heart attacks
- Holiday stress and heart health
- End-of-year insurance/health planning
- Flu shots and heart disease
Algorithm-Friendly Practices
Maximize Watch Time:
- Front-load value (don't bury the lead)
- Use chapter markers for easy navigation
- Create series/playlists for binge-watching
- End screens that direct to related content
- Consistent upload schedule
Boost Click-Through Rate:
- A/B test thumbnails and titles
- Use numbers in titles ("5 Signs...", "3 Types...")
- Create curiosity gap (but deliver on promise)
- Leverage current events/trends when relevant
Encourage Engagement:
- Pin a thoughtful comment to start discussion
- Respond to comments consistently
- Create community posts between uploads
- Use polls to guide future content
#!/usr/bin/env python3
"""
Analyze content ideas from text and generate viral potential scores.
This script provides the computational backbone for scoring content ideas.
"""
import re
import json
from typing import List, Dict, Tuple
from dataclasses import dataclass
from enum import Enum
class EmotionalTrigger(Enum):
FEAR = "fear"
HOPE = "hope"
CURIOSITY = "curiosity"
EMPOWERMENT = "empowerment"
RELIEF = "relief"
SURPRISE = "surprise"
@dataclass
class ContentIdea:
title: str
description: str
category: str
emotional_triggers: List[EmotionalTrigger]
keywords: List[str]
viral_score: float = 0.0
def to_dict(self):
return {
'title': self.title,
'description': self.description,
'category': self.category,
'emotional_triggers': [t.value for t in self.emotional_triggers],
'keywords': self.keywords,
'viral_score': self.viral_score
}
class ViralScorer:
"""Calculate viral potential scores for content ideas."""
# High-value keywords in medical content
HIGH_VALUE_KEYWORDS = [
'warning signs', 'symptoms', 'causes', 'treatment', 'prevent',
'diagnosis', 'risk factors', 'what to expect', 'how to', 'vs',
'truth about', 'myths', 'misconceptions', 'actually happens',
'don\'t know', 'should know', 'need to know'
]
# Emotional trigger keywords
EMOTIONAL_KEYWORDS = {
EmotionalTrigger.FEAR: ['warning', 'danger', 'risk', 'serious', 'emergency', 'fatal', 'deadly'],
EmotionalTrigger.HOPE: ['recover', 'cure', 'prevent', 'better', 'improve', 'heal', 'reverse'],
EmotionalTrigger.CURIOSITY: ['why', 'how', 'what', 'secret', 'surprising', 'unknown', 'discover'],
EmotionalTrigger.EMPOWERMENT: ['you can', 'take control', 'manage', 'yourself', 'understand', 'know'],
EmotionalTrigger.RELIEF: ['explain', 'normal', 'common', 'okay', 'not alone', 'understand'],
EmotionalTrigger.SURPRISE: ['actually', 'really', 'truth', 'fact', 'surprising', 'myth', 'believe']
}
def __init__(self):
self.base_score = 50 # Start from middle
def detect_emotional_triggers(self, text: str) -> List[EmotionalTrigger]:
"""Detect emotional triggers in text."""
text_lower = text.lower()
triggers = []
for trigger, keywords in self.EMOTIONAL_KEYWORDS.items():
if any(keyword in text_lower for keyword in keywords):
triggers.append(trigger)
return triggers
def extract_keywords(self, text: str) -> List[str]:
"""Extract relevant keywords from text."""
text_lower = text.lower()
found_keywords = []
for keyword in self.HIGH_VALUE_KEYWORDS:
if keyword in text_lower:
found_keywords.append(keyword)
return found_keywords
def score_topic_factors(self, idea: ContentIdea) -> float:
"""Score topic-related factors (40 points max)."""
score = 0.0
# Search demand (15 pts) - based on keywords
high_value_count = len(idea.keywords)
score += min(high_value_count * 3, 15)
# Emotional resonance (10 pts) - based on triggers
emotional_count = len(idea.emotional_triggers)
score += min(emotional_count * 2.5, 10)
# Timeliness (10 pts) - check for trending keywords
trending_keywords = ['2024', '2025', 'new', 'recent', 'latest', 'update', 'current']
has_trending = any(kw in idea.title.lower() or kw in idea.description.lower()
for kw in trending_keywords)
score += 8 if has_trending else 5
# Novelty (5 pts) - check for unique angles
novelty_keywords = ['secret', 'hidden', 'surprising', 'truth', 'actually', 'don\'t know']
has_novelty = any(kw in idea.title.lower() or kw in idea.description.lower()
for kw in novelty_keywords)
score += 5 if has_novelty else 2
return min(score, 40)
def score_engagement_factors(self, idea: ContentIdea) -> float:
"""Score engagement-related factors (30 points max)."""
score = 0.0
text_combined = f"{idea.title} {idea.description}".lower()
# Shareability (10 pts) - family-relevant content
shareable_terms = ['family', 'loved ones', 'parents', 'children', 'everyone',
'warning', 'important', 'need to know']
shareability = sum(1 for term in shareable_terms if term in text_combined)
score += min(shareability * 2, 10)
# Comment-worthiness (10 pts) - discussion-inducing
discussion_terms = ['controversial', 'debate', 'opinion', 'experience', 'vs',
'better', 'worse', 'should', 'myth']
discussion_value = sum(1 for term in discussion_terms if term in text_combined)
score += min(discussion_value * 2, 10)
# Practical value (10 pts) - actionable content
action_terms = ['how to', 'what to do', 'steps', 'guide', 'prevent',
'manage', 'treatment', 'cure']
practical_value = sum(1 for term in action_terms if term in text_combined)
score += min(practical_value * 2, 10)
return min(score, 30)
def score_retention_factors(self, idea: ContentIdea) -> float:
"""Score retention-related factors (30 points max)."""
score = 0.0
text_combined = f"{idea.title} {idea.description}".lower()
# Hook potential (10 pts) - compelling opening possibilities
hook_terms = ['shocking', 'surprising', 'warning', 'don\'t know', 'secret',
'truth', 'what really', 'actually']
hook_value = sum(1 for term in hook_terms if term in text_combined)
score += min(hook_value * 2.5, 10)
# Information density (10 pts) - value per minute potential
# Check for numbered lists, multiple subtopics
has_numbers = bool(re.search(r'\d+\s+(signs|symptoms|ways|steps|types|causes)', text_combined))
has_multiple_aspects = len(text_combined.split()) > 20 # Longer descriptions suggest depth
score += 5 if has_numbers else 2
score += 5 if has_multiple_aspects else 3
# Narrative flow (10 pts) - story potential
narrative_terms = ['story', 'case', 'patient', 'experience', 'journey',
'before', 'after', 'what happened']
has_narrative = any(term in text_combined for term in narrative_terms)
# Medical content naturally has clear progression (symptoms -> diagnosis -> treatment)
medical_progression = any(term in text_combined for term in ['diagnosis', 'treatment', 'recovery'])
score += 6 if has_narrative else 3
score += 4 if medical_progression else 2
return min(score, 30)
def calculate_viral_score(self, idea: ContentIdea) -> float:
"""Calculate total viral score (0-100)."""
topic_score = self.score_topic_factors(idea)
engagement_score = self.score_engagement_factors(idea)
retention_score = self.score_retention_factors(idea)
total = topic_score + engagement_score + retention_score
return round(total, 1)
class ContentAnalyzer:
"""Main content analysis engine."""
def __init__(self):
self.scorer = ViralScorer()
def parse_content_ideas(self, text: str) -> List[ContentIdea]:
"""Parse content ideas from text (bullet points, numbered lists, etc.)."""
ideas = []
# Split by common delimiters
lines = text.strip().split('\n')
current_idea = None
current_description = []
for line in lines:
line = line.strip()
if not line:
continue
# Check if this is a new idea (starts with number, bullet, or is a heading)
is_new_idea = (
re.match(r'^\d+[\.)]\s+', line) or # "1. " or "1) "
re.match(r'^[-*•]\s+', line) or # "- " or "* " or "• "
re.match(r'^#+\s+', line) or # "## " (markdown heading)
(len(line) < 100 and current_idea is None) # Short line, possibly a title
)
if is_new_idea:
# Save previous idea if exists
if current_idea:
idea_obj = self._create_content_idea(current_idea, ' '.join(current_description))
ideas.append(idea_obj)
# Start new idea
current_idea = re.sub(r'^(\d+[\.)]\s+|[-*•#]\s+)', '', line)
current_description = []
else:
# This is a continuation/description
current_description.append(line)
# Don't forget the last idea
if current_idea:
idea_obj = self._create_content_idea(current_idea, ' '.join(current_description))
ideas.append(idea_obj)
return ideas
def _create_content_idea(self, title: str, description: str) -> ContentIdea:
"""Create a ContentIdea object from title and description."""
combined_text = f"{title} {description}"
# Detect emotional triggers
triggers = self.scorer.detect_emotional_triggers(combined_text)
# Extract keywords
keywords = self.scorer.extract_keywords(combined_text)
# Determine category (basic categorization)
category = self._categorize_content(combined_text)
# Create idea object
idea = ContentIdea(
title=title,
description=description,
category=category,
emotional_triggers=triggers,
keywords=keywords
)
# Calculate viral score
idea.viral_score = self.scorer.calculate_viral_score(idea)
return idea
def _categorize_content(self, text: str) -> str:
"""Categorize content based on keywords."""
text_lower = text.lower()
if any(word in text_lower for word in ['procedure', 'surgery', 'operation', 'stent', 'bypass']):
return 'Procedures & Treatments'
elif any(word in text_lower for word in ['symptom', 'sign', 'warning', 'recognize']):
return 'Symptoms & Diagnosis'
elif any(word in text_lower for word in ['prevent', 'risk', 'lifestyle', 'diet', 'exercise']):
return 'Prevention & Risk Factors'
elif any(word in text_lower for word in ['medication', 'drug', 'pill', 'prescription']):
return 'Medications'
elif any(word in text_lower for word in ['test', 'scan', 'ecg', 'echo', 'mri', 'ct']):
return 'Tests & Diagnostics'
elif any(word in text_lower for word in ['myth', 'truth', 'misconception', 'believe']):
return 'Myths & Facts'
else:
return 'General Education'
def analyze_and_rank(self, text: str, top_n: int = None) -> List[ContentIdea]:
"""Analyze content and return ranked ideas."""
ideas = self.parse_content_ideas(text)
# Sort by viral score (descending)
ideas.sort(key=lambda x: x.viral_score, reverse=True)
if top_n:
return ideas[:top_n]
return ideas
def main():
"""Example usage of the content analyzer."""
import sys
if len(sys.argv) < 2:
print("Usage: python analyze_content_ideas.py <text_file>")
print("Or provide text via stdin")
text = sys.stdin.read()
else:
with open(sys.argv[1], 'r', encoding='utf-8') as f:
text = f.read()
analyzer = ContentAnalyzer()
ideas = analyzer.analyze_and_rank(text)
# Output as JSON
output = {
'total_ideas': len(ideas),
'ideas': [idea.to_dict() for idea in ideas]
}
print(json.dumps(output, indent=2))
if __name__ == '__main__':
main()