content-angle-ranker — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited content-angle-ranker (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You have a keyword. You know the niche. But what specific content should you create? Which angle, format, and hook will actually perform? This skill answers that question with data — not gut feeling.
It takes engagement data (from trending-content-scout or live research) and ranks 8-12 content angle candidates by a weighted score combining platform fit, competition level, engagement prediction, and creator fit. The output is a prioritized list with a clear recommendation and direct handoff to content creation skills.
Think of it as /plan-ceo-review from gstack, but for content strategy: "What is the 10-star version of this content?" — except the answer is backed by engagement data.
This skill belongs to Stage S1: Research — but it bridges directly into S2: Content Creation.
trending-content-scout ran — use its data to pick the best anglekeyword: string # (required if no scout_data) "AI video tools"
product: object # (optional) Affiliate product being promoted
name: string # "HeyGen"
description: string # What it does
url: string # Product URL or affiliate link
reward_value: string # Commission info — never shown in content
platform: string # (required) Target platform for content creation
# "youtube" | "tiktok" | "linkedin" | "x" | "reddit" | "blog"
creator_strengths: string[] # (optional) What the user is good at
# "storytelling" | "technical" | "humor" | "authority" |
# "visual" | "data" | "personal_experience"
audience: string # (optional) Target audience — "beginners", "developers", "small business owners"
time_budget: string # (optional) "30min" | "2hours" | "1day" — affects difficulty filter
custom_angles: string[] # (optional) User's own angle ideas to include in rankingAuto-detection: If trending-content-scout ran earlier in the conversation, its output is automatically used as the data foundation. No need to pass it explicitly.
If `trending-content-scout` output exists in context:
pattern_analysis (winning formats, hooks, engagement benchmarks)content_gaps as angle candidatestop_content for competition assessmentIf no scout data: Run a quick scout internally:
web_search "[keyword] site:youtube.com" → top 10 videos, note formats and view countsweb_search "[keyword] site:tiktok.com" OR web_search "[keyword] tiktok viral" → top TikTok contentweb_search "[keyword] site:reddit.com top" → top Reddit discussionsweb_search "[keyword] [platform] best performing" → meta-analysis of what worksThis takes 30-60 seconds and provides enough signal for angle scoring.
Generate 8-12 specific content angle candidates. Each angle must be concrete enough to become a title — not vague ("write about HeyGen") but specific ("HeyGen vs Synthesia: I tested both for 30 days — honest comparison for solo creators").
Sources for angles:
For each angle, define:
Angle:
title: string # Specific, could be an actual content title
angle: string # Brief description of the angle
format: string # "comparison" | "review" | "tutorial" | "listicle" | "demo" | "story" | "reaction" | "explainer"
hook: string # The actual hook/opening line
hook_type: string # "question" | "shock" | "bold_claim" | "demo_first" | "relatable" | "contrarian"
source: string # "gap" | "pattern" | "contrarian" | "user_provided"Score every angle on 4 dimensions (1-10 each), then calculate a weighted total:
angle_score = (platform_fit × 0.25) + (competition_level × 0.30) +
(engagement_prediction × 0.30) + (creator_fit × 0.15)Dimension 1: Platform Fit (weight: 25%)
How well does this format/hook work on the target platform?
| Format | YouTube | TikTok | X | Blog | ||
|---|---|---|---|---|---|---|
| comparison | 9 | 8 | 7 | 5 | 8 | 9 |
| review | 8 | 6 | 5 | 4 | 9 | 9 |
| tutorial | 9 | 7 | 6 | 3 | 7 | 10 |
| listicle | 7 | 8 | 9 | 8 | 6 | 8 |
| demo | 8 | 10 | 5 | 4 | 3 | 5 |
| story | 6 | 9 | 10 | 8 | 7 | 7 |
| reaction | 7 | 10 | 4 | 6 | 5 | 3 |
| explainer | 8 | 5 | 8 | 6 | 8 | 9 |
Adjust based on actual scout data if available (if comparisons outperform on a platform where they usually don't, use the real data instead of the default table).
Dimension 2: Competition Level (weight: 30%)
How many similar content pieces already exist? Higher score = LESS competition.
IF scout data available:
Count how many top_content pieces match this angle's format + similar topic
10 = zero similar content found (blue ocean)
7-9 = 1-3 similar pieces (low competition)
4-6 = 4-10 similar pieces (moderate competition)
1-3 = 10+ similar pieces (saturated)
IF no scout data:
web_search for the exact angle title → count results
Fewer results with exact match = higher scoreDimension 3: Engagement Prediction (weight: 30%)
How likely is this angle to get high engagement based on data?
IF scout data available:
Look at engagement scores of similar formats and hooks in top_content
If this angle's format has avg_engagement > median → higher score
If this angle's hook_type has avg_engagement > median → higher score
Combine: angle uses top format + top hook → 9-10
Angle uses average format + average hook → 5-6
Angle uses underperforming format → 3-4
IF no scout data:
Use platform defaults and general engagement patterns
Comparisons generally outperform reviews → 8 vs 6
Bold claim hooks generally outperform questions → 8 vs 6Dimension 4: Creator Fit (weight: 15%)
How well does this angle match the creator's strengths?
IF creator_strengths provided:
"storytelling" → story format, relatable hooks → high fit
"technical" → tutorial format, demo hooks → high fit
"humor" → reaction format, relatable hooks → high fit
"authority" → review format, bold claim hooks → high fit
"visual" → demo format, demo_first hooks → high fit
"data" → comparison format, explainer → high fit
"personal_experience" → story format, reaction → high fit
Match count: 2+ matches → 9-10, 1 match → 6-7, 0 matches → 4-5
IF no creator_strengths:
Default all angles to 7 (neutral)Sort angles by angle_score descending.
For each angle, estimate:
difficulty: string # "easy" | "medium" | "hard"
estimated_time: string # "30 min" | "1-2 hours" | "half day" | "full day"Difficulty mapping:
If time_budget is provided, flag angles that exceed the budget.
Before presenting output, verify:
If any check fails, fix the output before delivering. Do not flag the checklist to the user.
output_schema_version: "1.0.0"
keyword: string
platform: string
data_source: string # "trending-content-scout output" | "quick web_search scan"
angles_generated: number # 8-12
top_angle:
title: string
angle: string
format: string
hook: string
hook_type: string
score: number
why: string # data-backed reasoning
difficulty: string
estimated_time: string
all_angles:
- title: string
angle: string
format: string
hook: string
hook_type: string
platform_fit: number
competition_level: number
engagement_prediction: number
creator_fit: number
score: number
difficulty: string
estimated_time: string
source: string # "gap" | "pattern" | "contrarian" | "user_provided"
recommended_next_skill: string # "viral-post-writer" | "tiktok-script-writer" | etc.
recommended_skill_params: # ready-to-use parameters for the next skill
format: string
hook_style: string
angle: string## Content Angle Ranker: [Keyword] on [Platform]
### Data Foundation
📊 Based on: [trending-content-scout output (20 pieces analyzed) | quick web_search scan]
---
### 🥇 #1 Recommended Angle — Score: [X.X]/10
**"[Specific Title]"**
| Dimension | Score | Evidence |
|-----------|-------|----------|
| Platform Fit | X/10 | [Format] works well on [Platform] — [data point] |
| Competition | X/10 | [Number] similar pieces exist — [assessment] |
| Engagement Prediction | X/10 | [Format] + [hook] averages [X] engagement in this niche |
| Creator Fit | X/10 | Matches your strengths in [X] |
| **Total** | **X.X/10** | |
- **Format:** [comparison] | **Hook:** [bold_claim]
- **Opening line:** "[Actual hook sentence]"
- **Difficulty:** [medium] | **Time:** [1-2 hours]
- **Why this wins:** [2-3 sentences of data-backed reasoning]
---
### 🥈 #2 — "[Title]" — Score: [X.X]/10
- Format: [X] | Hook: [X] | Competition: [X/10] | Time: [X]
- **Why:** [1 sentence]
### 🥉 #3 — "[Title]" — Score: [X.X]/10
- Format: [X] | Hook: [X] | Competition: [X/10] | Time: [X]
- **Why:** [1 sentence]
---
### All Angles Ranked
| # | Title | Format | Hook | Plat. Fit | Comp. | Eng. Pred. | Creator | Score | Time |
|---|-------|--------|------|-----------|-------|------------|---------|-------|------|
| 1 | ... | comparison | bold_claim | 9 | 8 | 9 | 8 | 8.7 | 2h |
| 2 | ... | demo | demo_first | 10 | 7 | 8 | 7 | 8.0 | 1h |
| 3 | ... | story | relatable | 9 | 6 | 7 | 9 | 7.5 | 1h |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
---
### ⚡ Quick Win vs Best Bet
| Strategy | Angle | Score | Time | Best For |
|----------|-------|-------|------|----------|
| **Quick Win** | [Easiest high-scoring angle] | X.X | 30min | "I want to ship something today" |
| **Best Bet** | [Highest scoring angle] | X.X | 2h | "I want the best possible content" |
| **Contrarian** | [Highest-scoring contrarian] | X.X | Xh | "I want to stand out from everyone" |
---
### 🚀 Next Steps
**To create Angle #1:**Skill: [viral-post-writer | tiktok-script-writer | affiliate-blog-builder] Parameters: product: [product name] format: [comparison] hook_style: [bold_claim] angle: "[specific angle description]" platform: [platform]
**Alternative paths:**
- `tiktok-script-writer` — for short-form video version of Angle #1
- `content-pillar-atomizer` — create a blog post, then atomize across all platforms
- `comparison-post-writer` — if the winning angle is a comparisonExample 1: User: "I want to promote HeyGen on TikTok. What angle should I use?" → keyword: "HeyGen", platform: "tiktok" → Quick scout: web_search "HeyGen tiktok" → mostly demo-first content, 30-45s → Generate 10 angles: "HeyGen vs Synthesia comparison", "I made a $2000 video for free with HeyGen", "POV: your boss asks for a video and you use AI", "HeyGen for real estate agents", etc. → Top angle: "I replaced a $2000 video production with HeyGen" — Score: 8.7 (bold_claim hook, demo format, low competition on TikTok, high engagement predicted) → Next: tiktok-script-writer with hook_style: bold_claim, duration: 45s
Example 2: User: "Rank these content ideas for my YouTube channel about email marketing:
→ platform: "youtube", custom_angles provided → Scout YouTube for email marketing content → Score all 3 + generate 5 additional angles → Result: "How I grew to 10K" scores highest (story format + bold_claim = 8.5) because competition for comparisons is saturated (score: 6.2) and listicles are average (7.1) → The user's story angle wins — with a suggested hook: "I went from 0 to 10K subscribers in 6 months. Here's what nobody tells you."
Example 3: User: "I'm good at storytelling and humor. What should I create about AI writing tools on LinkedIn?" → creator_strengths: ["storytelling", "humor"], platform: "linkedin" → Generate angles weighted toward story format → Top: "I let AI write my LinkedIn posts for a week. My boss noticed." — Score: 9.1 (story format, relatable hook, low competition on LinkedIn for this angle, perfect creator fit)
When this skill produces unexpected, incomplete, or incorrect output, generate a skill_feedback block (see shared/references/feedback-protocol.md for full schema).
Skill-specific failure modes:
wrong_output with the scores.data_quality.chain_break.Auto-detect triggers:
recommended_skill_params missing required fields for the suggested next skillReport issues: GitHub Issues | Discussions
shared/references/social-data-providers.md — API configuration and engagement score formulashared/references/flywheel-connections.md — master flywheel connection mapshared/references/platform-rules.md — platform-specific content guidelinesshared/references/feedback-protocol.md — issue detection and reporting standardviral-post-writer (S2) — recommended_angle with format, hook, and parameterstiktok-script-writer (S2) — TikTok-specific angle with duration and hooktwitter-thread-writer (S2) — X-specific angle with hookreddit-post-writer (S2) — Reddit-specific angle with subreddit suggestionaffiliate-blog-builder (S3) — blog angle with SEO keyword alignmentcomparison-post-writer (S3) — if winning angle is a comparisoncontent-pillar-atomizer (S2) — angle as the pillar topic to atomizetrending-content-scout (S1) — engagement data, patterns, gaps, benchmarksniche-opportunity-finder (S1) — niche context for angle generationcompetitor-spy (S1) — competitor gaps to exploitperformance-report (S6) — historical angle performance dataperformance-report shows which angles actually performed → update scoring weights and format preferences for next run → content strategy improves with every cyclechain_metadata:
skill_slug: "content-angle-ranker"
stage: "research"
timestamp: string
suggested_next:
- "viral-post-writer"
- "tiktok-script-writer"
- "affiliate-blog-builder"~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.