openads-ai 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -20
- package/dist/cli.js +790 -106
- package/dist/doctor.js +39 -0
- package/dist/mcp-extension.js +139 -10
- package/dist/schedule.js +58 -5
- package/dist/setup.js +141 -9
- package/package.json +1 -1
- package/skills/analytics/analytics.md +92 -22
- package/skills/automation/autoresearch-plan.md +2 -1
- package/skills/automation/autoresearch.md +7 -0
- package/skills/express/analytics.md +23 -0
- package/skills/express/audit.md +28 -0
- package/skills/express/autoresearch.md +32 -0
- package/skills/express/copywriting.md +31 -0
- package/skills/express/cro.md +26 -0
- package/skills/express/organic-social.md +24 -0
- package/skills/express/product.md +11 -0
- package/skills/express/research.md +26 -0
- package/skills/express/strategy.md +28 -0
- package/skills/organic/facebook-page.md +47 -0
- package/skills/organic/organic-social.md +171 -0
- package/skills/research/competitors.md +74 -33
- package/skills/research/customer-research.md +70 -22
|
@@ -1,32 +1,102 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analytics
|
|
3
|
-
description: Set up tracking, analyze traffic, and fix attribution gaps.
|
|
3
|
+
description: Set up tracking, analyze traffic, interpret GA4 data, and fix attribution gaps.
|
|
4
4
|
---
|
|
5
5
|
# Analytics Skill
|
|
6
6
|
|
|
7
7
|
## When to Use This Skill
|
|
8
8
|
|
|
9
|
-
Activate when
|
|
9
|
+
Activate when the user is:
|
|
10
|
+
- Setting up or auditing GA4 or Google Analytics tracking
|
|
11
|
+
- Diagnosing traffic drops, conversion rate changes, or attribution issues
|
|
12
|
+
- Analyzing funnel performance, event data, or audience behavior
|
|
13
|
+
- Building dashboards or interpreting key marketing metrics
|
|
14
|
+
|
|
15
|
+
Read `product-marketing.md` first to understand which metrics matter most for this business.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## GA4 Audit Checklist
|
|
20
|
+
|
|
21
|
+
Before drawing conclusions, verify these foundational items:
|
|
22
|
+
|
|
23
|
+
| Check | How to Verify |
|
|
24
|
+
|-------|---------------|
|
|
25
|
+
| GA4 tag firing | Check Realtime > Events — do page_view events appear? |
|
|
26
|
+
| Conversion events | Confirm key_events are marked in Admin > Events |
|
|
27
|
+
| Cross-domain tracking | Use DebugView to verify cookies persist across domains |
|
|
28
|
+
| Bot traffic exclusion | Admin > Data Filters — is "Internal traffic" excluded? |
|
|
29
|
+
| Sampling thresholds | Use smaller date ranges or BigQuery for sampled reports |
|
|
10
30
|
|
|
11
31
|
---
|
|
12
32
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
## Core Metrics to Always Report
|
|
34
|
+
|
|
35
|
+
When summarizing analytics, structure findings around these:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Sessions | The entry point — is traffic growing or shrinking?
|
|
39
|
+
Engaged rate | >50% is healthy. <30% is a red flag.
|
|
40
|
+
Avg. engagement| Low time on page = message mismatch or poor UX
|
|
41
|
+
Key events | Purchases, signups, demo requests — the real measure
|
|
42
|
+
Conversion rate| Key events / Sessions. Benchmark vs. industry.
|
|
43
|
+
Bounce rate | (GA4 definition differs from UA — clarify which)
|
|
44
|
+
Source/Medium | Which channels drive quality vs. volume?
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Attribution Models
|
|
50
|
+
|
|
51
|
+
Explain these to the user when comparing channel performance:
|
|
52
|
+
|
|
53
|
+
- **Last Click** (default): Credits the last touchpoint before conversion. Biased toward bottom-of-funnel channels (search, retargeting).
|
|
54
|
+
- **First Click**: Credits the first touchpoint. Biased toward top-of-funnel (social, display).
|
|
55
|
+
- **Data-Driven** (GA4 default): ML-based, distributes credit across touchpoints. Best for accounts with >1K conversions/month.
|
|
56
|
+
- **Linear**: Equal credit to all touchpoints. Simple but rarely accurate.
|
|
57
|
+
|
|
58
|
+
> Always ask: "Are you comparing channels using the same attribution model?" Mixing models is a common mistake.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Diagnosing Traffic Drops
|
|
63
|
+
|
|
64
|
+
If the user reports a traffic or conversion drop:
|
|
65
|
+
|
|
66
|
+
1. **Isolate the time range**: Compare week-over-week and year-over-year to rule out seasonality.
|
|
67
|
+
2. **Segment by channel**: Did organic, paid, or direct drop? Or all of them?
|
|
68
|
+
3. **Check for tracking breaks**: Did the drop coincide with a code deploy or tag manager update?
|
|
69
|
+
4. **Look at landing pages**: Which pages lost traffic? Is it a crawling/indexing issue?
|
|
70
|
+
5. **Compare device segments**: Did mobile drop while desktop held? Could be a UX or load speed issue.
|
|
71
|
+
6. **Check Search Console**: Organic impressions vs. clicks — ranking drop or CTR drop?
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Output Format
|
|
76
|
+
|
|
77
|
+
When reporting analytics findings, use this structure:
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
## Analytics Summary — [Date Range]
|
|
81
|
+
|
|
82
|
+
### 📊 Traffic Overview
|
|
83
|
+
| Metric | This Period | Prior Period | Change |
|
|
84
|
+
|--------|-------------|--------------|--------|
|
|
85
|
+
| Sessions | | | |
|
|
86
|
+
| Engaged Rate | | | |
|
|
87
|
+
| Key Events | | | |
|
|
88
|
+
| CVR | | | |
|
|
89
|
+
|
|
90
|
+
### 🔴 Critical Issues
|
|
91
|
+
- [Issue]: [Impact] → [Recommended Action]
|
|
92
|
+
|
|
93
|
+
### 🟡 Warnings
|
|
94
|
+
- [Issue]: [Impact] → [Recommended Action]
|
|
95
|
+
|
|
96
|
+
### 🟢 Opportunities
|
|
97
|
+
- [Opportunity]: [Potential Impact] → [Next Step]
|
|
98
|
+
|
|
99
|
+
### 📋 Recommended Actions (Priority Order)
|
|
100
|
+
1. [Action] — [Expected Impact]
|
|
101
|
+
2. [Action] — [Expected Impact]
|
|
102
|
+
```
|
|
@@ -46,6 +46,7 @@ At the end of the interactive planning sequence, output a beautiful **Experiment
|
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### Next Action Trigger
|
|
49
|
-
|
|
49
|
+
- **AUTOMATIC STATE PERSISTENCE**: You MUST automatically save this validated configuration as a JSON file to `~/.openads/active-experiment.json` so that the core loop (`/autoresearch` or `ar-core`) can read and execute it across different terminal sessions!
|
|
50
|
+
- Conclude by asking the user directly:
|
|
50
51
|
**"Would you like me to start the autonomous loop now? (Y/N)"**
|
|
51
52
|
- If they say **Yes**, transition directly into executing the core `/autoresearch` loop using this configuration.
|
|
@@ -19,6 +19,13 @@ The core philosophy of Autoresearch is:
|
|
|
19
19
|
|
|
20
20
|
When running the loop, execute at least **3 full cycles** autonomously before presenting the final results. Do not stop to prompt the user between cycles.
|
|
21
21
|
|
|
22
|
+
### Phase 0: Validate Goal & Metric (MUST NOT GUESS)
|
|
23
|
+
- Before you begin any loop cycles, you MUST check if there is an active experiment plan saved on disk in `~/.openads/active-experiment.json`.
|
|
24
|
+
- If the file `~/.openads/active-experiment.json` exists, read it immediately! Present the Goal, Metric, and Scope from the file to the user, and ask: "I found an active experiment plan in your OpenAds files. Goal: [Goal], Metric: [Metric]. Would you like to run the autonomous loop on this config? (Y/N) or define a new one?"
|
|
25
|
+
- If the file does not exist, and the user hasn't explicitly specified their target Goal and Metric in their message, you MUST halt immediately, present 3 concrete, inspiring examples of B2B/Shopify goals and metrics, and ask the user to input their custom Goal and Metric before launching the loop.
|
|
26
|
+
- **NO PLACEHOLDER PATHS**: When reading files, always use the literal home directory path provided in the system prompt. Never use generic placeholders like `/Users/username/Desktop/`.
|
|
27
|
+
- **NEVER** guess a goal/metric or automatically proceed with loop cycles on a generic assumption!
|
|
28
|
+
|
|
22
29
|
### Phase 1: Ingest Fuel & Initialize
|
|
23
30
|
- Quickly review `product-marketing.md` and any provided prior experiment data (like a CSV or campaign performance logs).
|
|
24
31
|
- **CONCISE INGESTION RULE**: Extract 3-5 high-level patterns of what worked and what failed. Do not list individual rows or campaigns one-by-one.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analytics-express
|
|
3
|
+
description: Analyze traffic and conversion metrics.
|
|
4
|
+
---
|
|
5
|
+
# Analytics
|
|
6
|
+
|
|
7
|
+
Analyze the user's traffic and conversion data. Focus on actionable insights, not raw numbers.
|
|
8
|
+
|
|
9
|
+
## Output Format
|
|
10
|
+
|
|
11
|
+
### 📊 Analytics Summary
|
|
12
|
+
|
|
13
|
+
| Metric | Value | Trend | Verdict |
|
|
14
|
+
|--------|-------|-------|---------|
|
|
15
|
+
| Sessions | [X] | [↑/↓ X%] | [Good/Bad/Watch] |
|
|
16
|
+
| Conversion Rate | [X%] | [↑/↓ X%] | [Good/Bad/Watch] |
|
|
17
|
+
| Bounce Rate | [X%] | [↑/↓ X%] | [Good/Bad/Watch] |
|
|
18
|
+
| Top Channel | [name] | [↑/↓ X%] | [Good/Bad/Watch] |
|
|
19
|
+
|
|
20
|
+
### Key Findings
|
|
21
|
+
- 🔴 [Critical finding] → [Action]
|
|
22
|
+
- 🟡 [Warning] → [Action]
|
|
23
|
+
- 🟢 [Opportunity] → [Action]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit-express
|
|
3
|
+
description: Quick campaign performance audit.
|
|
4
|
+
---
|
|
5
|
+
# Campaign Audit
|
|
6
|
+
|
|
7
|
+
Check the user's ad campaigns and flag issues clearly.
|
|
8
|
+
|
|
9
|
+
If the user pasted campaign data, analyze it directly. If no data is provided, ask them to paste their campaign metrics or describe their campaigns.
|
|
10
|
+
|
|
11
|
+
## Output Format
|
|
12
|
+
|
|
13
|
+
Use this exact structure:
|
|
14
|
+
|
|
15
|
+
### 📊 Campaign Overview
|
|
16
|
+
| Campaign | Status | Spend | CTR | ROAS | Conversions |
|
|
17
|
+
|----------|--------|-------|-----|------|-------------|
|
|
18
|
+
| [name] | [active/paused] | [$X] | [X%] | [Xx] | [X] |
|
|
19
|
+
|
|
20
|
+
### Issues Found
|
|
21
|
+
- 🔴 **[Critical]**: [Issue] → [Fix in 1 sentence]
|
|
22
|
+
- 🟡 **[Warning]**: [Issue] → [Fix in 1 sentence]
|
|
23
|
+
- 🟢 **[Opportunity]**: [Untapped potential] → [Action in 1 sentence]
|
|
24
|
+
|
|
25
|
+
### Top 3 Actions
|
|
26
|
+
1. **[Action]** — [Expected impact]
|
|
27
|
+
2. **[Action]** — [Expected impact]
|
|
28
|
+
3. **[Action]** — [Expected impact]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch-express
|
|
3
|
+
description: Generate testable marketing hypotheses.
|
|
4
|
+
---
|
|
5
|
+
# Autoresearch Loop
|
|
6
|
+
|
|
7
|
+
Generate NEW testable marketing hypotheses. Prior data is fuel — not the deliverable.
|
|
8
|
+
|
|
9
|
+
## Process
|
|
10
|
+
1. **Read** prior data (if CSV provided). Extract top 3 patterns in 2 sentences each.
|
|
11
|
+
2. **Generate** 8 new hypothesis variants based on gaps and opportunities.
|
|
12
|
+
3. **Score** each 1-10 on novelty, testability, and expected impact.
|
|
13
|
+
4. **Keep** hypotheses scoring ≥7. Discard the rest with 1-sentence reason.
|
|
14
|
+
5. **Log**: "Generated X. Kept Y. Discarded Z."
|
|
15
|
+
|
|
16
|
+
Run 2 cycles of Generate → Score → Keep.
|
|
17
|
+
|
|
18
|
+
## Output Format
|
|
19
|
+
|
|
20
|
+
### 🔬 Autoresearch Results
|
|
21
|
+
|
|
22
|
+
**Patterns Found** (from prior data):
|
|
23
|
+
1. [Pattern] — [Implication]
|
|
24
|
+
2. [Pattern] — [Implication]
|
|
25
|
+
|
|
26
|
+
**New Hypotheses** (prioritized):
|
|
27
|
+
| # | Hypothesis | Asset/Copy | Rationale | Score |
|
|
28
|
+
|---|-----------|------------|-----------|-------|
|
|
29
|
+
| 1 | [hypothesis] | [specific copy/creative] | [why it should work] | [X/10] |
|
|
30
|
+
| 2 | ... | ... | ... | ... |
|
|
31
|
+
|
|
32
|
+
**Next Step**: [Recommended first test to run]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: copywriting-express
|
|
3
|
+
description: Generate high-performing ad copy fast.
|
|
4
|
+
---
|
|
5
|
+
# Ad Copywriting
|
|
6
|
+
|
|
7
|
+
Write ad copy using the user's product context and target audience.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
- Use PAS framework: Pain → Agitate → Solution
|
|
11
|
+
- Respect platform limits: Google headlines ≤30 chars, descriptions ≤90 chars
|
|
12
|
+
- Write in the user's brand tone
|
|
13
|
+
- Include a clear CTA in every variant
|
|
14
|
+
|
|
15
|
+
## Output Format
|
|
16
|
+
|
|
17
|
+
### 🎯 Ad Copy Variants
|
|
18
|
+
|
|
19
|
+
**Headline Options** (pick 5):
|
|
20
|
+
1. "[headline]" — [rationale in 5 words]
|
|
21
|
+
2. "[headline]" — [rationale]
|
|
22
|
+
3. "[headline]" — [rationale]
|
|
23
|
+
4. "[headline]" — [rationale]
|
|
24
|
+
5. "[headline]" — [rationale]
|
|
25
|
+
|
|
26
|
+
**Primary Text** (pick 3):
|
|
27
|
+
1. [2-3 sentence copy with CTA]
|
|
28
|
+
2. [2-3 sentence copy with CTA]
|
|
29
|
+
3. [2-3 sentence copy with CTA]
|
|
30
|
+
|
|
31
|
+
**Recommended A/B Test**: Test headline [X] with primary text [Y] vs headline [Z] with primary text [W].
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cro-express
|
|
3
|
+
description: Conversion rate optimization audit.
|
|
4
|
+
---
|
|
5
|
+
# CRO Audit
|
|
6
|
+
|
|
7
|
+
Audit the user's landing page or funnel for conversion blockers.
|
|
8
|
+
|
|
9
|
+
## Output Format
|
|
10
|
+
|
|
11
|
+
### 🎯 CRO Audit: [Page/Funnel Name]
|
|
12
|
+
|
|
13
|
+
**Current CVR**: [X%] → **Target**: [Y%]
|
|
14
|
+
|
|
15
|
+
### Friction Points
|
|
16
|
+
| Element | Issue | Impact | Fix |
|
|
17
|
+
|---------|-------|--------|-----|
|
|
18
|
+
| Headline | [issue] | [High/Med/Low] | [specific fix] |
|
|
19
|
+
| CTA | [issue] | [High/Med/Low] | [specific fix] |
|
|
20
|
+
| Form | [issue] | [High/Med/Low] | [specific fix] |
|
|
21
|
+
| Trust | [issue] | [High/Med/Low] | [specific fix] |
|
|
22
|
+
|
|
23
|
+
### Quick Wins (implement this week)
|
|
24
|
+
1. **[Change]** — Expected lift: [X%]
|
|
25
|
+
2. **[Change]** — Expected lift: [X%]
|
|
26
|
+
3. **[Change]** — Expected lift: [X%]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: organic-social-express
|
|
3
|
+
description: Plan and write organic social posts for Instagram, LinkedIn, TikTok, and Facebook.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Organic Social (Express)
|
|
7
|
+
|
|
8
|
+
Write platform-native organic posts using product context and brand voice.
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
- Give value before any CTA — educate, entertain, or inspire first
|
|
12
|
+
- Write for the platform, never repurpose copy across platforms
|
|
13
|
+
- Assign every post to one pillar: Education, Social Proof, Culture, or POV
|
|
14
|
+
- Hook in first 1–2 seconds (Instagram/TikTok) or first line (LinkedIn)
|
|
15
|
+
- No "Excited to announce." No starting with the brand name
|
|
16
|
+
- Soft CTA or memorable closer only — no hard sell on organic
|
|
17
|
+
|
|
18
|
+
## Output Format
|
|
19
|
+
|
|
20
|
+
### [Platform]
|
|
21
|
+
**Pillar:** [Education | Social Proof | Culture | POV]
|
|
22
|
+
**Hook:** [Opening line / frame / on-screen text]
|
|
23
|
+
**Body:** [Post content]
|
|
24
|
+
**Closer:** [Question, soft CTA, or memorable line]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-express
|
|
3
|
+
description: Your business context.
|
|
4
|
+
---
|
|
5
|
+
# My Business
|
|
6
|
+
|
|
7
|
+
Read the user's business context file first. Use their product name, ICP, and tone in every response.
|
|
8
|
+
|
|
9
|
+
If no context file exists, ask: "What do you sell or promote?" before proceeding.
|
|
10
|
+
|
|
11
|
+
Always reference the user's product by name. Never use generic examples.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research-express
|
|
3
|
+
description: Competitor and customer research.
|
|
4
|
+
---
|
|
5
|
+
# Market Research
|
|
6
|
+
|
|
7
|
+
Help the user understand their competitors and customers.
|
|
8
|
+
|
|
9
|
+
## For Competitor Analysis
|
|
10
|
+
|
|
11
|
+
### Competitor Map
|
|
12
|
+
| Competitor | Core Claim | Their Weakness | Your Angle |
|
|
13
|
+
|------------|------------|----------------|------------|
|
|
14
|
+
| [name] | [claim] | [weakness] | [how to beat them] |
|
|
15
|
+
|
|
16
|
+
**White Space**: [Position nobody owns yet]
|
|
17
|
+
**Recommended Angle**: [1-sentence positioning the user should test]
|
|
18
|
+
|
|
19
|
+
## For Customer Research
|
|
20
|
+
|
|
21
|
+
### ICP Quick Profile
|
|
22
|
+
- **Who**: [Job title, company size]
|
|
23
|
+
- **Pain**: [#1 problem in their words]
|
|
24
|
+
- **Trigger**: [What makes them start looking]
|
|
25
|
+
- **Objection**: [Top reason they wouldn't buy] → **Counter**: [Proof that resolves it]
|
|
26
|
+
- **Language**: Use "[exact phrase]", avoid "[jargon]"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: strategy-express
|
|
3
|
+
description: Build a go-to-market brief.
|
|
4
|
+
---
|
|
5
|
+
# Go-To-Market Strategy
|
|
6
|
+
|
|
7
|
+
Create a focused 1-page GTM brief for the user's product.
|
|
8
|
+
|
|
9
|
+
## Output Format
|
|
10
|
+
|
|
11
|
+
### 📈 GTM Brief: [Product Name]
|
|
12
|
+
|
|
13
|
+
**Target Audience**: [Who, job title, company size]
|
|
14
|
+
**Core Problem**: [The #1 pain point you solve]
|
|
15
|
+
**Positioning**: "[Product] is the only [category] that [differentiator]"
|
|
16
|
+
|
|
17
|
+
**Channel Plan** (ranked by priority):
|
|
18
|
+
| Channel | Why | Budget % | Timeline |
|
|
19
|
+
|---------|-----|----------|----------|
|
|
20
|
+
| [channel] | [rationale] | [X%] | [Week X-Y] |
|
|
21
|
+
|
|
22
|
+
**Launch Milestones**:
|
|
23
|
+
1. **Week 1-2**: [Action]
|
|
24
|
+
2. **Week 3-4**: [Action]
|
|
25
|
+
3. **Month 2**: [Action]
|
|
26
|
+
|
|
27
|
+
**Success Metrics**: [3 KPIs with target numbers]
|
|
28
|
+
**Biggest Risk**: [1 sentence] → **Mitigation**: [1 sentence]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: facebook-page-organic
|
|
3
|
+
description: Draft and publish organic posts to a connected Facebook Page. Use the get_facebook_page_posts and post_to_facebook_page tools when available.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Facebook Page Organic Posting
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
Activate when the user wants to post to Facebook, draft organic Facebook content, review posting history, or plan their Facebook Page content calendar.
|
|
10
|
+
|
|
11
|
+
Requires `facebookPageToken` and `facebookPageId` configured via `openads setup`.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Before Drafting Any Post
|
|
16
|
+
|
|
17
|
+
1. Call `get_facebook_page_posts` (limit: 10) to review what's been published recently
|
|
18
|
+
2. Check for repeated topics, posting cadence, and tone patterns
|
|
19
|
+
3. Never write a post that echoes a theme from the last 3 posts — deconflict first
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Facebook Post Rules
|
|
24
|
+
|
|
25
|
+
- **40–80 words** for feed posts — shorter than LinkedIn, punchier than a blog
|
|
26
|
+
- **Lead with the hook** — first line must earn the stop before "See More"
|
|
27
|
+
- **Questions and "tag someone" prompts** drive comments, which drive algorithmic reach
|
|
28
|
+
- **No link in post body** if reach matters — attach via the `link` parameter or suggest putting it in comments
|
|
29
|
+
- Organic reach on Pages is ~2–5% of followers — write content people want to *share*
|
|
30
|
+
|
|
31
|
+
## What NOT to Do
|
|
32
|
+
- Don't start with the brand name or "Excited to announce"
|
|
33
|
+
- Don't paste the same copy from Instagram or LinkedIn — adapt for platform
|
|
34
|
+
- No hard CTA (buy, sign up) on organic — soft close or question only
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Output Format
|
|
39
|
+
|
|
40
|
+
**Post:**
|
|
41
|
+
[Post text — 40–80 words, hook first]
|
|
42
|
+
|
|
43
|
+
**Link (optional):** [URL to attach as link preview]
|
|
44
|
+
|
|
45
|
+
**Pillar:** [Education | Social Proof | Culture | POV]
|
|
46
|
+
|
|
47
|
+
**Ready to publish** via `post_to_facebook_page` — confirm when ready.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: organic-social
|
|
3
|
+
description: Plan, write, and optimize organic social content for brand awareness across Instagram, LinkedIn, TikTok, and Facebook.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Organic Social
|
|
7
|
+
|
|
8
|
+
## When to Use This Skill
|
|
9
|
+
|
|
10
|
+
Activate when the user needs to create, plan, or improve organic (non-paid) social media content — posts, captions, Reels scripts, carousels, TikTok hooks, LinkedIn posts, or a content strategy.
|
|
11
|
+
|
|
12
|
+
Read `product-marketing.md` first. Every piece of content must reflect the brand's voice, ICP, and positioning — not generic filler.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Organic vs. Paid: The Fundamental Difference
|
|
17
|
+
|
|
18
|
+
Paid content interrupts. Organic content earns attention.
|
|
19
|
+
|
|
20
|
+
The single most important mindset shift: **organic content is not ads without a budget line.** It operates on a different contract with the audience — one built on consistent value, personality, and trust over time. If it feels like an ad, it loses.
|
|
21
|
+
|
|
22
|
+
Rules that follow from this:
|
|
23
|
+
- **Give before you ask.** Entertain, teach, or inspire before any call to action.
|
|
24
|
+
- **Show the world, not just the product.** Document the life, the problem, the people — the product earns its place.
|
|
25
|
+
- **Consistency of voice > frequency of posts.** A distinct, recognizable tone that shows up 3x/week beats a different persona posting daily.
|
|
26
|
+
- **Platform-native wins.** Content made for the platform — not repurposed from somewhere else — consistently outperforms.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Content Pillars
|
|
31
|
+
|
|
32
|
+
Before writing any content, establish 3–4 pillars — recurring themes that define what the brand talks about. Every post should fit inside one.
|
|
33
|
+
|
|
34
|
+
Good pillars for a brand-awareness strategy:
|
|
35
|
+
1. **Value / Education** — Teach the audience something useful in your space. No pitch.
|
|
36
|
+
2. **Social Proof / Story** — Real customers, real outcomes, real moments. Specifics over superlatives.
|
|
37
|
+
3. **Culture / Behind the Scenes** — Who you are, how you work, what you believe. Makes the brand human.
|
|
38
|
+
4. **POV / Opinion** — A take on the industry, the problem, or the status quo. Builds a distinct voice.
|
|
39
|
+
|
|
40
|
+
Avoid mixing pillars in a single post. One post, one idea.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Platform Playbook
|
|
45
|
+
|
|
46
|
+
### Instagram
|
|
47
|
+
|
|
48
|
+
**What it rewards:** Visual consistency, Reels reach, strong hooks in the first frame.
|
|
49
|
+
|
|
50
|
+
**Format rules:**
|
|
51
|
+
- Reels get 3–5x the organic reach of static posts — lead with video when possible
|
|
52
|
+
- Hook must land in the **first 1–2 seconds** (on screen text or action, not a logo)
|
|
53
|
+
- Captions: front-load the value in line 1 before the "more" fold (125 characters)
|
|
54
|
+
- Carousels: slide 1 is the hook, slide 2 delivers enough value that they swipe, last slide is a soft CTA or memorable closer
|
|
55
|
+
- Stories: more casual, more frequent, more conversational — use for behind-the-scenes and direct audience interaction
|
|
56
|
+
- Hashtags: 3–5 targeted, not 30 generic — reach is driven by content signals now, not hashtag stuffing
|
|
57
|
+
|
|
58
|
+
**For brand awareness specifically:**
|
|
59
|
+
- Show what life looks like with/around the brand — not features, sensations
|
|
60
|
+
- Use the same visual treatment (color, typography, framing) across posts to build recognizability
|
|
61
|
+
- Audio matters: trending audio on Reels extends reach, but branded audio builds identity
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### TikTok
|
|
66
|
+
|
|
67
|
+
**What it rewards:** Native-feeling content, strong verbal or visual hooks, watch time and rewatches.
|
|
68
|
+
|
|
69
|
+
**Format rules:**
|
|
70
|
+
- **Hook in the first 2 seconds** — spoken or on-screen. The algorithm decides within 3 seconds whether to show it further
|
|
71
|
+
- Optimal length for brand awareness: 15–30 seconds (gets rewatched, rewatches signal quality)
|
|
72
|
+
- Speak directly to camera in the opening — "here's why...", "this changed how we...", "nobody talks about..."
|
|
73
|
+
- Captions are largely decorative on TikTok — the video must carry the message
|
|
74
|
+
- Post natively, not as a repurposed Reel (TikTok suppresses watermarked content)
|
|
75
|
+
- Comments are reach fuel — reply to every early comment, pin a strong one
|
|
76
|
+
|
|
77
|
+
**Hook formulas that work:**
|
|
78
|
+
- **The Reframe:** "Everyone thinks X. Here's what's actually happening."
|
|
79
|
+
- **The Specific Claim:** "We grew from 0 to [number] doing one thing."
|
|
80
|
+
- **The Contrast:** "Before [brand] vs. after [brand]" — show don't tell
|
|
81
|
+
- **The Relatable Problem:** Open on the exact moment your ICP feels the pain
|
|
82
|
+
|
|
83
|
+
**For brand awareness:**
|
|
84
|
+
- Authenticity > production value. A shaky founder video with a strong hook outperforms polished content with a weak one.
|
|
85
|
+
- Series content builds returning viewers — "part 2", recurring formats, ongoing stories
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### LinkedIn
|
|
90
|
+
|
|
91
|
+
**What it rewards:** Text-heavy native posts, personal POV, comments and conversation.
|
|
92
|
+
|
|
93
|
+
**Format rules:**
|
|
94
|
+
- **First line is everything** — it shows before "see more." It must create enough tension or curiosity to make clicking feel necessary
|
|
95
|
+
- Native text posts outperform links — if sharing a link, put it in the first comment, not the post
|
|
96
|
+
- Optimal length: 800–1,500 characters for engagement. Short posts feel thin. Very long posts lose readers.
|
|
97
|
+
- Line breaks matter — single-sentence lines, white space between them. Walls of text get scrolled past.
|
|
98
|
+
- End with a question or a strong declarative statement, not a CTA to buy something
|
|
99
|
+
- Images: single-image posts perform better than carousels on LinkedIn; carousels work for step-by-step content only
|
|
100
|
+
|
|
101
|
+
**LinkedIn-specific voice:**
|
|
102
|
+
- First person, opinionated, conversational — not a press release
|
|
103
|
+
- "I" outperforms "We" — even for brands, a founder voice beats a company voice
|
|
104
|
+
- Stories with a lesson outperform lists with no narrative
|
|
105
|
+
- Controversy (respectful) and contrarian takes drive comments
|
|
106
|
+
|
|
107
|
+
**Hook formulas:**
|
|
108
|
+
- "I used to [wrong belief]. Then [thing happened]. Here's what I learned."
|
|
109
|
+
- "Hot take: [unexpected opinion about your industry]."
|
|
110
|
+
- "[Number] years of [experience] taught me one thing about [relevant topic]."
|
|
111
|
+
- "Most [role] get [common thing] wrong. Here's what they miss."
|
|
112
|
+
|
|
113
|
+
**For brand awareness:**
|
|
114
|
+
- LinkedIn builds credibility, not virality. Play the long game.
|
|
115
|
+
- Consistency (3x/week) matters more than any single post
|
|
116
|
+
- Engage on others' posts before your own — LinkedIn rewards givers
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Facebook
|
|
121
|
+
|
|
122
|
+
**What it rewards:** Community interaction, shared content, groups, video watch time.
|
|
123
|
+
|
|
124
|
+
**Format rules:**
|
|
125
|
+
- Organic reach on Facebook Pages is very low (~2–5% of followers) — lean into Groups and shares rather than Page posts alone
|
|
126
|
+
- Video (especially Facebook-native uploads) gets the most reach
|
|
127
|
+
- Posts with questions get more comments; comments signal the algorithm to push further
|
|
128
|
+
- Keep copy shorter than LinkedIn — 40–80 words for feed posts, more in Groups
|
|
129
|
+
- Link posts suppress reach — same rule as LinkedIn: link in comments if possible
|
|
130
|
+
- Facebook Live still gets significant organic boost vs. recorded video
|
|
131
|
+
|
|
132
|
+
**For brand awareness:**
|
|
133
|
+
- Build or participate in a niche Facebook Group — that's where organic reach still lives
|
|
134
|
+
- Share content that people want to forward to a specific friend ("tag someone who needs this")
|
|
135
|
+
- User-generated content and resharing customer stories performs well
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Writing a Post: Step-by-Step
|
|
140
|
+
|
|
141
|
+
When writing any organic post:
|
|
142
|
+
|
|
143
|
+
1. **Identify the pillar** — which of the brand's 4 content pillars does this serve?
|
|
144
|
+
2. **Choose the platform format** — don't write generically and repurpose; write for the platform
|
|
145
|
+
3. **Write the hook first** — don't touch the body until the hook is strong
|
|
146
|
+
4. **Apply voice from product-marketing.md** — tone, persona, vocabulary
|
|
147
|
+
5. **Check the contract** — is this giving value before asking anything? If not, revise
|
|
148
|
+
6. **Write a soft CTA or closer** — curiosity, question, or memorable line. Never a hard sell on organic.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Batch Content Planning
|
|
153
|
+
|
|
154
|
+
When the user asks to plan content (weekly, monthly):
|
|
155
|
+
|
|
156
|
+
1. Map posts to pillars — balanced across the 4 pillars, no consecutive posts from the same pillar
|
|
157
|
+
2. Anchor to moments — product milestones, cultural moments, seasonal relevance
|
|
158
|
+
3. Stagger formats — vary between video, static, text, story/carousel
|
|
159
|
+
4. Flag repurposable pieces — one strong Reel can become a LinkedIn post can become a carousel
|
|
160
|
+
|
|
161
|
+
Output a simple grid: Date | Platform | Pillar | Format | Hook / Topic
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## What NOT to Do
|
|
166
|
+
|
|
167
|
+
- Do not write captions that start with the brand name
|
|
168
|
+
- Do not lead with "Excited to announce" on any platform
|
|
169
|
+
- Do not use the same copy across all platforms — adapt for each
|
|
170
|
+
- Do not post and ghost — engagement in the first 30 minutes after posting drives algorithmic reach
|
|
171
|
+
- Do not treat organic as a dumping ground for ad creative that didn't get budget
|