# Roster Microsite Builder

> Build a shareable, good-looking microsite / media kit from creator audience data. Use when the user wants to "make a media kit", "build a roster site", "create a shareable creator/roster page", "wrap deck for these creators", "turn this roster into a website", or "a site like the audience report page". Renders one creator or a full roster into a Cowork HTML artifact styled after the audience-report layout. Pulls audience reports for any creators that need them (paid — preflight the cost).

- Skill: `creatorland/roster-microsite-builder` (Agent Skill)
- Install (CLI): `npx skillmds@latest add creatorland/roster-microsite-builder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/creatorland/roster-microsite-builder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: creatorland (https://skillmd.com/u/creatorland)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/creatorland/roster-microsite-builder

---


# Roster Microsite Builder

Spin up a good-looking, **shareable website** — a media kit for one creator or a
whole roster — styled after the audience-report page, saved as a Cowork artifact
for one-click sharing. Doubles as the agency "wrap deck". It is also a big
**generation engine**: an agency rendering its roster pulls (and thereby seeds
the pooled cache with) an audience report per creator in one move, so the next
render next month is mostly free.

Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit
prices, the nine conventions). This skill honors the credit-estimate discipline
(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md) and the Freshness Gate
(${CLAUDE_PLUGIN_ROOT}/shared/freshness-gate.md). Use the **`creatorland-design`**
skill for brand tokens, fonts, and components so the microsite is on-brand.

> One creator, a procurement/legal dossier (not a website) → `creator-diligence-audience-report`.
> Just the cost estimate for a roster → run `check_audience_coverage` alone.

## Inputs to collect

- **Scope** (required) — a single creator, or a roster (list / CSV / pasted
  handles). For each: **platform** + handle (and `source_user_id` if known —
  it guarantees a cache hit).
- **View** — single media-kit page, or a roster grid/index. Default: roster
  grid when >1 creator.
- **Consent (creator-side use)** — if this microsite is a MEMBER's OWN media
  kit (their data shown back to them or to brands on their behalf), confirm
  consent before exposing their data. Flag it; do not assume.

## Flow

1. **Scope + cost preflight (MANDATORY).** Run `check_audience_coverage`
   `{ creators: [...] }` (free) across the whole roster first, then state:

   > <N> creators: **<C> cached (free), <F> fresh ≈ <F×25> credits**
   > (~$<F×0.63>). Build all, or only the cached ones, or cap to N? Continue?

   Pull only after the human confirms the spend. Honor "only the cached ones"
   and "cap to N".

2. **Pull data per creator** (cache-first) — `get_audience_report`
   `{ platform, source_user_id | handle }` for each in scope (25 credits each,
   or $0 on a cache hit). Optionally `query_market_intelligence`
   `{ mode: "rate", vertical, creator_tier }` per creator (derive `creator_tier`
   from that creator's follower count — emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+ — so the chip scopes to
   same-size creators; a tier too thin for the floor broadens, disclosed, to the
   vertical band) for a rate-band chip. Capture each
   report's `as_of {profile_updated}` and `coverage` block.

3. **Render the microsite** — ONE self-contained HTML artifact, Creatorland-
   branded (use `creatorland-design` tokens), styled after the audience-report
   layout:
   - **Per-creator card/section:** avatar (the paid-plan `avatar { url, source }`
     from `search_creators`/`get_creator_profile` — render the headshot when
     `url` is present, and degrade gracefully to an initials monogram when it's
     `null`, e.g. on free/demo plans), handle, platform, followers, real
     engagement rate, **fake-follower % (suspicious/bot) + mass-follower %
     (real but low-value) + a red/green credibility badge**,
     audience age/gender charts, geo (top countries / US weight), top interests
     + audience brand-affinity, recent/top posts, and brand history.
   - **Roster view:** a clean grid/index with filters (tier, platform, audience
     geo, credibility).
   - **Charts:** Chart.js loaded **from CDN only** — the artifact must be fully
     self-contained (no external storage APIs, no localStorage), per the Cowork
     artifact rules.

4. **Save as a Cowork artifact** (`create_artifact`) so it is shareable +
   re-openable. Offer a **PDF export** of the same page.

5. **Honest data labels** — per creator: "audience data **as of
   <profile_updated>**"; a roster coverage line ("audience data available for
   <M> of <N>"); credibility badge labeled **vendor-derived**; Instagram-first
   coverage noted where TikTok/YouTube lack credibility / audience
   brand-affinity. **Strip all PII** — no contact info anywhere on the page.

## Deliverable

A single shareable Cowork HTML artifact:

- **Single creator:** a one-page media kit (hero + the per-creator card above).
- **Roster:** a header (roster name, N creators, coverage "M of N", date) + a
  filterable grid of per-creator cards.
- Footer/provenance: "Audience data as of <dates>; credibility scores are
  vendor-derived; no contact information shown (by design)."

> Marketing tie-in: ship **one live example** generated by this skill, linked
> on the MCP marketing site as "see a sample roster site" (see CRE-889).

## Honesty rules

- **Cost is confirmed before pulling.** The free `check_audience_coverage`
  preflight runs first; the paid pulls happen only on explicit go-ahead.
- **Self-contained artifact.** Chart.js from CDN only; NO external storage /
  localStorage / sessionStorage (Cowork artifact rules) — all data inline.
- **Cache-first economics.** A re-render next month is mostly cache hits (free
  vendor cost), so say "<C> of <N> were free from cache" in the build summary.
- **Credibility is vendor-derived — badge it.** Never imply the score is a
  Creatorland computation.
- **Fake ≠ mass followers.** Two figures, not one: fake-follower % = suspicious/
  bot accounts; mass-follower % = real people who over-follow (low-value, not
  fake). Never merge them into a single "fake" number.
- **Instagram-first honesty.** TikTok/YouTube cards show demographics + geo and
  state credibility / audience brand-affinity are "not available for this
  platform today" — never fabricated.
- **Consent gate for creator-side use.** A member's own media kit is shown only
  after consent is confirmed.
- **PII invariant (convention 7).** No contact info on the page, regardless of
  source (the MCP strips the report's `contacts`; you add none). "Contact via
  Creatorland" is the only contact affordance.

## Credit footprint

~25 credits per creator needing a fresh report (cached creators are the same 25
billed but $0 vendor cost), + optional 5 per rate-band chip. A 12-creator roster
with 5 cached ≈ 7×25 = 175 credits (~$4.40); the same roster re-rendered next
month, mostly cached, is far cheaper. The free `check_audience_coverage`
preflight always runs first and the estimate is stated before any pull.

