trend-threads · git:20260713.4d90955 · 2026-07-13 · sha256 fb412d77344ce406

trend-threads git:20260713.4d90955A

Immutable. This exact content is served forever at /api/v1/blob/fb412d77344ce406.

---
name: trend-threads
title: "Threads Trend Harvester Playbook"
description: "Platform-specific intel for harvesting Threads trends — current conversation-weighted ranking signals, harvest URLs, scoring rubric using reply-to-like ratio and author-reply density (views aren't surfaced), hook taxonomy that's currently winning, and dead patterns in 2026. Activates inside an octoweb:trend session whenever the user names Threads."
license: Apache-2.0
compatibility: "Octoweb browser access. Signed-in Threads session recommended for For You / Following surfaces; logged-out works for search and tag pages."
capabilities: octoweb memory-read memory-write
domains: octoweb
rules:
  - session(trend) content(threads)
  - match(\bthreads\s+(trend|trends|harvest|brief|post)\b)
  - match(\b(harvest|scan|analyze)\s+threads\b)
---

## Overview

This skill carries the platform-specific mechanics the `octoweb:trend` agent needs to harvest Threads — current algorithm signals, harvest surface URLs, scoring on conversation depth (not views), hook taxonomy, dead patterns, timing. The agent owns the shared DNA loop; this skill supplies the Threads parameters that plug into it.

## Mental model

Threads is conversation-first by design. View counts are not reliably surfaced to authors or harvesters — the visible signals are likes, replies, reposts, and quote-posts. The algorithm weighs replies and time-in-feed heavily. A post with 200 thoughtful replies outranks a post with 50k likes. Author replying to their own post extends timeline life. Reach is built by reply-loop depth, not by raw distribution intent.

## Rules

### Current ranking signals (2026)

