Skip to content
Back to skills

Rea Brand

ASecurity

Use when the user wants to reverse engineer a person's personal brand or creator growth - how a creator, founder or influencer grew their audience, when they took off, who boosted them, how their posts are made and what wins, how they turn followers into money, and what to copy. Covers every platform the person uses (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Substack and more). Also for "how did @handle grow", "teardown of <person>'s personal brand", "what makes <creator>'s posts work...

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
content-marketingjavascriptpythongojavareactgitapi

Works with

  • cursor
  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add AdityaUmale/rea-brand --skill rea-brand --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rea Brand?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rea Brand
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/adityaumale-rea-brand/badge)](https://www.skillsdirectory.com/skills/adityaumale-rea-brand)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rea-brand
description: Use when the user wants to reverse engineer a person's personal brand or creator growth - how a creator, founder or influencer grew their audience, when they took off, who boosted them, how their posts are made and what wins, how they turn followers into money, and what to copy. Covers every platform the person uses (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Substack and more). Also for "how did @handle grow", "teardown of <person>'s personal brand", "what makes <creator>'s posts work", "reverse engineer <person>".
---

# REA brand

One person in, a playbook out: which accounts they have, when each one took off, who boosted
them, how their posts are made and what wins, how the audience turns into money, and ten plays
the user can copy, each with a ready prompt.

Runs on every platform the person is on that treg has data for. X, LinkedIn, Instagram and
YouTube are the **core four**, with named endpoints and tuned checklists. Any other platform
(TikTok, Threads, Substack, Facebook, Reddit, Bluesky, Medium, Pinterest…) runs through the same
steps with endpoints found at run time. A platform where the person has no confirmed account gets
no calls and costs nothing.

Runs on treg. If `treg --version` fails, read https://treg.to/llms.txt, follow it to install and
sign in, then come back here. A measured 6-platform run cost about 8¢ (118 calls).

## Modes

| Mode | When | Steps | Delivers |
|---|---|---|---|
| **full** (default) | "how did PERSON grow", "teardown", "what to copy" | 0-9 | `brand.md` + `brand.html` + CSVs |
| **content** | hooks, titles, thumbnails, formats, "what content works", and nothing about growth | 0, 1, 2, 5, 10 | `content.md` + `content.html` + CSVs |

## Rules

- **Public creators only.** PERSON must publish for an audience: at least one confirmed account
  with 1,000+ followers, or a public figure (founder, author, journalist, athlete, politician).
  Anyone else → stop and say this skill is not for private individuals.
- **The public brand only.** Study what PERSON publishes, how it spreads and how it earns. Pull no
  follower lists, no contact details (email, phone), nothing about home, family or private life,
  and leave out location fields even when a profile returns one. Log in nowhere, use no cookies,
  create no accounts, comment on nothing, contact no one.
- **Name only public accounts.** In the report, name PERSON and accounts with 10K+ followers. Count
  everyone else (commenters, small accounts) instead of naming them.
- **Skip what doesn't exist.** Only the accounts confirmed in step 1 get calls. No account, a
  private account, under 10 posts, or no data source in treg → that platform is "skipped" with the
  reason. Never search a platform "just in case".
- **Other platforms.** For a platform outside the core four: `treg catalog search "<platform> user
  profile"` and `"<platform> user posts"`. Prefer a routed `treg.<platform>.<job>` tool when one
  exists; otherwise pick by inputs that match what you hold, then reliability, then price. Known
  good picks:
  - Substack: `crawl4ai.substack.publication.posts` {"publication":"DOMAIN","limit":50} returns
    likes, comments, word count and paywall status for a fraction of a cent. The free RSS feed
    (`https://DOMAIN/feed`) has no engagement, so use it only as a fallback.
  - Threads: `scrapecreators.x.v1-threads-user-posts` --query handle=h returns about the 15 latest
    posts with no paging, so expect "too few posts to call a pattern".
  - Medium or a podcast: the RSS feed, read with plain `curl`.
- **SEEN or INFERRED.** SEEN = a call result or an image shows it; link it. INFERRED = reasoned from
  what was seen; say from what. Nothing seen → "not seen", never guessed. A number PERSON states
  about themselves is "SEEN (self-reported)"; a number someone else states is a claim.
- **Money.** Before an endpoint's first call: `treg catalog get <id>`, quote its price, check it fits
  the cap. `treg call` prints each charge on stderr (`treg: charged …`); keep a running ledger from
  it and stop before the cap is passed.
- **How to call.** `anyapi.*` endpoints take a JSON body (`treg call <id> --data '{…}'`).
  `harvestapi.*` and `scrapecreators.*` take query params (`--query key=value`). `catalog get` shows
  the ready call line.
- Free first: `treg.web.search` and `treg.web.extract` with header
  `X-Treg-Route-Prefer: tinyfish` (and `X-Treg-Route-Max-Cost` set low). Blocked page → the route
  tries the next vendor; still blocked → list it as blocked and move on.
- An endpoint fails → `treg catalog search` the same job, try one alternative (named below where
  known) → else "unavailable".
- Python does all math; every number shown comes from code output. Date every count. pandas,
  scikit-learn, Pillow and markdown do the work; install them in a virtualenv if they are missing.
- Compare engagement only within a platform, never across platforms.
- **Checkpoints.** After each step print a ◆ line: a 3-line finding, what the next step checks and
  its est. cost, then keep going. Stop and ask only at step 1's table, when spend runs 50% over the
  step's estimate, or when the next call would pass the cap.

## 0 · Setup

INPUT: mode | PERSON (a name, any handle, or a profile URL) | platforms (default: every confirmed
account with a data source) | the user's own handles, niche and stage (starting out <1k / growing
1k-50k / established 50k+) | budget cap (default 1 USD) | language of PERSON's posts (default en).
The user's handles and niche are optional: without them, assume "starting out" and leave blanks
like [YOUR NICHE] in the prompts. Ask for PERSON if missing; ask for the rest only once, in the
same message.

