Brand Setup
One-time initialization. Run this before your first campaign to populate the three brand files that every other skill reads. After this, you never need GrowthClaw or manual templates.
What This Does
Given a brand name and website URL, this skill:
- Scrapes the brand's website for voice, positioning, and product details
- Checks their social presence for how they actually talk to customers
- Mines reviews and comments for audience language and pain points
- Scans 2-3 competitors for positioning gaps
- Generates three files in
workspace/brand/ that the rest of the pipeline consumes
Step 1: Collect Inputs
Required:
- Brand name
- Website URL (homepage)
Optional (improve output quality):
- Social media URLs (X/Twitter, Instagram, TikTok, LinkedIn)
- Competitor names or URLs (2-3)
- Product category or vertical
- Any existing brand guidelines or tone docs
If the user only provides brand name + URL, that's enough. Research fills the gaps.
Step 2: Research the Brand
Read references/research-protocol.md for the full protocol. Summary:
2a. Website Scrape
Scrape these pages (in order of priority):
- Homepage — positioning, hero copy, value props, overall energy
- About / Our Story — founding narrative, mission language, personality
- Product pages (top 2-3) — feature language, benefit framing, price positioning
- FAQ or Help — how they talk when being helpful vs selling
Extract: sentence structure, formality level, jargon, banned words (what they avoid), energy (calm vs urgent), humor presence, emoji use.
2b. Social Media Scan
Check their active social profiles (X/Twitter and Instagram minimum):
- How do they talk in captions vs replies?
- Do they use emoji? How much?
- Formal or casual? First person or third?
- Do they joke? What kind of humor?
- What hashtags/language patterns repeat?
Focus on the gap between website copy and social voice — social is usually more authentic and closer to how a UGC script should sound.
2c. Review Mining
Find 15-30 customer reviews from:
- Amazon (if applicable)
- Reddit (search brand name + product category)
- Social media comments (Instagram, TikTok, X)
- Trustpilot / G2 / app store reviews (depending on product type)
Extract:
- Exact phrases customers use to describe the problem ("I was so tired of...")
- Exact phrases for the result ("now I actually...")
- Emotional language — frustration, relief, surprise, delight
- Demographic signals — life stage, context clues, purchase motivations
- Objections and hesitations before buying
2d. Competitor Scan
Scan the homepage + positioning of 2-3 competitors:
- What claims do they all make? (these are table stakes, not differentiators)
- What does THIS brand say that competitors don't?
- What positioning gaps exist?
- What audience segments are underserved?
Step 3: Generate the Three Files
workspace/brand/voice-profile.md
Must include:
- Tone spectrum: where the brand sits on formal↔casual, serious↔playful, expert↔peer
- Energy level: calm/measured vs urgent/energetic vs somewhere between
- Sentence patterns: short and punchy? Long and flowing? Mixed?
- Vocabulary: words they love, words they never use
- What they say vs don't say: specific phrases the brand uses repeatedly vs language they avoid
- Example phrases: 5-10 real phrases pulled from their content that capture the voice
- UGC calibration: how the voice should shift for UGC context (slightly more casual, more first-person, more "real talk")
workspace/brand/positioning.md
Must include:
- One-line positioning: what they are and for whom, in one sentence
- Core value props: 3-5 key benefits in the brand's language
- Differentiation: what they claim that competitors don't
- Competitive landscape: who they compete with and how they position against each
- Price positioning: premium, mid-market, accessible, or value
- Proof points: stats, awards, testimonials, social proof they lean on
- UGC angles: 2-3 angles that would work for UGC scripting based on their positioning
workspace/brand/audience.md
Must include:
- Primary ICP: demographics + psychographics in plain language
- Life stage and context: when/why do they buy this? What's happening in their life?
- Pain points (in customer language): exact phrases from reviews, not marketing-speak
- Purchase motivations: what pushes them from considering to buying?
- Objections: what almost stopped them from buying?
- Language patterns: how this audience talks about this problem category
- Creator archetype match: what kind of UGC creator would this audience trust? (age range, vibe, aesthetic, energy)
- Anti-patterns: creator types that would NOT work for this audience
Step 4: Validate
After generating the three files:
- Existence check: all three files exist in
workspace/brand/
- Substance check: each file has real, specific content — not just headers with generic filler
- Specificity test: could a script writer use these files without ever visiting the brand's website? If not, the files need more detail
- Pre-flight check: run
bash scripts/pre-flight.sh brand checks — the brand section should pass
Show the user a summary:
🏷️ Brand setup complete: <brand name>
✓ workspace/brand/voice-profile.md — <tone summary, e.g. "conversational-direct, no corporate speak">
✓ workspace/brand/positioning.md — <one-line positioning>
✓ workspace/brand/audience.md — <primary ICP summary>
Files are ready. Run /persona to start your first campaign.
Step 5: Handle Existing Files
If workspace/brand/ already has files:
- Show what exists and when it was last modified
- Ask the user: "Brand files already exist. Overwrite, merge, or skip?"
- Overwrite: replace all three files with fresh research
- Merge: keep existing content, add new findings, flag conflicts
- Skip: abort brand setup, use existing files
Never silently overwrite existing brand files.
Brand Memory Integration
Reads
| File |
Purpose |
| Brand's website (scraped) |
Voice, positioning, product details |
| Brand's social profiles (scraped) |
Authentic voice patterns, engagement style |
| Customer reviews (scraped) |
Audience language, pain points, demographics |
| Competitor homepages (scraped) |
Positioning gaps, differentiation |
Writes
| File |
Notes |
workspace/brand/voice-profile.md |
Brand voice, tone, vocabulary, example phrases. Read by /persona for script calibration. |
workspace/brand/positioning.md |
Differentiation, value props, competitive landscape. Read by /persona for pain point emphasis. |
workspace/brand/audience.md |
ICP, customer language, creator archetype guidance. Read by /persona for creator selection. |
Context loading (show this to the user at session start)
🏷️ Brand Setup for: <brand name>
Input: <brand URL>
Social: <social URLs if provided, or "will discover">
Competitors: <competitor names if provided, or "will identify from research">
Existing brand files: <none / list what exists>
Contract
Input
- Required: brand name + website URL
- Optional: social media URLs, competitor names/URLs, product category, existing brand guidelines
- Format: plain text (brand name, URLs) provided by user
- Source: user prompt
Output
- Produces: three brand context files in
workspace/brand/
- Format: structured markdown files following the schemas defined in Step 3
- Default behavior: research the brand, generate all three files, validate, and present summary
- Downstream use:
/persona (reads all three files), and indirectly every other pipeline skill
Validation
- Pre-conditions: brand name and URL are provided; workspace/ directory exists (create if not)
- Post-conditions: all three files exist in
workspace/brand/ with substantive content; pre-flight brand checks pass
- Failure checks: if scraping fails for a source, note it and proceed with available data; never generate files with only headers and no content; if research yields insufficient data, tell the user what's missing and ask for additional input
Next Step
Brand files populated → run /persona to start your first campaign.
1---2name: scrollclaw-brand-setup3description: One-time brand initialization. Given a brand name and URL, researches the brand and generates the three workspace/brand/ files that the rest of the pipeline reads. Run once per brand before any campaign work.4---56# Brand Setup78One-time initialization. Run this before your first campaign to populate the three brand files that every other skill reads. After this, you never need GrowthClaw or manual templates.910## What This Does1112Given a brand name and website URL, this skill:131. Scrapes the brand's website for voice, positioning, and product details142. Checks their social presence for how they actually talk to customers153. Mines reviews and comments for audience language and pain points164. Scans 2-3 competitors for positioning gaps175. Generates three files in `workspace/brand/` that the rest of the pipeline consumes1819## Step 1: Collect Inputs2021**Required:**22- Brand name23- Website URL (homepage)2425**Optional (improve output quality):**26- Social media URLs (X/Twitter, Instagram, TikTok, LinkedIn)27- Competitor names or URLs (2-3)28- Product category or vertical29- Any existing brand guidelines or tone docs3031If the user only provides brand name + URL, that's enough. Research fills the gaps.3233## Step 2: Research the Brand3435Read `references/research-protocol.md` for the full protocol. Summary:3637### 2a. Website Scrape38Scrape these pages (in order of priority):391. **Homepage** — positioning, hero copy, value props, overall energy402. **About / Our Story** — founding narrative, mission language, personality413. **Product pages (top 2-3)** — feature language, benefit framing, price positioning424. **FAQ or Help** — how they talk when being helpful vs selling4344Extract: sentence structure, formality level, jargon, banned words (what they avoid), energy (calm vs urgent), humor presence, emoji use.4546### 2b. Social Media Scan47Check their active social profiles (X/Twitter and Instagram minimum):48- How do they talk in captions vs replies?49- Do they use emoji? How much?50- Formal or casual? First person or third?51- Do they joke? What kind of humor?52- What hashtags/language patterns repeat?5354Focus on the **gap between website copy and social voice** — social is usually more authentic and closer to how a UGC script should sound.5556### 2c. Review Mining57Find 15-30 customer reviews from:58- Amazon (if applicable)59- Reddit (search brand name + product category)60- Social media comments (Instagram, TikTok, X)61- Trustpilot / G2 / app store reviews (depending on product type)6263Extract:64- Exact phrases customers use to describe the problem ("I was so tired of...")65- Exact phrases for the result ("now I actually...")66- Emotional language — frustration, relief, surprise, delight67- Demographic signals — life stage, context clues, purchase motivations68- Objections and hesitations before buying6970### 2d. Competitor Scan71Scan the homepage + positioning of 2-3 competitors:72- What claims do they all make? (these are table stakes, not differentiators)73- What does THIS brand say that competitors don't?74- What positioning gaps exist?75- What audience segments are underserved?7677## Step 3: Generate the Three Files7879### `workspace/brand/voice-profile.md`8081Must include:82- **Tone spectrum:** where the brand sits on formal↔casual, serious↔playful, expert↔peer83- **Energy level:** calm/measured vs urgent/energetic vs somewhere between84- **Sentence patterns:** short and punchy? Long and flowing? Mixed?85- **Vocabulary:** words they love, words they never use86- **What they say vs don't say:** specific phrases the brand uses repeatedly vs language they avoid87- **Example phrases:** 5-10 real phrases pulled from their content that capture the voice88- **UGC calibration:** how the voice should shift for UGC context (slightly more casual, more first-person, more "real talk")8990### `workspace/brand/positioning.md`9192Must include:93- **One-line positioning:** what they are and for whom, in one sentence94- **Core value props:** 3-5 key benefits in the brand's language95- **Differentiation:** what they claim that competitors don't96- **Competitive landscape:** who they compete with and how they position against each97- **Price positioning:** premium, mid-market, accessible, or value98- **Proof points:** stats, awards, testimonials, social proof they lean on99- **UGC angles:** 2-3 angles that would work for UGC scripting based on their positioning100101### `workspace/brand/audience.md`102103Must include:104- **Primary ICP:** demographics + psychographics in plain language105- **Life stage and context:** when/why do they buy this? What's happening in their life?106- **Pain points (in customer language):** exact phrases from reviews, not marketing-speak107- **Purchase motivations:** what pushes them from considering to buying?108- **Objections:** what almost stopped them from buying?109- **Language patterns:** how this audience talks about this problem category110- **Creator archetype match:** what kind of UGC creator would this audience trust? (age range, vibe, aesthetic, energy)111- **Anti-patterns:** creator types that would NOT work for this audience112113## Step 4: Validate114115After generating the three files:1161171. **Existence check:** all three files exist in `workspace/brand/`1182. **Substance check:** each file has real, specific content — not just headers with generic filler1193. **Specificity test:** could a script writer use these files without ever visiting the brand's website? If not, the files need more detail1204. **Pre-flight check:** run `bash scripts/pre-flight.sh` brand checks — the brand section should pass121122Show the user a summary:123124```125🏷️ Brand setup complete: <brand name>126127 ✓ workspace/brand/voice-profile.md — <tone summary, e.g. "conversational-direct, no corporate speak">128 ✓ workspace/brand/positioning.md — <one-line positioning>129 ✓ workspace/brand/audience.md — <primary ICP summary>130131Files are ready. Run /persona to start your first campaign.132```133134## Step 5: Handle Existing Files135136If `workspace/brand/` already has files:137- Show what exists and when it was last modified138- Ask the user: **"Brand files already exist. Overwrite, merge, or skip?"**139 - **Overwrite:** replace all three files with fresh research140 - **Merge:** keep existing content, add new findings, flag conflicts141 - **Skip:** abort brand setup, use existing files142143Never silently overwrite existing brand files.144145## Brand Memory Integration146147### Reads148| File | Purpose |149|------|---------|150| Brand's website (scraped) | Voice, positioning, product details |151| Brand's social profiles (scraped) | Authentic voice patterns, engagement style |152| Customer reviews (scraped) | Audience language, pain points, demographics |153| Competitor homepages (scraped) | Positioning gaps, differentiation |154155### Writes156| File | Notes |157|------|-------|158| `workspace/brand/voice-profile.md` | Brand voice, tone, vocabulary, example phrases. Read by `/persona` for script calibration. |159| `workspace/brand/positioning.md` | Differentiation, value props, competitive landscape. Read by `/persona` for pain point emphasis. |160| `workspace/brand/audience.md` | ICP, customer language, creator archetype guidance. Read by `/persona` for creator selection. |161162### Context loading (show this to the user at session start)163164```165🏷️ Brand Setup for: <brand name>166 Input: <brand URL>167 Social: <social URLs if provided, or "will discover">168 Competitors: <competitor names if provided, or "will identify from research">169 Existing brand files: <none / list what exists>170```171172## Contract173174### Input175- Required: brand name + website URL176- Optional: social media URLs, competitor names/URLs, product category, existing brand guidelines177- Format: plain text (brand name, URLs) provided by user178- Source: user prompt179180### Output181- Produces: three brand context files in `workspace/brand/`182- Format: structured markdown files following the schemas defined in Step 3183- Default behavior: research the brand, generate all three files, validate, and present summary184- Downstream use: `/persona` (reads all three files), and indirectly every other pipeline skill185186### Validation187- Pre-conditions: brand name and URL are provided; workspace/ directory exists (create if not)188- Post-conditions: all three files exist in `workspace/brand/` with substantive content; pre-flight brand checks pass189- Failure checks: if scraping fails for a source, note it and proceed with available data; never generate files with only headers and no content; if research yields insufficient data, tell the user what's missing and ask for additional input190191## Next Step192193Brand files populated → run `/persona` to start your first campaign.