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.
@@ -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 analyzing website traffic, setting up GA4, tracking events, or dealing with attribution gaps.
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
- ## The Attribution Problem
14
- Always remind the user: no platform has 100% perfect tracking.
15
- - **Platform data (Ads, Meta)** claims credit for everything.
16
- - **GA4** underreports due to GDPR consent rejection and cross-device drops.
17
- - **Truth** is usually in the middle. Use GA4 for relative trends, not absolute truth.
18
-
19
- ## GA4 Event Strategy
20
- Recommend standard events over custom events when possible:
21
- 1. `generate_lead`
22
- 2. `sign_up`
23
- 3. `purchase`
24
- 4. `add_to_cart`
25
-
26
- ## UTM Best Practices
27
- Enforce strict UTM taxonomy:
28
- - `utm_source`: The platform (e.g., `google`, `facebook`, `linkedin`)
29
- - `utm_medium`: The channel type (e.g., `cpc`, `social`, `email`)
30
- - `utm_campaign`: The specific campaign name
31
- - `utm_content`: The ad variant or creative
32
- - `utm_term`: The keyword (for search)
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
- Conclude by asking the user directly:
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