Work in `rea-brand/<person-slug>/`: `raw/` for call results, one folder per platform, and a
`ledger.txt` with one line per call.

## 1 · Find the accounts — ~½¢, then stop for a check

Everything after this step runs only on the table this step produces.

1. Profile what the user gave:

   | Platform | Profile call | Fallback |
   |---|---|---|
   | X | `anyapi.x.user.profile` {"handle":"h"} (note `pinnedPostIds` and `createdUtc`) | — |
   | LinkedIn | `anyapi.linkedin.user.profile` {"url":"https://www.linkedin.com/in/ID"} | `harvestapi.linkedin.user.profile.main` |
   | Instagram | `anyapi.instagram.profile` {"handle":"h"} | `scrapecreators.instagram.user.profile` |
   | YouTube | `anyapi.youtube.channel` {"handle":"@h"} | `scrapecreators.youtube.channel.profile` |
   | Any other | found with `treg catalog search "<platform> user profile"` (see Rules) | the next result |

   Only a name? `treg.web.search` {"q":"\"NAME\" X LinkedIn Instagram YouTube"} → profile the
   best match. Two people share the name → ask the user which one.
2. Find the other accounts, free first: the bio, bio links and website from each profile; read the
   website and any link-in-bio page (Linktree, Beacons, Stan, bio.link, a custom page) with
   `treg.web.extract`; the YouTube channel description and links. Collect **every** social or
   publishing link found there (TikTok, Threads, Substack, Facebook, Reddit, Bluesky, Medium,
   Pinterest, a podcast…), not just the core four. Still missing one of the core four → one
   `treg.web.search` {"q":"\"NAME\" site:linkedin.com/in"} (or site:instagram.com,
   site:youtube.com, site:x.com), then profile the hit. Other platforms count only when PERSON's
   own pages link to them.
3. For each platform outside the core four, find its data source (see Rules) and profile it. No
   profile or posts endpoint in the catalog → status "skipped: no data source".
4. Confirm. A handle counts only if PERSON's site or another confirmed account links to it, or its
   own bio links back to one of them. The same name alone is not proof; namesakes are common.
5. Show this table and **stop**:

   platform | handle | confirmed by | followers | posts | data source (endpoint ids) | status (run /
   skipped: none found / private / under 10 posts / no data source) | est. cost of steps 2-7

   Ask: right person? any account missed? any platform to drop? Continue only after the answer.

## 2 · Pull the posts — ~½¢ per platform

Per confirmed platform: the latest 100 posts or the past 12 months, whichever comes first, page by
page. Stop early if the cap would be passed.