| Signal | Effect |
|---|---|
| Reply-to-like ratio | Primary signal. >0.10 strong, >0.20 breakout |
| Author replies on own post | Multiplier — boosts the whole thread |
| Repost-to-like ratio | Distribution intent; >0.05 is unusual on Threads |
| Image / carousel attachment | ~30–60% reach lift |
| Long-form post with paragraph breaks | Dwell-time bonus |
| External link in root | ~20–30% suppression. Put link in self-reply |
| Cross-post-from-Instagram residue | Read as a tell; reach penalty |
| Topic tags (bare-text, no #) | Discovery surface — one focused tag per post |

There is no surfaced "engagement weights" leak the way X has. Calibrate by what's visible on the page.

### Harvest surfaces (run in parallel)

| Surface | URL | Yields |
|---|---|---|
| Topic search, top | `https://www.threads.net/search?q=<topic>&serp_type=top` | Algorithm-picked top performers |
| Topic search, recent | `https://www.threads.net/search?q=<topic>&serp_type=default` | Last-day live posts |
| Tag pages | `https://www.threads.net/tag/<tag>` | Topic communities (Threads uses bare-text tags) |
| For You (signed-in) | `https://www.threads.net/` | Personalized algorithmic surface |
| Anchor profiles | `https://www.threads.net/@<handle>` | Last 7 days per anchor |
| Following feed | `https://www.threads.net/?feed=following` | Niche peers if user has built a graph |

Run 4–6 in parallel. Threads infinite-scrolls — scroll 2–3× via `browser_scroll` before snapshotting to load enough posts.

### Scoring rubric (Threads-specific signals)

Virality axis 0–5:
- Reply-to-like ratio — primary. >0.10 strong, >0.20 breakout.
- Absolute reply count — >100 replies in <24h is a genuine break.
- Author-reply density — does the OP reply to their own thread? Multiple self-replies = algorithm boost and extended life.
- Repost ratio — repost/like >0.05 indicates strong distribution.
- Account band — micro account hitting 500 replies is a stronger structural signal than mega doing same.

Niche-fit axis 0–5 — universal scale.

Drop everything below 3 on either axis.

Do not score on view counts — Threads doesn't surface them reliably. If a post's metadata shows a view count anyway, treat it as auxiliary, not primary.

### Hook taxonomy currently winning

1. Conversation-starter opinion — bold take that invites disagreement
2. The honest admission — "I was wrong about X. Here's why I changed my mind."
3. The specific question — only when narrow enough to invite reply (not "thoughts?")
4. The micro-story — 2–3 lines, specific moment, ends on tension
5. The contrarian observation — "Everyone says X. Nobody says Y."
6. The receipt — screenshot + 1–2 lines of context
7. The list of three — three specifics, quick rhythm, no expansion

### Dead patterns

- Instagram-style emoji bullets (🔥 ✨ 💎 as line starters)
- Hashtag stacks (Threads uses tags differently — bare text, max 1)
- "Drop a 🔥 if you agree" engagement bait
- Visible cross-post tells — "Link in bio", IG-caption residue
- AI vocabulary in hook line
- "Hot take:" / "Unpopular opinion:" prefixes — just state it
- Self-promotional opener with no hook

### Format and length

| Goal | Length | Format |
|---|---|---|
| Hot take, single | 100–250 chars | Single |
| Story / setup | 400–500 chars | Single, near Threads' post cap |
| Chain | 3–5 self-replies, ~300 chars each | Self-reply chain |
| Image post | 200–400 chars + image | Strong default in 2026 |

For any take longer than 250 chars, default to "post + 1–3 self-replies." Self-reply chains extend timeline life — the algorithm re-surfaces the original post each time a reply lands.

### Timing

- Mixed mobile-heavy audience — 9 AM–12 PM ET and 6–9 PM ET work best for tech niches
- Slower than X — give a post 24–48h to develop replies before judging it dead
- Self-reply timing — drop reply 1 within 30–60 minutes of the root post, reply 2 a few hours later when the first wave of comments lands

### Saturated-take detection

Threads' tech-niche saturated takes in 2026 cluster around: "AI is the new electricity," "GPTs are sentient" / "GPTs are dumb" hot-take cycles, generic LLM benchmark complaints, "Just use Claude" / "Just use ChatGPT" tribal posts. Verify saturation live before flagging.

## Examples

### Example 1: Hook taxonomy + reply-pattern labeling

Bad — raw count, no DNA:
```
@dev_handle got 800 likes and 150 replies on a Threads post about Claude.
```

Good — labeled, DNA called out, reply pattern named:
```
@dev_handle (8.2k followers) — 820❤ / 187💬 / 41🔁
> I tried 3 agent frameworks this week. The one that worked least is the one with the most stars.
Hook type: contrarian observation + specific count.
Length: 122 chars.
Author replied 4 times in own thread (one re-stating the claim, three answering specific replies) — extended timeline life ~3×.
DNA: short hook + invited disagreement + author-reply discipline.
```

### Example 2: Dead-pattern call

Surface a post that LOOKS viral but fails the dead-pattern gate:
```
@handle — 1.4k❤ but only 11💬 (reply-to-like 0.008, far below 0.10 floor)
Hook: "🔥 Hot take: AI agents are dead. Drop a 💀 if you agree."
Failure: engagement bait + emoji bullet + zero conversation. The like count is shallow; the post is a write-off for niche transplant.
```

## Checklist

Before returning the Threads section of the brief:
- [ ] Every cited post has handle, like count, reply count, repost count, URL, and posted-time
- [ ] Reply-to-like ratio computed and used as primary virality signal — not raw likes
- [ ] Author-reply density noted for every top cluster
- [ ] Account-size band tagged on every cited post
- [ ] No score depends on view counts
- [ ] (Opt-in mode only) Format prescription per recommended angle includes self-reply count (post + N self-replies)
- [ ] Saturated-take list surfaced — at least one per recommended angle
- [ ] No recommended hook uses cross-post tells, hashtag stacks, "Hot take:" prefixes, or emoji bullets
- [ ] (Opt-in mode only) Hook bank entries each tagged to a taxonomy type from this skill
- [ ] Self-reply timing recommended (reply 1 within 30–60 min of root, reply 2 a few hours later)
- [ ] All background tabs closed before returning brief

## Composition / References

- Pairs with `social-threads` (content domain) for writing the actual post from the brief.
- Threads search URL pattern: `serp_type=top` for algorithm-picked, `serp_type=default` for recency.
- Use the agent's universal output schema.