feat(skills): add marketing skills collection
This commit is contained in:
1 parent
b3a19860b4
commit
71daa05071
280 files changed
+54006
No files matched your search
@@ -0,0 +1,141 @@
|
||||
# Carousel Frameworks
|
||||
|
||||
Five slide-by-slide narrative architectures for carousels — Instagram carousels and LinkedIn document posts. Each framework is a different *reason to keep swiping*; picking the right one for the content matters more than polishing individual slides.
|
||||
|
||||
A carousel is not a blog post chopped into squares. It's a swipe-through with two jobs per slide: deliver one idea, and make the next swipe irresistible. These frameworks encode structures that show up repeatedly in high-performing carousels; treat them as starting structures to adapt, not rigid formulas — and expect to validate against your own analytics.
|
||||
|
||||
## Picking a Framework
|
||||
|
||||
| Your content is... | Use | Why |
|
||||
|---|---|---|
|
||||
| A list of resources, tools, or tips | **A: Value-Stack** | Completeness is the promise; the count is the hook |
|
||||
| A personal result with a system behind it | **B: Problem-Proof** | Proof opens and closes the loop; the system is the meat |
|
||||
| Several named techniques on one theme | **C: Hack List** | Each hack re-earns the swipe independently |
|
||||
| A strong opinion about a common practice | **D: Rant Callout** | Conviction is the content; structure keeps it fair |
|
||||
| A product or workflow you can show | **E: Demo Walkthrough** | Seeing the steps is more persuasive than describing them |
|
||||
|
||||
Two cross-framework rules before the specifics:
|
||||
|
||||
- **Slide 1 is the thumbnail.** It competes in the feed alone, before anyone knows a carousel follows. Design and write it as a standalone scroll-stopper.
|
||||
- **One visual template per carousel.** Same layout, type scale, and palette on every interior slide. Variety between slides reads as clutter; consistency lets the *content* change while the frame stays still.
|
||||
|
||||
---
|
||||
|
||||
## Framework A: Value-Stack (4–14 slides)
|
||||
|
||||
The "everything you need" carousel. Works because the cover makes a completeness claim — an exact count and an exact deliverable — and every swipe pays it down.
|
||||
|
||||
| Slide | Job | Pattern |
|
||||
|---|---|---|
|
||||
| 1 — Cover | State the exact count + exact deliverable. Specificity proves scale upfront. | "[N] [resource type] for [role/outcome]" |
|
||||
| 2 to N−1 — Value delivery | One item or category per slide, 3–6 concrete sub-items each. Same visual template, zero filler slides. | "[Category/item] — [sub-items]" |
|
||||
| N — Close | Convert the swipe-through into an action. | "[Action] for [the payoff]" — comment a keyword, follow, link in bio |
|
||||
|
||||
**Why the exact count matters:** "27 free tools" outperforms "the best free tools" because a number is a checkable promise — the reader can verify you delivered. Rounding up with padding breaks the trust the count created.
|
||||
|
||||
*SaaS example:* "12 ChatGPT prompts for SaaS onboarding emails" → one prompt per slide with the use case → "Comment PROMPTS and I'll send the full doc."
|
||||
|
||||
**Failure mode:** filler slides to hit a bigger number. Cut to the real count; a tight 8 beats a padded 14.
|
||||
|
||||
---
|
||||
|
||||
## Framework B: Problem-Proof (6–10 slides)
|
||||
|
||||
The "I did X, here's the system" carousel. The hook is a *result stated as fact*, not advice — and the final slide shows the receipt, closing the loop slide 1 opened.
|
||||
|
||||
| Slide | Job | Pattern |
|
||||
|---|---|---|
|
||||
| 1 — Hook | A specific personal claim with a number. A result, not a tip. | "[I/we did X]. [Specific result, with number]." |
|
||||
| 2 — Reframe the problem | Name what's *actually* going wrong so the reader recognizes themselves. | "The real problem — [named issue]" |
|
||||
| 3–4 — The mechanism | Show the real system: named tools, named steps. Concrete beats vague. | "The system — [named tools/steps]" |
|
||||
| 5 to N−1 — The detail | The literal prompt text, template, or step-by-step. This is the save-worthy part. | "[The literal prompt or process detail]" |
|
||||
| N — Proof | The actual output artifact. A screenshot, not a description. | "[Screenshot of output] — the receipt" |
|
||||
|
||||
**The open loop is the engine:** slide 1 makes a claim, the last slide proves it, and everything between explains how. Readers swipe to see whether the receipt is real.
|
||||
|
||||
*SaaS example:* "We cut churn 22% with one onboarding email." → the real problem (activation, not price) → the sequence structure → the literal email copy → the retention chart.
|
||||
|
||||
**Failure mode:** vague mechanism slides ("optimize your workflow") — if the middle slides don't name tools and steps, the proof slide reads as luck, not system.
|
||||
|
||||
---
|
||||
|
||||
## Framework C: Hack List (6–10 slides)
|
||||
|
||||
The "numbered techniques" carousel. A contrarian cover creates status anxiety — most people are doing this wrong — and each numbered hack independently re-earns the swipe.
|
||||
|
||||
| Slide | Job | Pattern |
|
||||
|---|---|---|
|
||||
| 1 — Contrarian hook | A stat or claim implying most people fail at this. | "[Stat implying most people fail at X]" |
|
||||
| 2 — The problem | Why the common approach fails, ideally with an analogy. | "The problem — [why it fails]" |
|
||||
| 3 to N−1 — Numbered hacks | One named technique per slide. Bad-vs-good contrast makes each hack land instantly. | "Hack #[n] — [named technique]" |
|
||||
| N — Synthesis + close | A one-line thesis tying the hacks together, then a save/share/follow CTA. | "[Thesis tying hacks together]" + [CTA] |
|
||||
|
||||
**Name every technique.** "The 3-second rule" is shareable and memorable; "keep it short" is neither. Named techniques travel — people repeat them and credit the source.
|
||||
|
||||
*SaaS example:* "90% of trial emails never get opened." → why (they read like receipts, not messages) → Hack #1: The founder-from line, Hack #2: The one-question subject, ... → "Trial emails are conversations, not confirmations. Save this for your next sequence."
|
||||
|
||||
**Failure mode:** hacks that are restatements of each other. Each slide must survive alone — if two hacks collapse into one idea, merge them and go shorter.
|
||||
|
||||
---
|
||||
|
||||
## Framework D: Rant Callout (4–8 slides)
|
||||
|
||||
The "someone had to say it" carousel. Personality-led and polarizing by design — the structure exists to keep the heat *fair* so it reads as conviction, not bitterness.
|
||||
|
||||
| Slide | Job | Pattern |
|
||||
|---|---|---|
|
||||
| 1 — Provocative claim | An unpopular opinion or direct accusation about a common practice. | "Unpopular opinion — [common practice]" |
|
||||
| 2 to N−2 — Escalate the argument | Sensory, specific detail. Show the offense; don't gesture at it abstractly. Each slide raises the stakes. | "[Escalating, specific complaint]" |
|
||||
| N−1 — Fairness pivot | "Don't get me wrong…" — clarify what you're *not* attacking. Anti-laziness, not anti-tool; anti-practice, not anti-person. | "The problem isn't [X], it's [Y]" |
|
||||
| N — Close | Firm, personality-forward sign-off. Signed rants read as owned opinions; anonymous ones read as potshots. | "[Firm sign-off] — signed [name/persona]" |
|
||||
|
||||
**The fairness pivot is what makes it work.** Without it you're yelling; with it you're drawing a precise line, and precise lines get quoted. It also pre-empts the top hostile comment.
|
||||
|
||||
*SaaS example:* "Your AI-generated LinkedIn posts are costing you customers." → the specifics (same em-dash cadence, same 'game-changer' vocabulary, zero lived detail) → "Don't get me wrong — I use AI daily. The problem isn't the tool, it's publishing the first draft." → "Write like you talk. — [Name]"
|
||||
|
||||
**Failure modes:** skipping the pivot (reads unhinged, invites pile-ons), or ranting about something your own product/content visibly does (the comments will find it).
|
||||
|
||||
---
|
||||
|
||||
## Framework E: Demo Walkthrough (5–11 slides)
|
||||
|
||||
The "watch it work" carousel for product or workflow content. Show the finished result first, then the steps — the outcome earns attention for the process.
|
||||
|
||||
| Slide | Job | Pattern |
|
||||
|---|---|---|
|
||||
| 1 — Product + outcome | Brand/product plus the finished result. Lead with what they get. | "[Product] + [outcome], finished result" |
|
||||
| 2 — Problem it solves | The specific frustration this replaces. | "[The specific pain this replaces]" |
|
||||
| 3 — Process overview | The numbered step list, shown *before* the detail. Seeing the whole path lowers mid-swipe drop-off — readers commit when they know how long the road is. | "[N] steps to [outcome] in [timeframe]" |
|
||||
| 4 to N−1 — Step-by-step | One real UI screenshot per step with a short caption. Real screenshots; mockups read as vaporware. | "Step [n] — [screenshot] — [caption]" |
|
||||
| N — Result + positioning | The full-size output plus one brand-philosophy line. | "[Final output] + [positioning line]" |
|
||||
|
||||
**Overview-before-detail is the key move** (same reason recipe sites list ingredients before instructions): a reader who's seen "4 steps, 10 minutes" on slide 3 will finish; a reader dropped straight into step 1 with no map bails at step 2.
|
||||
|
||||
*SaaS example:* "From CSV to live dashboard in 4 steps" → the pain (weekly manual reporting) → the 4-step overview → one screenshot per step → the finished dashboard + "Built for marketers, not analysts."
|
||||
|
||||
**Failure mode:** screenshots with too much UI. Crop to the action, zoom the relevant control, annotate with one arrow — each screenshot should make sense at thumbnail size.
|
||||
|
||||
---
|
||||
|
||||
## Platform Notes
|
||||
|
||||
**Instagram:** 1080×1350 (4:5) slides; up to 20 slides but the frameworks' ranges above reflect where completion rates hold. The caption carries the searchable text — restate the hook and add context, don't just repeat slide 1. First slide doubles as the grid thumbnail.
|
||||
|
||||
**LinkedIn (document posts):** Upload as PDF. Square or 4:5. LinkedIn shows a "N pages" badge — Value-Stack's exact-count cover plays especially well here. B2B tolerates denser text per slide than Instagram, but the one-idea-per-slide rule still holds. The post text above the document is a second hook — write it as its own post, not a throwaway "see attached."
|
||||
|
||||
**TikTok photo mode:** Same frameworks work; pacing skews faster — trim each framework toward its minimum slide count.
|
||||
|
||||
## Production Checklist
|
||||
|
||||
- [ ] Slide 1 works as a standalone feed post (test: would it stop the scroll with no carousel behind it?)
|
||||
- [ ] One idea per slide — if a slide needs two sentences of setup, split it
|
||||
- [ ] Same visual template on every interior slide
|
||||
- [ ] Any count promised on the cover is exactly delivered (no filler, no rounding)
|
||||
- [ ] Claims and numbers are real and yours — no invented stats or borrowed screenshots
|
||||
- [ ] Text is legible at thumbnail size (minimum ~28pt at 1080px wide)
|
||||
- [ ] Final slide has one CTA, not three
|
||||
- [ ] Caption/post text written as its own hook, not a repeat of slide 1
|
||||
|
||||
## Measuring What Worked
|
||||
|
||||
Judge carousels on **saves and completion**, not likes — saves signal reference value (the algorithmic win for carousels), and where per-slide analytics exist (Instagram professional insights, LinkedIn document analytics, or third-party tools), drop-off position tells you which slide broke the swipe chain. When a carousel underperforms, the fix is usually slide 1 (didn't stop the scroll) or the framework choice (list content forced into a rant structure), not the middle slides. Track per-framework performance and double down on the two that fit your audience — see [reverse-engineering.md](reverse-engineering.md) for the analysis workflow.
|
||||
@@ -0,0 +1,123 @@
|
||||
# Listening Sources — Template
|
||||
|
||||
Copy this file to `.agents/listening-sources.md` in your project (or `.claude/listening-sources.md`) and fill in the brackets. Claude reads it when running the [listening workflow](listening.md).
|
||||
|
||||
Delete sections you don't use. Keep this short and current — stale sources are worse than no sources.
|
||||
|
||||
---
|
||||
|
||||
## What We're Listening For
|
||||
|
||||
**Brand / product:** [Your product name]
|
||||
**Category:** [e.g., "AI writing assistant", "Postgres GUI"]
|
||||
**Goal:** [e.g., "find people switching from Notion", "engage with B2B SaaS founders 50-200 employees"]
|
||||
|
||||
## ICP (for scoring)
|
||||
|
||||
Used by the [scoring rubric](listening.md#scoring-rubric) to judge ICP fit.
|
||||
|
||||
- **Role:** [e.g., "founder, head of marketing, marketing ops lead"]
|
||||
- **Company stage:** [e.g., "seed to Series B SaaS, 10-200 employees"]
|
||||
- **Industry:** [e.g., "B2B SaaS, infra, devtools"]
|
||||
- **Signals they're a fit:** [e.g., "writes about GTM, runs paid ads, recently raised"]
|
||||
|
||||
---
|
||||
|
||||
## Target Accounts
|
||||
|
||||
Engage with **every** post from these accounts when relevant. Keep this list to 20-50 max.
|
||||
|
||||
### LinkedIn (browser-driven — use dev-browser to view feed)
|
||||
- [Name] — `linkedin.com/in/handle`
|
||||
- [Name] — `linkedin.com/in/handle`
|
||||
|
||||
### X / Twitter (browser-driven)
|
||||
- [@handle]
|
||||
- [@handle]
|
||||
|
||||
### Reddit
|
||||
- u/[username]
|
||||
- u/[username]
|
||||
|
||||
### Bluesky
|
||||
- [handle.bsky.social]
|
||||
|
||||
### Blogs / Newsletters (RSS)
|
||||
- [Name] — `https://example.com/feed/`
|
||||
- [Name] — `https://example.substack.com/feed`
|
||||
|
||||
### YouTube channels (RSS)
|
||||
- [Name] — channel ID `UCxxxxxxxx`
|
||||
|
||||
---
|
||||
|
||||
## Keywords (intent signals)
|
||||
|
||||
Search across all platforms. Claude runs these through Reddit, HN, Bluesky on the [daily loop](listening.md#the-daily-triage-loop).
|
||||
|
||||
### High-intent (someone shopping or switching)
|
||||
- `"alternative to [competitor]"`
|
||||
- `"looking for a [category] tool"`
|
||||
- `"recommend a [category]"`
|
||||
- `"switching from [competitor]"`
|
||||
- `"frustrated with [competitor]"`
|
||||
|
||||
### Problem signals (someone in pain)
|
||||
- `"[category] is so [bad/hard/expensive]"`
|
||||
- `"why is [category] [problem]"`
|
||||
- `"hate [pain point]"`
|
||||
|
||||
### Brand mentions
|
||||
- `"[your brand]"`
|
||||
- `"[your brand misspelling]"`
|
||||
- `"[your domain]"`
|
||||
|
||||
### Competitor mentions (monitor for switching language)
|
||||
- `"[competitor 1]"`
|
||||
- `"[competitor 2]"`
|
||||
|
||||
---
|
||||
|
||||
## Subreddits
|
||||
|
||||
Pulled via Reddit JSON API on the daily loop.
|
||||
|
||||
- r/SaaS
|
||||
- r/Entrepreneur
|
||||
- r/[your niche, e.g., "marketing", "devtools"]
|
||||
- r/[adjacent community]
|
||||
|
||||
---
|
||||
|
||||
## Saved Searches (manual / browser-driven)
|
||||
|
||||
URLs Claude opens via dev-browser to scan.
|
||||
|
||||
### LinkedIn Sales Navigator
|
||||
- [Search name] — `https://linkedin.com/sales/search/people?...`
|
||||
|
||||
### LinkedIn (regular)
|
||||
- Posts hashtag — `https://linkedin.com/feed/hashtag/yourtopic/`
|
||||
|
||||
### X advanced search
|
||||
- [Search name] — `https://x.com/search?q=...&f=live`
|
||||
|
||||
---
|
||||
|
||||
## Do Not Engage
|
||||
|
||||
Save yourself the regret.
|
||||
|
||||
- Accounts known for bad-faith dunking: [@handle], [@handle]
|
||||
- Blocked brands / competitors who'll screenshot: [list]
|
||||
- Topics to avoid: [politics, [your founder's hot takes], etc.]
|
||||
|
||||
---
|
||||
|
||||
## Notes for Claude
|
||||
|
||||
- When asked for "today's top 10," output in the format defined in [listening.md](listening.md#the-daily-triage-loop)
|
||||
- For LinkedIn and X, use dev-browser with the persistent session (user is logged in)
|
||||
- For everything else, use the curl recipes in [listening.md](listening.md#sources--light-tooling-curl-recipes)
|
||||
- Default lookback: 24h. User can override.
|
||||
- Always ask before posting — output drafts, user approves and posts manually
|
||||
@@ -0,0 +1,283 @@
|
||||
# Social Listening & Engagement Triage
|
||||
|
||||
How to surface the right posts to engage with each day — instead of randomly scrolling. The goal is a short, scorable list ("here are your top 10 posts to comment on") rather than an open feed.
|
||||
|
||||
## Contents
|
||||
- When to use this
|
||||
- The daily triage loop
|
||||
- Scoring rubric
|
||||
- Comment quality tiers
|
||||
- Sources & light tooling (curl recipes)
|
||||
- Per-platform notes
|
||||
- Common workflows
|
||||
|
||||
---
|
||||
|
||||
## When to Use This
|
||||
|
||||
Use listening when the goal is **commenting and relationships**, not posting. Typical asks:
|
||||
- "Give me the top 10 posts I should comment on today"
|
||||
- "Who's complaining about [competitor] right now?"
|
||||
- "Find people asking for a tool like mine"
|
||||
- "Surface posts from my 20 target accounts in the last 24h"
|
||||
- "What's the conversation around [topic] this week?"
|
||||
|
||||
If the user wants to **create** content, use the rest of the social skill. Listening feeds creation (it surfaces angles, language, objections), but the output is different.
|
||||
|
||||
---
|
||||
|
||||
## The Daily Triage Loop
|
||||
|
||||
A repeatable 20-minute loop the user (or you, on their behalf) can run each morning.
|
||||
|
||||
1. **Pull** — fetch new posts from defined sources (target accounts, keywords, subreddits, hashtags). See [tooling](#sources--light-tooling-curl-recipes).
|
||||
2. **Filter** — drop anything older than 24h, low signal, or off-topic.
|
||||
3. **Score** — apply the [rubric](#scoring-rubric). Keep top 10.
|
||||
4. **Draft** — for each, draft a comment matched to the post's tier.
|
||||
5. **Post** — user reviews, edits, posts. Mark which actually went live.
|
||||
6. **Log** — track what you commented on and what got replies. This is your engagement loop dataset.
|
||||
|
||||
Output format Claude should produce:
|
||||
|
||||
```
|
||||
TOP 10 POSTS — 2026-06-05
|
||||
|
||||
1. [Score 9/10] @author — LinkedIn — 2h ago
|
||||
"We just rolled out X and the team is loving it…"
|
||||
Why: ICP fit (B2B SaaS, 50–200 employees), buying-intent signal
|
||||
Suggested comment: [draft]
|
||||
Link: https://…
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scoring Rubric
|
||||
|
||||
Score each post 1–10 across five dimensions, then sum and rank.
|
||||
|
||||
| Dimension | What it measures | Weight |
|
||||
|-----------|------------------|--------|
|
||||
| **ICP fit** | Is the author your target customer / influencer? | 2x |
|
||||
| **Intent signal** | Are they expressing a problem, asking, or shopping? | 2x |
|
||||
| **Reach potential** | Is the post getting traction (likes/comments rising)? | 1x |
|
||||
| **Comment opportunity** | Can you say something genuinely useful, not generic? | 2x |
|
||||
| **Recency** | Posted in last 1–4h (early comments win, especially on LinkedIn) | 1x |
|
||||
|
||||
**Intent signal examples (high-value):**
|
||||
- "Looking for a tool that does X"
|
||||
- "Why is [category] so painful?"
|
||||
- "We just switched from [competitor] because…"
|
||||
- "Anyone use [competitor] — is it worth it?"
|
||||
- A complaint about a known competitor
|
||||
|
||||
**Drop if any of these are true:**
|
||||
- Author isn't ICP and isn't an influencer
|
||||
- Post is >24h old and already has 50+ comments (your comment buries)
|
||||
- Generic motivational/AI-slop post
|
||||
- Self-promotion thread where comments don't get reach
|
||||
- You can't add anything beyond "Great post!"
|
||||
|
||||
---
|
||||
|
||||
## Comment Quality Tiers
|
||||
|
||||
Match the comment to the post. Don't waste a tier-1 draft on a tier-3 opportunity.
|
||||
|
||||
**Tier 1 — Relationship builder (target accounts, ICP, high intent)**
|
||||
- Add a specific insight or counter-example
|
||||
- Reference your own experience with specifics (numbers, names, outcomes)
|
||||
- Ask a thoughtful follow-up that invites a reply
|
||||
- Length: 2–4 sentences, no link
|
||||
|
||||
**Tier 2 — Visibility play (high-reach post, adjacent topic)**
|
||||
- Add one sharp insight in one sentence
|
||||
- Pattern: "Agreed — and the part most miss is [X]"
|
||||
- Length: 1–2 sentences
|
||||
|
||||
**Tier 3 — Light touch (relationship maintenance)**
|
||||
- Specific reaction, not "Love this"
|
||||
- Quote a specific line and react to it
|
||||
- Length: 1 sentence
|
||||
|
||||
**Never:** "Great post!", emoji-only, "+1", LinkedIn-isms like "This is gold 🔥"
|
||||
|
||||
---
|
||||
|
||||
## Sources & Light Tooling (curl recipes)
|
||||
|
||||
These are public JSON endpoints — no auth needed. Run them from bash, pipe to `jq`, and Claude can parse the output to score and draft comments.
|
||||
|
||||
**Requires:** `jq` (most recipes) and `xmllint` (RSS only). Install once:
|
||||
```bash
|
||||
# macOS
|
||||
brew install jq
|
||||
# xmllint ships with macOS; on Linux: apt install libxml2-utils
|
||||
```
|
||||
|
||||
### Reddit (free, scriptable)
|
||||
|
||||
**New posts in a subreddit:**
|
||||
```bash
|
||||
curl -s -A "listening/1.0" \
|
||||
"https://www.reddit.com/r/SaaS/new.json?limit=25" \
|
||||
| jq '.data.children[].data | {title, author, url: ("https://reddit.com"+.permalink), score, num_comments, created_utc, selftext: (.selftext | .[0:300])}'
|
||||
```
|
||||
|
||||
**Search across Reddit by keyword (last day, sorted new):**
|
||||
```bash
|
||||
curl -s -A "listening/1.0" \
|
||||
"https://www.reddit.com/search.json?q=KEYWORD&sort=new&t=day&limit=25" \
|
||||
| jq '.data.children[].data | {subreddit, title, url: ("https://reddit.com"+.permalink), author, score, created_utc}'
|
||||
```
|
||||
|
||||
Swap `KEYWORD` for things like `"alternative to notion"`, `"recommend a crm"`, your competitor names, or your own brand for mentions. Use quotes around multi-word phrases.
|
||||
|
||||
### Hacker News (Algolia search)
|
||||
|
||||
**Recent stories mentioning a keyword (last 24h):**
|
||||
```bash
|
||||
SINCE=$(($(date +%s) - 86400))
|
||||
curl -s "https://hn.algolia.com/api/v1/search_by_date?query=KEYWORD&tags=story&numericFilters=created_at_i>${SINCE}" \
|
||||
| jq '.hits[] | {title, url, author, points, num_comments, created_at, story_id: .objectID, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'
|
||||
```
|
||||
|
||||
**Recent comments mentioning a keyword:**
|
||||
```bash
|
||||
curl -s "https://hn.algolia.com/api/v1/search_by_date?query=KEYWORD&tags=comment&numericFilters=created_at_i>${SINCE}" \
|
||||
| jq '.hits[] | {author, comment_text, story_title, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'
|
||||
```
|
||||
|
||||
### Bluesky (free, public API)
|
||||
|
||||
**Search posts by keyword:**
|
||||
```bash
|
||||
curl -s "https://public.api.bsky.app/xrpc/app.bsky.feed.searchPosts?q=KEYWORD&limit=25&sort=latest" \
|
||||
| jq '.posts[] | {author: .author.handle, text: .record.text, likes: .likeCount, replies: .replyCount, url: ("https://bsky.app/profile/"+.author.handle+"/post/"+(.uri | split("/") | last))}'
|
||||
```
|
||||
|
||||
### RSS for blogs, podcasts, YouTube channels
|
||||
|
||||
For target accounts that publish to RSS (most blogs, all YouTube channels):
|
||||
```bash
|
||||
# YouTube channel feed (replace CHANNEL_ID)
|
||||
curl -s "https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID"
|
||||
|
||||
# Generic blog feed
|
||||
curl -s "https://example.com/feed/" | xmllint --xpath "//item[position()<6]" - 2>/dev/null
|
||||
```
|
||||
|
||||
### LinkedIn & X — use the browser
|
||||
|
||||
LinkedIn and X don't expose useful public APIs, but you can drive a real browser session. **dev-browser** (MCP, already in the global setup) and **Playwright** both maintain persistent state — log in once, the session stays alive, Claude can navigate the authenticated feed.
|
||||
|
||||
**dev-browser workflow (preferred — already wired up):**
|
||||
1. User logs into LinkedIn / X once in the dev-browser session
|
||||
2. Claude navigates to a target URL (feed, profile, saved search, hashtag)
|
||||
3. Claude reads the accessibility tree / page text, extracts posts
|
||||
4. Claude scores using the [rubric](#scoring-rubric) and drafts comments
|
||||
5. User reviews and posts manually (don't auto-post — high-stakes, bot detection risk)
|
||||
|
||||
**Useful URLs to feed dev-browser:**
|
||||
|
||||
| URL pattern | What it shows |
|
||||
|-------------|---------------|
|
||||
| `linkedin.com/in/HANDLE/recent-activity/all/` | A target account's recent posts |
|
||||
| `linkedin.com/feed/hashtag/TOPIC/` | Hashtag feed |
|
||||
| `linkedin.com/feed/` | Your main feed (algorithmic — less useful for triage) |
|
||||
| `x.com/HANDLE` | A target account's profile |
|
||||
| `x.com/search?q=QUERY&f=live` | Real-time search (use `f=live` for chronological) |
|
||||
| `x.com/i/lists/LIST_ID` | A curated list — best for target accounts |
|
||||
|
||||
**Tips:**
|
||||
- On X, build a private list of target accounts and use the list URL. Far cleaner than the algorithmic feed.
|
||||
- LinkedIn's `/recent-activity/all/` URL is the cleanest way to see one person's posts without the algorithm.
|
||||
- For both platforms, scroll programmatically (dev-browser supports it) to load more posts before extracting.
|
||||
|
||||
**Paid alternatives if you don't want to drive a browser:**
|
||||
|
||||
| Platform | Tools |
|
||||
|----------|-------|
|
||||
| LinkedIn | Sales Navigator (saved searches), Taplio (engagement) |
|
||||
| X | TweetDeck/X Pro (saved columns), Typefully, Taplio, Tweet Hunter |
|
||||
|
||||
**Still closed (no good path):**
|
||||
- Instagram & TikTok — closed APIs, browser automation is detectable and risky. Use native saved searches / hashtag follows.
|
||||
|
||||
---
|
||||
|
||||
## Per-Platform Notes
|
||||
|
||||
### LinkedIn
|
||||
- **Browser-driven** (dev-browser with persistent session) — see [LinkedIn & X — use the browser](#linkedin--x--use-the-browser)
|
||||
- **First-hour comments matter most** — algorithm weights early engagement heavily. Prioritize posts <2h old from target accounts.
|
||||
- Comments with 5+ words get more reach than reactions
|
||||
- Replying to other commenters can put you in front of their network
|
||||
- Tag the author in your reply only if it adds context
|
||||
|
||||
### Twitter/X
|
||||
- **Browser-driven** (dev-browser) — build a private list of target accounts and point dev-browser at the list URL
|
||||
- Reply within first 30 min for max reach on big accounts
|
||||
- Quote-tweet > reply when adding substantial value
|
||||
- Threading your reply (multi-tweet) signals effort
|
||||
- Don't pile on dunks — relationships > clout
|
||||
|
||||
### Reddit
|
||||
- Read the subreddit rules before commenting (some ban self-promotion outright)
|
||||
- Earn karma in the sub before linking to anything you own
|
||||
- Long, specific answers win. AMAs and "help me decide" threads are gold
|
||||
- Never lead with your product — answer the question first
|
||||
|
||||
### Hacker News
|
||||
- Comment quality bar is high; low-effort gets downvoted fast
|
||||
- Founders commenting on threads about their product is welcomed if you're transparent
|
||||
- Search for past discussions of your category — they're often dormant gold mines
|
||||
|
||||
### Bluesky
|
||||
- Smaller volume but high engagement-to-follower ratio
|
||||
- Tech and indie-hacker communities are active
|
||||
- Custom feeds (like Bluesky's "Following" + topic feeds) replace algorithmic search
|
||||
|
||||
---
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### "Give me my top 10 posts to comment on today"
|
||||
1. Pull from: target account RSS/saved searches + Reddit (relevant subs) + HN (last 24h)
|
||||
2. Score with the [rubric](#scoring-rubric)
|
||||
3. Output top 10 with suggested comments
|
||||
|
||||
### "Find people complaining about [competitor]"
|
||||
1. Reddit search: `"competitor name" -site:competitor.com` sorted by new
|
||||
2. HN comment search for competitor name
|
||||
3. Bluesky search for competitor handle/name
|
||||
4. Score by intent signal (high if switching language: "moving from", "alternatives to", "frustrated with")
|
||||
|
||||
### "Surface brand mentions from the last week"
|
||||
1. Reddit search for brand name
|
||||
2. HN search (stories + comments) for brand name
|
||||
3. Bluesky search for brand name + handle
|
||||
4. Output as: reply needed (yes/no), tone (positive/negative/neutral), suggested response
|
||||
|
||||
### "Find target-account posts I missed"
|
||||
1. Maintain a list of target accounts with their RSS / Reddit usernames / Bluesky handles
|
||||
2. Fetch each source's recent posts
|
||||
3. Filter to last 24h, output sorted by score
|
||||
|
||||
---
|
||||
|
||||
## Setting Up the Source List
|
||||
|
||||
The user should maintain a list of sources somewhere persistent at `.agents/listening-sources.md` (or `.claude/listening-sources.md`). Claude reads it when running the daily loop.
|
||||
|
||||
**A ready-to-fill template lives at [listening-sources-template.md](listening-sources-template.md).** Copy it into the project and edit. The source path depends on how the skill was installed:
|
||||
|
||||
```bash
|
||||
# Plugin / marketplace install (most common):
|
||||
cp .agents/skills/social/references/listening-sources-template.md .agents/listening-sources.md
|
||||
# .claude/ install:
|
||||
cp .claude/skills/social/references/listening-sources-template.md .agents/listening-sources.md
|
||||
# Working inside the marketingskills repo:
|
||||
cp skills/social/references/listening-sources-template.md .agents/listening-sources.md
|
||||
```
|
||||
|
||||
The template covers: brand/category, ICP (for scoring), target accounts per platform, intent keywords, subreddits, saved-search URLs, and a do-not-engage list.
|
||||
@@ -0,0 +1,110 @@
|
||||
# Platform Limits Reference
|
||||
|
||||
Quick reference for hashtag limits, character counts, and visible text thresholds on each major social platform.
|
||||
|
||||
---
|
||||
|
||||
## Instagram
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | 5 (official limit) |
|
||||
| Recommended hashtags | 3 – 5 |
|
||||
| Max caption chars | 2,200 |
|
||||
| Visible before "more" | ~125 chars |
|
||||
|
||||
---
|
||||
|
||||
## Facebook
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | No official limit |
|
||||
| Recommended hashtags | 1 – 2 |
|
||||
| Max post chars | 63,206 |
|
||||
| Ideal for engagement | 40 – 80 chars |
|
||||
|
||||
---
|
||||
|
||||
## TikTok
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | 5 (since August 2025) |
|
||||
| Recommended hashtags | 3 – 5 |
|
||||
| Max caption chars | 4,000 |
|
||||
| Visible before "more" | ~150 chars |
|
||||
|
||||
---
|
||||
|
||||
## LinkedIn
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | No official limit |
|
||||
| Recommended hashtags | 3 – 5 |
|
||||
| Max post chars | 3,000 |
|
||||
| Visible before "more" | ~210 chars |
|
||||
|
||||
---
|
||||
|
||||
## Twitter/X
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | No official limit |
|
||||
| Recommended hashtags | 1 – 2 |
|
||||
| Max tweet chars | 280 (standard) / 25,000 (Premium+) |
|
||||
| Visible before "more" | Full tweet (280 standard) |
|
||||
|
||||
---
|
||||
|
||||
## YouTube
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | 15 (exceeding this causes YouTube to ignore ALL hashtags) |
|
||||
| Recommended hashtags | 3 – 5 |
|
||||
| Max title chars | 100 (visible before truncation: ~70) |
|
||||
| Max description chars | 5,000 |
|
||||
| Visible before "Show more" | ~100 chars |
|
||||
|
||||
> The first 3 hashtags in the description automatically appear above the title as clickable links. For Shorts, use 1 – 5 hashtags.
|
||||
|
||||
---
|
||||
|
||||
## Pinterest
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | 20 per pin |
|
||||
| Recommended hashtags | 2 – 5 |
|
||||
| Max pin title chars | 100 |
|
||||
| Max description chars | 500 |
|
||||
| Visible before "More" | ~50 chars (desktop) |
|
||||
|
||||
> Pinterest has deprioritized hashtags. Focus on keywords as natural sentences within the description for better SEO instead of relying on hashtags.
|
||||
|
||||
---
|
||||
|
||||
## Threads (Meta)
|
||||
|
||||
| Element | Limit |
|
||||
|---------|-------|
|
||||
| Max hashtags | 1 per post (topic tag) |
|
||||
| Recommended hashtags | 1 |
|
||||
| Max post chars | 500 |
|
||||
| Max with text attachment | 10,500 (500 + 10,000 expandable) |
|
||||
| Visible without expanding | First ~1 – 2 lines |
|
||||
|
||||
> Threads limits topic tags to one per post. The platform is not hashtag-driven — the algorithm prioritizes content from followed accounts mixed with recommendations.
|
||||
|
||||
---
|
||||
|
||||
## Usage Tips
|
||||
|
||||
- **Hashtags count against character limits** on all platforms
|
||||
- **Front-load your message** before the "more" truncation point
|
||||
- On Instagram and TikTok, fewer hashtags now outperform hashtag-stuffing
|
||||
- On LinkedIn, hashtags at the end of the post perform better than inline
|
||||
- On Facebook, hashtags have minimal impact on reach — use sparingly
|
||||
@@ -0,0 +1,170 @@
|
||||
# Platform-Specific Strategy Guide
|
||||
|
||||
Detailed strategies for each major social platform.
|
||||
|
||||
## Contents
|
||||
- LinkedIn
|
||||
- Twitter/X
|
||||
- Instagram
|
||||
- TikTok
|
||||
- Facebook
|
||||
|
||||
## LinkedIn
|
||||
|
||||
**Best for:** B2B, thought leadership, professional networking, recruiting
|
||||
**Audience:** Professionals, decision-makers, job seekers
|
||||
**Posting frequency:** 3-5x per week
|
||||
**Best times:** Tuesday-Thursday, 7-8am, 12pm, 5-6pm
|
||||
|
||||
**What works:**
|
||||
- Personal stories with business lessons
|
||||
- Contrarian takes on industry topics
|
||||
- Behind-the-scenes of building a company
|
||||
- Data and original insights
|
||||
- Carousel posts (document format)
|
||||
- Polls that spark discussion
|
||||
|
||||
**What doesn't:**
|
||||
- Overly promotional content
|
||||
- Generic motivational quotes
|
||||
- Links in the main post (kills reach)
|
||||
- Corporate speak without personality
|
||||
|
||||
**Format tips:**
|
||||
- First line is everything (hook before "see more")
|
||||
- Use line breaks for readability
|
||||
- 1,200-1,500 characters performs well
|
||||
- Put links in comments, not post body
|
||||
- Tag people sparingly and genuinely
|
||||
|
||||
**Algorithm tips:**
|
||||
- First hour engagement matters most
|
||||
- Comments > reactions > clicks
|
||||
- Dwell time (people reading) signals quality
|
||||
- No external links in post body
|
||||
- Document posts (carousels) get strong reach
|
||||
- Polls drive engagement but don't build authority
|
||||
|
||||
---
|
||||
|
||||
## Twitter/X
|
||||
|
||||
**Best for:** Tech, media, real-time commentary, community building
|
||||
**Audience:** Tech-savvy, news-oriented, niche communities
|
||||
**Posting frequency:** 3-10x per day (including replies)
|
||||
**Best times:** Varies by audience; test and measure
|
||||
|
||||
**What works:**
|
||||
- Hot takes and opinions
|
||||
- Threads that teach something
|
||||
- Behind-the-scenes moments
|
||||
- Engaging with others' content
|
||||
- Memes and humor (if on-brand)
|
||||
- Real-time commentary on events
|
||||
|
||||
**What doesn't:**
|
||||
- Pure self-promotion
|
||||
- Threads without a strong hook
|
||||
- Ignoring replies and mentions
|
||||
- Scheduling everything (no real-time presence)
|
||||
|
||||
**Format tips:**
|
||||
- Tweets under 100 characters get more engagement
|
||||
- Threads: Hook in tweet 1, promise value, deliver
|
||||
- Quote tweets with added insight beat plain retweets
|
||||
- Use visuals to stop the scroll
|
||||
|
||||
**Algorithm tips:**
|
||||
- Replies and quote tweets build authority
|
||||
- Threads keep people on platform (rewarded)
|
||||
- Images and video get more reach
|
||||
- Engagement in first 30 min matters
|
||||
- Twitter Blue/Premium may boost reach
|
||||
|
||||
---
|
||||
|
||||
## Instagram
|
||||
|
||||
**Best for:** Visual brands, lifestyle, e-commerce, younger demographics
|
||||
**Audience:** 18-44, visual-first consumers
|
||||
**Posting frequency:** 1-2 feed posts per day, 3-10 Stories per day
|
||||
**Best times:** 11am-1pm, 7-9pm
|
||||
|
||||
**What works:**
|
||||
- High-quality visuals
|
||||
- Behind-the-scenes Stories
|
||||
- Reels (short-form video)
|
||||
- Carousels with value
|
||||
- User-generated content
|
||||
- Interactive Stories (polls, questions)
|
||||
|
||||
**What doesn't:**
|
||||
- Low-quality images
|
||||
- Too much text in images
|
||||
- Ignoring Stories and Reels
|
||||
- Only promotional content
|
||||
|
||||
**Format tips:**
|
||||
- Reels get 2x reach of static posts
|
||||
- First frame of Reels must hook
|
||||
- Carousels: 10 slides with educational content
|
||||
- Use all Story features (polls, links, etc.)
|
||||
|
||||
**Algorithm tips:**
|
||||
- Reels heavily prioritized over static posts
|
||||
- Saves and shares > likes
|
||||
- Stories keep you top of feed
|
||||
- Consistency matters more than perfection
|
||||
- Use all features (polls, questions, etc.)
|
||||
|
||||
---
|
||||
|
||||
## TikTok
|
||||
|
||||
**Best for:** Brand awareness, younger audiences, viral potential
|
||||
**Audience:** 16-34, entertainment-focused
|
||||
**Posting frequency:** 1-4x per day
|
||||
**Best times:** 7-9am, 12-3pm, 7-11pm
|
||||
|
||||
**What works:**
|
||||
- Native, unpolished content
|
||||
- Trending sounds and formats
|
||||
- Educational content in entertaining wrapper
|
||||
- POV and day-in-the-life content
|
||||
- Responding to comments with videos
|
||||
- Duets and stitches
|
||||
|
||||
**What doesn't:**
|
||||
- Overly produced content
|
||||
- Ignoring trends
|
||||
- Hard selling
|
||||
- Repurposed horizontal video
|
||||
|
||||
**Format tips:**
|
||||
- Hook in first 1-2 seconds
|
||||
- Keep it under 30 seconds to start
|
||||
- Vertical only (9:16)
|
||||
- Use trending sounds
|
||||
- Post consistently to train algorithm
|
||||
|
||||
---
|
||||
|
||||
## Facebook
|
||||
|
||||
**Best for:** Communities, local businesses, older demographics, groups
|
||||
**Audience:** 25-55+, community-oriented
|
||||
**Posting frequency:** 1-2x per day
|
||||
**Best times:** 1-4pm weekdays
|
||||
|
||||
**What works:**
|
||||
- Facebook Groups (community)
|
||||
- Native video
|
||||
- Live video
|
||||
- Local content and events
|
||||
- Discussion-prompting questions
|
||||
|
||||
**What doesn't:**
|
||||
- Links to external sites (reach killer)
|
||||
- Pure promotional content
|
||||
- Ignoring comments
|
||||
- Cross-posting from other platforms without adaptation
|
||||
@@ -0,0 +1,179 @@
|
||||
# Post Format Templates
|
||||
|
||||
Ready-to-use templates for different platforms and content types.
|
||||
|
||||
## Contents
|
||||
- LinkedIn Post Templates (The Story Post, The Contrarian Take, The List Post, The How-To)
|
||||
- Twitter/X Thread Templates (The Tutorial Thread, The Story Thread, The Breakdown Thread)
|
||||
- Instagram Templates (The Carousel Hook, The Reel Script)
|
||||
- Hook Formulas (Curiosity Hooks, Story Hooks, Value Hooks, Contrarian Hooks, Social Proof Hooks)
|
||||
|
||||
## LinkedIn Post Templates
|
||||
|
||||
### The Story Post
|
||||
```
|
||||
[Hook: Unexpected outcome or lesson]
|
||||
|
||||
[Set the scene: When/where this happened]
|
||||
|
||||
[The challenge you faced]
|
||||
|
||||
[What you tried / what happened]
|
||||
|
||||
[The turning point]
|
||||
|
||||
[The result]
|
||||
|
||||
[The lesson for readers]
|
||||
|
||||
[Question to prompt engagement]
|
||||
```
|
||||
|
||||
### The Contrarian Take
|
||||
```
|
||||
[Unpopular opinion stated boldly]
|
||||
|
||||
Here's why:
|
||||
|
||||
[Reason 1]
|
||||
[Reason 2]
|
||||
[Reason 3]
|
||||
|
||||
[What you recommend instead]
|
||||
|
||||
[Invite discussion: "Am I wrong?"]
|
||||
```
|
||||
|
||||
### The List Post
|
||||
```
|
||||
[X things I learned about [topic] after [credibility builder]:
|
||||
|
||||
1. [Point] — [Brief explanation]
|
||||
|
||||
2. [Point] — [Brief explanation]
|
||||
|
||||
3. [Point] — [Brief explanation]
|
||||
|
||||
[Wrap-up insight]
|
||||
|
||||
Which resonates most with you?
|
||||
```
|
||||
|
||||
### The How-To
|
||||
```
|
||||
How to [achieve outcome] in [timeframe]:
|
||||
|
||||
Step 1: [Action]
|
||||
↳ [Why this matters]
|
||||
|
||||
Step 2: [Action]
|
||||
↳ [Key detail]
|
||||
|
||||
Step 3: [Action]
|
||||
↳ [Common mistake to avoid]
|
||||
|
||||
[Result you can expect]
|
||||
|
||||
[CTA or question]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Twitter/X Thread Templates
|
||||
|
||||
### The Tutorial Thread
|
||||
```
|
||||
Tweet 1: [Hook + promise of value]
|
||||
|
||||
"Here's exactly how to [outcome] (step-by-step):"
|
||||
|
||||
Tweet 2-7: [One step per tweet with details]
|
||||
|
||||
Final tweet: [Summary + CTA]
|
||||
|
||||
"If this was helpful, follow me for more on [topic]"
|
||||
```
|
||||
|
||||
### The Story Thread
|
||||
```
|
||||
Tweet 1: [Intriguing hook]
|
||||
|
||||
"[Time] ago, [unexpected thing happened]. Here's the full story:"
|
||||
|
||||
Tweet 2-6: [Story beats, building tension]
|
||||
|
||||
Tweet 7: [Resolution and lesson]
|
||||
|
||||
Final tweet: [Takeaway + engagement ask]
|
||||
```
|
||||
|
||||
### The Breakdown Thread
|
||||
```
|
||||
Tweet 1: [Company/person] just [did thing].
|
||||
|
||||
Here's why it's genius (and what you can learn):
|
||||
|
||||
Tweet 2-6: [Analysis points]
|
||||
|
||||
Tweet 7: [Your key takeaway]
|
||||
|
||||
"[Related insight + follow CTA]"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instagram Templates
|
||||
|
||||
### The Carousel Hook
|
||||
```
|
||||
[Slide 1: Bold statement or question]
|
||||
[Slides 2-9: One point per slide, visual + text]
|
||||
[Slide 10: Summary + CTA]
|
||||
|
||||
Caption: [Expand on the topic, add context, include CTA]
|
||||
```
|
||||
|
||||
This is the generic shape. For five full slide-by-slide narrative architectures (Value-Stack, Problem-Proof, Hack List, Rant Callout, Demo Walkthrough) with selection guidance and per-slide copy slots, see [carousel-frameworks.md](carousel-frameworks.md).
|
||||
|
||||
### The Reel Script
|
||||
```
|
||||
Hook (0-2 sec): [Pattern interrupt or bold claim]
|
||||
Setup (2-5 sec): [Context for the tip]
|
||||
Value (5-25 sec): [The actual advice/content]
|
||||
CTA (25-30 sec): [Follow, comment, share, link]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hook Formulas
|
||||
|
||||
The first line determines whether anyone reads the rest.
|
||||
|
||||
### Curiosity Hooks
|
||||
- "I was wrong about [common belief]."
|
||||
- "The real reason [outcome] happens isn't what you think."
|
||||
- "[Impressive result] — and it only took [surprisingly short time]."
|
||||
- "Nobody talks about [insider knowledge]."
|
||||
|
||||
### Story Hooks
|
||||
- "Last week, [unexpected thing] happened."
|
||||
- "I almost [big mistake/failure]."
|
||||
- "3 years ago, I [past state]. Today, [current state]."
|
||||
- "[Person] told me something I'll never forget."
|
||||
|
||||
### Value Hooks
|
||||
- "How to [desirable outcome] (without [common pain]):"
|
||||
- "[Number] [things] that [outcome]:"
|
||||
- "The simplest way to [outcome]:"
|
||||
- "Stop [common mistake]. Do this instead:"
|
||||
|
||||
### Contrarian Hooks
|
||||
- "Unpopular opinion: [bold statement]"
|
||||
- "[Common advice] is wrong. Here's why:"
|
||||
- "I stopped [common practice] and [positive result]."
|
||||
- "Everyone says [X]. The truth is [Y]."
|
||||
|
||||
### Social Proof Hooks
|
||||
- "We [achieved result] in [timeframe]. Here's the full story:"
|
||||
- "[Number] people asked me about [topic]. Here's my answer:"
|
||||
- "[Authority figure] taught me [lesson]."
|
||||
@@ -0,0 +1,195 @@
|
||||
# Reverse Engineering Viral Content
|
||||
|
||||
Instead of guessing what works, systematically analyze top-performing content in your niche and extract proven patterns.
|
||||
|
||||
## Contents
|
||||
- The 6-Step Framework (Niche ID, Scrape, Analyze, Playbook, Layer Voice, Convert)
|
||||
- The Formula
|
||||
- Reverse Engineering Checklist
|
||||
|
||||
## The 6-Step Framework
|
||||
|
||||
### 1. NICHE ID — Find Top Creators
|
||||
|
||||
Identify 10-20 creators in your space who consistently get high engagement:
|
||||
|
||||
**Selection criteria:**
|
||||
- Posting consistently (3+ times/week)
|
||||
- High engagement rate relative to follower count
|
||||
- Audience overlap with your target market
|
||||
- Mix of established and rising creators
|
||||
|
||||
**Where to find them:**
|
||||
- LinkedIn: Search by industry keywords, check "People also viewed"
|
||||
- Twitter/X: Check who your target audience follows and engages with
|
||||
- Use tools like SparkToro, Followerwonk, or manual research
|
||||
- Look at who gets featured in industry newsletters
|
||||
|
||||
### 2. SCRAPE — Collect Posts at Scale
|
||||
|
||||
Gather 500-1000+ posts from your identified creators for analysis:
|
||||
|
||||
**Tools:**
|
||||
- **Apify** — LinkedIn scraper, Twitter scraper actors
|
||||
- **Phantom Buster** — Multi-platform automation
|
||||
- **Export tools** — Platform-specific export features
|
||||
- **Manual collection** — For smaller datasets, copy/paste into spreadsheet
|
||||
|
||||
**Data to collect:**
|
||||
- Post text/content
|
||||
- Engagement metrics (likes, comments, shares, saves)
|
||||
- Post format (text-only, carousel, video, image)
|
||||
- Posting time/day
|
||||
- Hook/first line
|
||||
- CTA used
|
||||
- Topic/theme
|
||||
|
||||
### 3. ANALYZE — Extract What Actually Works
|
||||
|
||||
Sort and analyze the data to find patterns:
|
||||
|
||||
**Quantitative analysis:**
|
||||
- Rank posts by engagement rate
|
||||
- Identify top 10% performers
|
||||
- Look for format patterns (do carousels outperform?)
|
||||
- Check timing patterns (best days/times)
|
||||
- Compare topic performance
|
||||
|
||||
**Qualitative analysis:**
|
||||
- What hooks do top posts use?
|
||||
- How long are high-performing posts?
|
||||
- What emotional triggers appear?
|
||||
- What formats repeat?
|
||||
- What topics consistently perform?
|
||||
|
||||
**Questions to answer:**
|
||||
- What's the average length of top posts?
|
||||
- Which hook types appear most in top 10%?
|
||||
- What CTAs drive most comments?
|
||||
- What topics get saved/shared most?
|
||||
|
||||
### 4. PLAYBOOK — Codify Patterns
|
||||
|
||||
Document repeatable patterns you can use:
|
||||
|
||||
**Hook patterns to codify:**
|
||||
```
|
||||
Pattern: "I [unexpected action] and [surprising result]"
|
||||
Example: "I stopped posting daily and my engagement doubled"
|
||||
Why it works: Curiosity gap + contrarian
|
||||
|
||||
Pattern: "[Specific number] [things] that [outcome]:"
|
||||
Example: "7 pricing mistakes that cost me $50K:"
|
||||
Why it works: Specificity + loss aversion
|
||||
|
||||
Pattern: "[Controversial take]"
|
||||
Example: "Cold outreach is dead."
|
||||
Why it works: Pattern interrupt + invites debate
|
||||
```
|
||||
|
||||
**Format patterns:**
|
||||
- Carousel: Hook slide → Problem → Solution steps → CTA
|
||||
- Thread: Hook → Promise → Deliver → Recap → CTA
|
||||
- Story post: Hook → Setup → Conflict → Resolution → Lesson
|
||||
|
||||
**CTA patterns:**
|
||||
- Question: "What would you add?"
|
||||
- Agreement: "Agree or disagree?"
|
||||
- Share: "Tag someone who needs this"
|
||||
- Save: "Save this for later"
|
||||
|
||||
### 5. LAYER VOICE — Apply Direct Response Principles
|
||||
|
||||
Take proven patterns and make them yours with these voice principles:
|
||||
|
||||
**"Smart friend who figured something out"**
|
||||
- Write like you're texting advice to a friend
|
||||
- Share discoveries, not lectures
|
||||
- Use "I found that..." not "You should..."
|
||||
- Be helpful, not preachy
|
||||
|
||||
**Specific > Vague**
|
||||
```
|
||||
❌ "I made good revenue"
|
||||
✅ "I made $47,329"
|
||||
|
||||
❌ "It took a while"
|
||||
✅ "It took 47 days"
|
||||
|
||||
❌ "A lot of people"
|
||||
✅ "2,847 people"
|
||||
```
|
||||
|
||||
**Short. Breathe. Land.**
|
||||
- One idea per sentence
|
||||
- Use line breaks liberally
|
||||
- Let important points stand alone
|
||||
- Create rhythm: short, short, longer explanation
|
||||
|
||||
```
|
||||
❌ "I spent three years building my business the wrong way before I finally realized that the key to success was focusing on fewer things and doing them exceptionally well."
|
||||
|
||||
✅ "I built wrong for 3 years.
|
||||
|
||||
Then I figured it out.
|
||||
|
||||
Focus on less.
|
||||
Do it exceptionally well.
|
||||
|
||||
Everything changed."
|
||||
```
|
||||
|
||||
**Write from emotion**
|
||||
- Start with how you felt, not what you did
|
||||
- Use emotional words: frustrated, excited, terrified, obsessed
|
||||
- Show vulnerability when authentic
|
||||
- Connect the feeling to the lesson
|
||||
|
||||
```
|
||||
❌ "Here's what I learned about pricing"
|
||||
|
||||
✅ "I was terrified to raise my prices.
|
||||
|
||||
My hands were shaking when I sent the email.
|
||||
|
||||
Here's what happened..."
|
||||
```
|
||||
|
||||
### 6. CONVERT — Turn Attention into Action
|
||||
|
||||
Bridge from engagement to business results:
|
||||
|
||||
**Soft conversions:**
|
||||
- Newsletter signups in bio/comments
|
||||
- Free resource offers in follow-up comments
|
||||
- DM triggers ("Comment X and I'll send you...")
|
||||
- Profile visits → optimized profile with clear CTA
|
||||
|
||||
**Direct conversions:**
|
||||
- Link in comments (not post body on LinkedIn)
|
||||
- Contextual product mentions within valuable content
|
||||
- Case study posts that naturally showcase your work
|
||||
- "If you want help with this, DM me" (sparingly)
|
||||
|
||||
---
|
||||
|
||||
## The Formula
|
||||
|
||||
```
|
||||
1. Find what's already working (don't guess)
|
||||
2. Extract the patterns (hooks, formats, CTAs)
|
||||
3. Layer your authentic voice on top
|
||||
4. Test and iterate based on your own data
|
||||
```
|
||||
|
||||
## Reverse Engineering Checklist
|
||||
|
||||
- [ ] Identified 10-20 top creators in niche
|
||||
- [ ] Collected 500+ posts for analysis
|
||||
- [ ] Ranked by engagement rate
|
||||
- [ ] Documented top 10 hook patterns
|
||||
- [ ] Documented top 5 format patterns
|
||||
- [ ] Documented top 5 CTA patterns
|
||||
- [ ] Created voice guidelines (specificity, brevity, emotion)
|
||||
- [ ] Built template library from patterns
|
||||
- [ ] Set up tracking for your own content performance
|
||||
@@ -0,0 +1,237 @@
|
||||
# Short-Form Video: Hooks, Scripts & Strategy
|
||||
|
||||
Detailed reference for creating short-form video content on TikTok, Instagram Reels, and YouTube Shorts.
|
||||
|
||||
---
|
||||
|
||||
## Video Hook Library
|
||||
|
||||
### Curiosity Hooks (Best for engagement)
|
||||
|
||||
**The "Secret" Formula:**
|
||||
- "The secret to [outcome] that nobody talks about"
|
||||
- "I found the hidden feature in [product/platform] that changes everything"
|
||||
- "I can't believe this actually works..."
|
||||
|
||||
**The Unexpected Discovery:**
|
||||
- "I tried [thing] for 30 days and I was NOT expecting this"
|
||||
- "This completely changed how I think about [topic]"
|
||||
- "Nobody talks about this, but..."
|
||||
|
||||
**The Question:**
|
||||
- "Why does nobody talk about this?"
|
||||
- "Am I the only one who didn't know this?"
|
||||
- "The reason [common thing] doesn't work is..."
|
||||
|
||||
### Value Hooks (Best for saves)
|
||||
|
||||
**The Promise:**
|
||||
- "How to [achieve outcome] in [specific timeframe]"
|
||||
- "[Number] [things] that will [benefit]"
|
||||
- "Everything you need to know about [topic] in 60 seconds"
|
||||
|
||||
**The Hack/Shortcut:**
|
||||
- "[Outcome] hack that actually works"
|
||||
- "The [adjective] way to [outcome]"
|
||||
- "If you're struggling with [problem], watch this"
|
||||
|
||||
**The Warning:**
|
||||
- "Stop doing [common practice] — here's why"
|
||||
- "[Number] mistakes that are killing your [results]"
|
||||
- "Why [thing you think is good] is actually hurting you"
|
||||
|
||||
### Story Hooks (Best for watch time)
|
||||
|
||||
**The Transformation:**
|
||||
- "3 months ago, I [bad state]. Today, I [good state]."
|
||||
- "Here's how I went from [before] to [after]"
|
||||
- "I used to think [old belief]. Then [event] changed everything."
|
||||
|
||||
**The Failure:**
|
||||
- "I made a huge mistake with [topic]"
|
||||
- "Here's why I stopped [common practice]"
|
||||
- "I lost [something significant] because of this mistake"
|
||||
|
||||
**The Journey:**
|
||||
- "So this just happened..."
|
||||
- "This changed everything for me"
|
||||
- "Let me tell you about the time I [interesting situation]"
|
||||
|
||||
### Controversial Hooks (Best for comments)
|
||||
|
||||
- "Unpopular opinion: [bold statement]"
|
||||
- "[Common advice] is actually wrong"
|
||||
- "I'm going to get hate for this, but..."
|
||||
- "Most [audience] get this completely wrong"
|
||||
|
||||
---
|
||||
|
||||
## Scripting Template
|
||||
|
||||
```markdown
|
||||
## Video: [Working Title]
|
||||
|
||||
**Platform:** TikTok / Reels / Shorts
|
||||
**Length:** XX seconds
|
||||
**Format:** [Talking head / Slideshow / Demo / Screen recording]
|
||||
|
||||
### Hook (0-3 sec)
|
||||
- Visual: [What viewer sees]
|
||||
- Audio: [What they hear]
|
||||
- Text overlay: [On-screen text]
|
||||
|
||||
### Body (3-X sec)
|
||||
- [Timestamp] - [What happens/what you say]
|
||||
- [Timestamp] - [Next beat]
|
||||
- [Continue...]
|
||||
|
||||
### CTA (final 3-5 sec)
|
||||
- Verbal: [What you say]
|
||||
- Text: [On-screen text]
|
||||
- Action: [Follow, comment, link in bio, etc.]
|
||||
|
||||
### Production Notes
|
||||
- Music/sound: [Trending sound or music choice]
|
||||
- B-roll needed: [List any clips needed]
|
||||
- Graphics: [Any text animations or overlays]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Additional Video Structures
|
||||
|
||||
### The Story Arc (45-60 sec)
|
||||
|
||||
```
|
||||
[0-3s] Hook: Tease the outcome
|
||||
[3-15s] Setup: Context and stakes
|
||||
[15-45s] Journey: What happened
|
||||
[45-55s] Resolution: The result
|
||||
[55-60s] Lesson/CTA
|
||||
```
|
||||
|
||||
Best for: Personal stories, case studies, testimonials
|
||||
|
||||
### The POV/Skit (15-30 sec)
|
||||
|
||||
```
|
||||
[0-3s] Setup: Text overlay sets the scene
|
||||
[3-25s] Performance: Act out the relatable scenario
|
||||
[25-30s] Punchline or twist
|
||||
```
|
||||
|
||||
Best for: Relatable content, humor, niche communities
|
||||
|
||||
---
|
||||
|
||||
## Visual Patterns
|
||||
|
||||
### Talking Head
|
||||
- Good lighting (ring light or window light)
|
||||
- Eye contact with camera
|
||||
- Hand gestures for emphasis
|
||||
- Interesting background (bookshelf, plants, studio setup)
|
||||
|
||||
### Slideshow/Carousel Video
|
||||
- Strong visual on each slide (2-4 seconds per slide)
|
||||
- Text overlays with key points
|
||||
- Consistent style/branding
|
||||
- Voiceover or trending sound
|
||||
|
||||
### Screen Recording
|
||||
- Zoom in on important areas
|
||||
- Add cursor highlight or click animations
|
||||
- Keep movements smooth and intentional
|
||||
- Overlay your face in corner (optional but boosts engagement)
|
||||
|
||||
### B-Roll Heavy
|
||||
- Show don't tell
|
||||
- Quick cuts (1-3 seconds per shot)
|
||||
- Match cuts to voiceover beats
|
||||
- Mix wide, medium, and close-up shots
|
||||
|
||||
---
|
||||
|
||||
## Audio Strategy
|
||||
|
||||
### When to Use Trending Sounds
|
||||
- Entertainment/lifestyle content where the sound fits your message
|
||||
- When the trend is still rising (check platform trending pages)
|
||||
- Don't use when it distracts from your message or is already declining
|
||||
|
||||
### When to Use Original Audio
|
||||
- Educational content where you're speaking
|
||||
- Storytimes and personal narratives
|
||||
- Product demos and tutorials
|
||||
- Building a recognizable brand voice
|
||||
|
||||
### Voiceover Tips
|
||||
- Speak slightly faster than normal conversation
|
||||
- Vary your tone — avoid monotone delivery
|
||||
- Pause for emphasis on key points
|
||||
- Record in a quiet space, use noise removal
|
||||
- AI voices work for faceless content (ElevenLabs, etc.)
|
||||
|
||||
### Music Selection
|
||||
- Match energy to content (upbeat for tips, emotional for stories)
|
||||
- Avoid copyrighted music on Reels/Shorts
|
||||
- Use platform music libraries for safety
|
||||
- Lower music volume under voiceover (ducking)
|
||||
|
||||
---
|
||||
|
||||
## Posting Strategy
|
||||
|
||||
### Optimal Posting Times (test your audience)
|
||||
|
||||
| Platform | Best Times (local) |
|
||||
|----------|-------------------|
|
||||
| TikTok | 7-9 AM, 12-3 PM, 7-11 PM |
|
||||
| Reels | 9 AM, 12 PM, 7-9 PM |
|
||||
| Shorts | 12-3 PM, 7-9 PM |
|
||||
|
||||
### Frequency Recommendations
|
||||
|
||||
| Goal | Minimum | Optimal |
|
||||
|------|---------|---------|
|
||||
| Growing | 1/day | 2-4/day |
|
||||
| Maintaining | 3/week | 1/day |
|
||||
| Testing | 2/week | 5/week |
|
||||
|
||||
### Batch Creation Workflow
|
||||
|
||||
1. **Ideate** (30 min): Generate 10-20 concepts
|
||||
2. **Script** (1 hour): Write scripts for 5-10 videos
|
||||
3. **Batch film** (2 hours): Record all talking head content
|
||||
4. **Edit** (2-3 hours): Edit and add captions
|
||||
5. **Schedule** (30 min): Queue for optimal times
|
||||
|
||||
---
|
||||
|
||||
## Analytics & Iteration
|
||||
|
||||
### Metrics That Matter
|
||||
|
||||
| Metric | What It Tells You |
|
||||
|--------|-------------------|
|
||||
| Watch time % | Is content engaging throughout? |
|
||||
| Completion rate | Did hook + content deliver? |
|
||||
| Saves | Is content valuable enough to revisit? |
|
||||
| Shares | Is content worth spreading? |
|
||||
| Comments | Did content spark conversation? |
|
||||
| Follows | Did viewer want more from you? |
|
||||
|
||||
### What to Test
|
||||
|
||||
1. **Hooks**: Same content, different opening
|
||||
2. **Length**: 15 sec vs 30 sec vs 60 sec
|
||||
3. **Format**: Talking head vs slideshow vs demo
|
||||
4. **Time**: Morning vs afternoon vs evening
|
||||
5. **CTA**: Different calls to action
|
||||
|
||||
### When to Pivot
|
||||
|
||||
- 5+ videos with <1% completion rate → change hooks
|
||||
- High views but low follows → check CTA and content-audience fit
|
||||
- High saves but low shares → content is valuable but not social
|
||||
- Lots of comments but negative → lean into controversy or adjust tone
|
||||
Reference in new issue
Block a user