| Platform | Call (and how to page) | Keep |
|---|---|---|
| X | `anyapi.x.user.posts.timeline` {"handle":"h"}, next page with `cursor` = previous `nextCursor`. Then 2 pages of `anyapi.x.user.posts` {"handle":"h","limit":50} for replies (`isReply`; the reply target is the first @handle in the text). | text, date, views, likes, reposts, quotes, replies, bookmarks, media, pinned |
| LinkedIn | `harvestapi.linkedin.user.posts` --query profilePublicIdentifier=ID --query scrapePostedLimit=year --query page=1, then page 2, 3…, passing `paginationToken` when returned (an empty page ends it). Drop rows where `header.text` shows PERSON reposting someone else. Fallback: `anyapi.linkedin.profile_posts_full` (about 5x the price). | text, date, reactions, comments, shares, format (text, image, document, video, poll, article) |
| Instagram | `anyapi.instagram.user.posts` {"handle":"h"}, next page with `cursor`. Then 2 pages of `anyapi.instagram.user.reels` {"handle":"h"} for plays and length. | caption, date, kind (reel; carousel = 2+ media; photo), likes, comments, plays, media URLs |
| YouTube | `anyapi.youtube.channel_videos` {"handle":"@h","sort":"latest"}, next page with `cursor`; one page with "sort":"popular"; 2 pages of `anyapi.youtube.channel_shorts` {"handle":"@h"}. | title, views, date, Short vs long; thumbnail = `https://i.ytimg.com/vi/ID/hqdefault.jpg` (free) |
| Any other | The posts endpoint chosen in step 1, paged as its `catalog get` says. | the same columns, whatever the platform reports |

Platform quirks, all seen in real runs:
- **X.** Drop retweets (text starts with `RT @`). A post whose whole text is one `https://t.co/…`
  link is an **X Article**: set its format to `article` (step 5 reads its title). The timeline can
  skip the pinned post, so fetch each of the profile's `pinnedPostIds` with `anyapi.twitter.tweet`
  {"url":"https://x.com/HANDLE/status/ID"}; a pinned post is often PERSON's biggest hit.
- **Instagram.** The first rows can be pinned posts from years ago. Flag posts older than the
  window as `pinned_old`, leave them out of step 5's ranking, and report them as past hits (their
  dates help step 3).
- **YouTube.** `publishedTime` is relative ("3 months ago"): store an approximate date and mark it
  approximate. `lengthText` may not parse; exact dates and lengths for the top videos come from
  step 5.

Save one CSV per platform, `<platform>/posts.csv`, with the same columns: platform, id, url, date,
date_is_approx, format, text, views, likes, comments, shares, saves, duration_s, is_reply,
media_url, pulled_at.

## 3 · When they grew — ~½¢

No source sells follower history for a person, so build each platform's curve from dated signals.

- **Milestones (SEEN, self-reported).** Regex the step 2 text for PERSON's own counts ("10k
  followers", "100,000 subscribers", "hit 50K"). On X, also `anyapi.x.search.posts`
  {"query":"from:HANDLE (followers OR subscribers)","queryType":"Top"}, 1-2 pages. Each match that
  states PERSON's own count is a dated point. Posts that list several numbers ("Year 1: 10K, Year
  2: 50K…") are the richest; read them in full.
- **Snapshots (YouTube only).** The Wayback Machine is free (plain `curl` is fine):
  `https://web.archive.org/cdx/search/cdx?url=youtube.com/@HANDLE&output=json&fl=timestamp,original&collapse=timestamp:6`
  lists one snapshot a month. Read at most 4, spread across the years, 10 seconds apart, and stop
  at the second HTTP 429. The subscriber count is in `subscriberCountText`. Skip X, Instagram and
  LinkedIn snapshots: they need JavaScript or a login and come back empty.
- **Engagement trend (INFERRED).** Python: median engagement per month per platform from step 2.
  The largest step up that holds for 2+ months is the likely inflection.
- **The early era.** What PERSON posted while still small. Go back to the year PERSON had under
  10K followers (from the milestones), else to the account's start, at most 6 years:
  - X: `anyapi.x.search.posts` {"query":"from:HANDLE since:YYYY-01-01 until:YYYY-12-31","queryType":"Top"},
    one page per year. Say these are "Top" samples, which favor hits.
  - YouTube: page `channel_videos` to the oldest video only if the channel has under 300 videos;
    otherwise use the "popular" page and say the early era was not pulled.
  - LinkedIn and Instagram: what step 2 reached, plus old pinned posts; say how far back that is.
- Output, per platform: date | signal | value | SEEN/INFERRED | link. Mark the inflection(s) and
  the first post seen.

## 4 · Who boosted them — ~2¢

Bigger accounts sharing PERSON, PERSON appearing on bigger stages, and PERSON working the replies.
Date every row against step 3's inflection. Run only the parts for confirmed platforms.

- **X mentions.** `anyapi.x.search.posts` {"query":"@HANDLE min_faves:500 -from:HANDLE","queryType":"Top"}
  and {"query":"\"NAME\" min_faves:500 -from:HANDLE","queryType":"Top"}, 1-2 pages each. Profile
  the top 15 authors with `anyapi.x.user.profile` for follower counts. Label each: quote, mention,
  recommendation, summary thread about PERSON, translation, clip, criticism. Many posts in other
  languages about one piece means it went international; say so.
- **X replies.** From step 2's replies: the share of PERSON's posts that are replies, replies per
  day, the 15 accounts they reply to most → profile the top 10. Replying mostly to much bigger
  accounts is a reply strategy (INFERRED).
- **Podcasts and guest spots.** `anyapi.youtube.search` {"query":"NAME interview"} and
  `treg.web.search` {"q":"\"NAME\" podcast interview"}. Keep only appearances where PERSON's name
  is in the title or channel and the channel is not PERSON's own: host, date, views, link.
- **LinkedIn.** On PERSON's 3 top posts: `harvestapi.linkedin.post.comments` --query post=URL.
  Count commenters with large followings, and people who appear on 2+ of the 3 posts. A repeat
  group may be an engagement circle (INFERRED, and say plainly it is a guess). Name no one under
  10K followers.
- **Instagram.** `anyapi.instagram.tagged_posts` {"handle":"h"}, 1 page → who features PERSON;
  collabs and tags in step 2 captions.
- **YouTube collabs.** Titles or descriptions that name other creators ("with", "ft.", "x").
- **Other platforms.** No separate boost search: note collabs, features and guest posts seen in
  their step 2 rows.
- Output: date | platform | who (followers) | what | reach | link | before or after the inflection.

## 5 · How the posts are made — ~2¢ + image reads (free)

Per confirmed platform: rank, look, read, topics, voice, write up.

**Rank.** Engagement: views on X and YouTube; reactions + comments on LinkedIn; likes + comments on
Instagram (plays for reels); likes + comments on Threads and Substack. Drop posts under 7 days old
(not settled) and `pinned_old` posts. Python marks the top quarter and the bottom half. Under 20
posts → list them and call no pattern ("too few posts to call a pattern").

**Details for the top posts.**
- YouTube top quarter: `anyapi.youtube.video` {"id":"…"} for the exact publish date, length
  (`durationMs`) and likes, at most 15 calls.
- X Articles: `anyapi.twitter.article` {"url":"…"} on the top 10 for title, word count and
  opening lines.

**Look.** Download now (Instagram links expire within hours) the image, cover, first slide or
thumbnail of every top-quarter post and 5 bottom posts into `<platform>/img/`. Build one contact
sheet per platform and tier (a Pillow grid with each post's engagement under it), save them as
`<platform>/img/sheet_<platform>_top.jpg` and `sheet_<platform>_bottom.jpg` (the report template
looks for these names), plus a sidecar beside each, `sheet_<platform>_<tier>.json`: a list of
`{"rank", "engagement", "url"}` in sheet order, which the report prints as linked captions. Match
the cell shape to the media (portrait for Instagram and LinkedIn, 16:9 for YouTube and Shorts).
Open the sheets. A file that does not download is "not read", never described from its caption.

**Read** each post against its platform's checklist. What the text or image shows is SEEN; why it
might work is INFERRED. Check the format split first: when one format holds most of the top
quarter (Articles on X, carousels on Instagram, text images on LinkedIn), that is the pattern,
and hook wording may show no difference at all.

- **X.** Articles vs regular posts: share of the top quarter and median views of each. Article
  titles, length in words, and the first lines. Regular posts: the first line (before "Show
  more"): length, a number, "I" or "you", a question, a contrarian claim. Thread or single
  (`anyapi.twitter.thread` {"url":"…"} on the top 3 threads, if any). Media: none, screenshot, chart
  or metric card, video, meme, photo of PERSON. Hour posted. PERSON's own numbers in top posts.
- **LinkedIn.** The 2 lines before "see more". White space and line length. Format: text, image,
  document carousel, video, poll, article. Image shows PERSON's face, a product, or a text graphic.
  Story, advice, list or contrarian take. The closing question or CTA. Hashtag count. Days posted.
- **Instagram.** Which kind wins: reel, carousel or photo. Cover or first slide: headline words,
  face, template. Carousels: slide count, what the last slide asks. Reels: length, on-screen hook
  text. Caption: the line before "more". "Comment WORD to get X" lead magnets. The grid: repeated
  colours, fonts, frames.
- **YouTube.** Title: length, number or money, a time frame ("in 6 months"), first person,
  question, brackets, the promise. Thumbnail: face and its emotion, words on it (count them; don't
  assume ≤ 4), before/after, contrast and main colour. Do title and thumbnail repeat or add to each
  other? Length, Shorts vs long, upload rhythm.
- **Any other platform.** Use the nearest checklist. Threads and Bluesky → X. TikTok and Facebook
  reels → Instagram reels plus YouTube Shorts (cover, on-screen hook, length, sound). Substack,
  Medium and other newsletters → YouTube's title list plus subtitle, length in words, free vs paid,
  publish rhythm. Reddit → title pattern (question, story, "I made…"), subreddits. Pinterest → pin
  image and title.

**Topics.** Label every post with one of 3-6 topic pillars drawn from the posts, one set across
all platforms. Python: share of posts and median engagement per pillar per platform. A pillar that
is 10% of posts but 40% of top posts is the money topic. Report the share left as "other"; keyword
rules alone can leave a third of posts unlabeled.

**Voice.** Tone, sentence length, signature phrases and coined terms, recurring series, emoji use,
how posts open and close. Two quoted examples each.

**Write up**, per platform:
- **Pattern.** 3-5 traits the top quarter shares and the bottom half lacks, each counted ("7 of 9
  top posts open with a number, 2 of 14 bottom ones"). A trait that shows no difference is not a
  pattern; drop it.
- **House style.** What repeats everywhere: colours (named, hex read off the images), fonts,
  templates, series names.
- **Formulas.** The 2-3 fill-in templates behind the top hooks, titles or covers ("I [did hard
  thing] for [time]. Here's what I learned:"), one real example each.
- **Early vs now.** What changed between step 3's early era and today.

## 6 · The cross-platform system — no calls

- **Home base.** The platform with the biggest following and the earliest posts.
- **Repurposing.** Match posts across platforms that carry the same idea within 14 days (Python:
  TF-IDF cosine ≥ 0.5 on text, title or caption; check the top 10 matches by eye). Also match long
  pieces by exact title across newsletters, X Articles and YouTube within 30 days. Which platform
  gets an idea first, the median lag in days, and how its form changes (letter → Article → quote
  card → video).
- **Cadence.** Posts per week per platform over the last 13 weeks, best days and hours (say the
  timezone), weeks with no posts.
- **Who each platform is for.** The audience implied by each platform's topics and CTAs (INFERRED).
- **Skipped platforms.** List them. If one is where the user's audience is, say PERSON's playbook
  does not cover it.

## 7 · Funnel and money — ~1¢

- Read every bio link, link-in-bio page, product page and PERSON's site with `treg.web.extract`.
  Record: newsletter (Substack, beehiiv, Kit; the subscriber count if public), community (Skool,
  Discord, Circle; members and price), courses and digital products (the price next to the buy
  button, plus bundles and post-purchase upsells), quizzes that route people to an offer, a
  company or SaaS, coaching, consulting or booking links, speaking, affiliate links, merch.
- CTAs: per platform, the share of posts with a CTA and what it asks (follow, subscribe, link in
  bio, comment WORD, DM, reply). Pinned posts and featured sections.
- Sponsors: YouTube `anyapi.youtube.video_sponsors` {"url":"…"} on the top 5 and latest 5 videos
  (a "suspected sponsor" that is PERSON's own product is self-promotion, not a sponsor); elsewhere
  #ad, #sponsored, "paid partnership" or "partnered with" in step 2 text.
- Output, the funnel map: attention (platforms and followers) → capture (newsletter, community,
  lead magnet, quiz) → money (products, sponsors, services). Each SEEN or INFERRED, linked, with
  prices seen and the date.

## 8 · Moves vs growth — no calls

Which moves came right before growth sped up. Python only; everything is already pulled.

- **Moves.** One row per dated move from steps 2-7: first post on a platform, a new format (first
  thread, Article, carousel, Short, newsletter), a new series, a boost from step 4, a guest spot, a
  product or newsletter launch, a posting rate that doubled, a milestone.
- **Growth.** Per platform: monthly median engagement and the milestone points from step 3.
- **Line up.** Per move: median engagement in the 2 months before vs the month of and the 2 after;
  lift = after minus before. Moves under a month apart form one cluster; credit the cluster, never
  one move inside it.
- Under 6 months of data or under 5 moves on a platform → list the rows, claim no lift.
- Write up: the 3 moves or clusters with the largest lift, and boosts that moved nothing. The lift
  is SEEN as numbers; that the move caused it is INFERRED (monthly data, moves overlap, growth has
  other causes).
- Save `moves-vs-growth.csv`.

## 9 · The playbook — no calls

- **Ten plays,** ordered by evidence × lift (step 8) × fit for the user's stage and platforms. For a
  user who is starting out, weight early-era moves highest: what PERSON did at 1k beats what they
  do at 1M. Each play: the play (one line) | evidence (SEEN/INFERRED + links) | effort (day / week /
  quarter) | time to first result + the metric | THE PROMPT: a paste-ready prompt for the user's
  agent that starts the play for the user's own brand (concrete: posts to write with the formula
  filled in for the user's niche, accounts to reply to, a lead magnet to draft, a series to start).
  At least one play per platform where step 5 found a pattern.
- **Don't copy:** 2-3 things that look like the secret but the evidence does not support ("posts 10
  times a day" when the jump came from one podcast), what PERSON's own data shows failing, and what
  only works at PERSON's size.
- **Timeline:** every dated move in order, against each platform's growth signals, with its lift.
- **By platform:** pattern, house style, formulas, voice, what worked and what didn't, linked.
- **14-day plan** for the platforms the user chose (default: the 3 where PERSON's patterns are
  clearest): day by day, what to post (with the formula), who to engage with, and the one number
  to check on day 14.
- **Before writing,** re-check every number in the draft against the code output; drop any claim a
  recount does not support.
- **Method notes:** endpoints called, skipped platforms and why, blocked pages, images not read,
  approximate dates, the date of every count, what is INFERRED or self-reported, no affiliation
  with PERSON. The bill: total and per step, and the balance before and after.
- Deliver `brand.md` + one-file `brand.html` + the CSVs. End with the first play to run this week.
- **Build the HTML with the shipped template**, never by hand:
  `python3 <this skill's base directory>/report/build_report.py rea-brand/<person-slug>/brand.md`
  (needs `pip install markdown`; Pillow is optional). It gives every run the same design: contents
  sidebar, stat tiles, evidence pills, Stripe-style tables, growth chart, contact sheets and
  copy-prompt buttons, light and dark. Write `brand.md` to its conventions:
  - `# PERSON: personal brand teardown`, then one meta line (date, platforms, posts, calls, cost).
  - A ```` ```stats ```` block before `## The short version`, one tile per line:
    `VALUE | label | SEEN | source` (4 tiles; source is the post URL or a `#section` anchor such
    as `#x`, `#instagram`, `#bill`, so every tile links to its evidence).
  - `## The short version` as a numbered list of 5: each item a bold lead sentence, then one
    sentence of detail with the key count (all five must fit the first screen), ending with a
    "First play to run this week" line.
  - A ```` ```chart ```` block under `## When he grew`: `point YYYY-MM VALUE LABEL` lines (from the
    milestones; at least 2, or the report says there is not enough data), `pin YYYY-MM text` lines
    (dated moves), and one `caption` line. Malformed lines are skipped with a warning.
  - Each play's prompt in a ```` ```prompt ```` block.
  - One `### <Platform>` heading per platform under the content section; contact sheets saved as
    `<platform>/img/sheet_<platform>_top.jpg` and `_bottom.jpg` are placed under it automatically.
  - Write SEEN and INFERRED as plain words; the template turns them into pills.

## 10 · Content report (content mode) — no calls

- Per platform: sample size and dates, pattern, house style, formulas, voice, top 5 posts linked.
- Across platforms: the shared style, where one platform breaks it, and the repurposing chain.
- For the user (when handles were given): per platform, 5 ready hooks, titles or covers written
  from the formulas for the user's niche, and one paste-ready prompt that makes the first post.
- Method notes as in step 9.
- Deliver `content.md` + one-file `content.html` + the CSVs, built with the same template and
  conventions as step 9: `python3 <this skill's base directory>/report/build_report.py
  rea-brand/<person-slug>/content.md`.

Files in this skill

  • SKILL.md26.3 KB
  • report/build_report.py32.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.