@growthub/cli 0.3.53 → 0.3.54
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/assets/worker-kits/growthub-postiz-social-v1/.env.example +18 -0
- package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +136 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/NEW-CLIENT.md +67 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/_template/brand-kit.md +120 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/growthub/brand-kit.md +117 -0
- package/assets/worker-kits/growthub-postiz-social-v1/bundles/growthub-postiz-social-v1.json +52 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/ai-caption-layer.md +118 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/bullmq-queue-layer.md +157 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/platform-coverage.md +97 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/postiz-fork-integration.md +143 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/analytics-brief-sample.md +125 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/client-proposal-sample.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/content-calendar-sample.md +75 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/social-campaign-sample.md +104 -0
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/README.md +128 -0
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/kit-standard.md +113 -0
- package/assets/worker-kits/growthub-postiz-social-v1/kit.json +104 -0
- package/assets/worker-kits/growthub-postiz-social-v1/output/README.md +56 -0
- package/assets/worker-kits/growthub-postiz-social-v1/output-standards.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/runtime-assumptions.md +159 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/check-deps.sh +117 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +83 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +99 -0
- package/assets/worker-kits/growthub-postiz-social-v1/skills.md +277 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/analytics-brief.md +123 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/caption-copy-deck.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/client-proposal.md +139 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/content-calendar.md +65 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/platform-publishing-plan.md +112 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/scheduling-manifest.md +83 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/social-campaign-brief.md +111 -0
- package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +79 -0
- package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +287 -0
- package/package.json +1 -1
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Postiz Social Media Operator — Master Skill Doc
|
|
2
|
+
|
|
3
|
+
**Source of truth for methodology. Read this file completely before beginning any task.**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## QUICK REFERENCE TABLE
|
|
8
|
+
|
|
9
|
+
| Resource | Path |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Agent operating law | `workers/postiz-social-operator/CLAUDE.md` |
|
|
12
|
+
| Brand kit template | `brands/_template/brand-kit.md` |
|
|
13
|
+
| Growthub example brand kit | `brands/growthub/brand-kit.md` |
|
|
14
|
+
| Output contract | `output-standards.md` |
|
|
15
|
+
| Runtime assumptions | `runtime-assumptions.md` |
|
|
16
|
+
| Fork integration notes | `docs/postiz-fork-integration.md` |
|
|
17
|
+
| Platform coverage | `docs/platform-coverage.md` |
|
|
18
|
+
| AI caption layer | `docs/ai-caption-layer.md` |
|
|
19
|
+
| BullMQ queue layer | `docs/bullmq-queue-layer.md` |
|
|
20
|
+
| Social campaign brief | `templates/social-campaign-brief.md` |
|
|
21
|
+
| Content calendar | `templates/content-calendar.md` |
|
|
22
|
+
| Platform publishing plan | `templates/platform-publishing-plan.md` |
|
|
23
|
+
| Caption copy deck | `templates/caption-copy-deck.md` |
|
|
24
|
+
| Analytics brief | `templates/analytics-brief.md` |
|
|
25
|
+
| Scheduling manifest | `templates/scheduling-manifest.md` |
|
|
26
|
+
| Client proposal | `templates/client-proposal.md` |
|
|
27
|
+
| Sample campaign | `examples/social-campaign-sample.md` |
|
|
28
|
+
| Sample calendar | `examples/content-calendar-sample.md` |
|
|
29
|
+
| Sample analytics | `examples/analytics-brief-sample.md` |
|
|
30
|
+
| Sample proposal | `examples/client-proposal-sample.md` |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## STEP 0 — BEFORE ANY TASK, ANSWER THESE QUESTIONS
|
|
35
|
+
|
|
36
|
+
Before producing anything, confirm:
|
|
37
|
+
|
|
38
|
+
1. Which client or brand is this campaign for?
|
|
39
|
+
2. Which platforms are in scope (select from `docs/platform-coverage.md`)?
|
|
40
|
+
3. What is the campaign objective: brand awareness / lead generation / engagement / product launch / community growth?
|
|
41
|
+
4. What is the campaign timeframe and posting cadence?
|
|
42
|
+
5. Is the Postiz fork running locally?
|
|
43
|
+
6. What execution mode: local-fork / agent-only / hybrid?
|
|
44
|
+
|
|
45
|
+
If any of these are unknown after the 4-question gate in CLAUDE.md, stop and ask.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## STEP 1 — LOAD THE BRAND KIT
|
|
50
|
+
|
|
51
|
+
Read `brands/<client-slug>/brand-kit.md` if it exists. Otherwise start from `brands/_template/brand-kit.md`.
|
|
52
|
+
|
|
53
|
+
Extract:
|
|
54
|
+
- client identity (name, slug, industry)
|
|
55
|
+
- target platforms and primary audience demographics
|
|
56
|
+
- content themes and messaging guardrails
|
|
57
|
+
- campaign objectives and KPI targets
|
|
58
|
+
- competitor accounts for reference
|
|
59
|
+
- agency context (prospect stage, retainer range)
|
|
60
|
+
- existing deliverables log
|
|
61
|
+
|
|
62
|
+
The brand kit drives all output naming, tone calibration, platform selection, and proposal pricing context.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## STEP 2 — CHECK THE WORKING SUBSTRATE
|
|
67
|
+
|
|
68
|
+
If the user has a local Postiz fork running, inspect it before planning anything.
|
|
69
|
+
|
|
70
|
+
### Source-of-truth check in the Postiz workspace
|
|
71
|
+
|
|
72
|
+
1. `docker compose ps` — confirm all services are up (postiz-app, Redis, PostgreSQL)
|
|
73
|
+
2. `curl http://localhost:3000/api/healthcheck` — confirm API responds
|
|
74
|
+
3. Postiz admin UI at `http://localhost:3000` — confirm workspace is initialized
|
|
75
|
+
4. `libraries/nestjs-libraries/src/integrations/` — platform integrations available
|
|
76
|
+
5. Postiz API → `GET /api/v1/workspace` — retrieve workspace ID for scheduling
|
|
77
|
+
|
|
78
|
+
### What to verify in the fork
|
|
79
|
+
|
|
80
|
+
- Which platform integrations are connected and authorized in the Postiz admin UI
|
|
81
|
+
- Whether the BullMQ Redis queue is healthy (`GET /api/v1/queue/health`)
|
|
82
|
+
- Whether AI caption generation is enabled (`OPENAI_API_KEY` or `ANTHROPIC_API_KEY` set in Postiz `.env`)
|
|
83
|
+
- What the current workspace posting timezone is set to
|
|
84
|
+
|
|
85
|
+
If the fork cannot be inspected, use the frozen assumptions in `runtime-assumptions.md` and label outputs `assumption-based`.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## STEP 3 — COMMAND SELECTION LOGIC
|
|
90
|
+
|
|
91
|
+
Select the narrowest command that satisfies the real job.
|
|
92
|
+
|
|
93
|
+
| Command | Primary Use | Scheduling? | AI Captions? |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| `/postiz campaign` | Full campaign from scratch — brief + calendar + publishing plan + captions | Optional | Yes |
|
|
96
|
+
| `/postiz calendar` | Content calendar for an existing brief | No | Partial |
|
|
97
|
+
| `/postiz captions` | Caption copy deck only — batch or single platform | No | Yes |
|
|
98
|
+
| `/postiz schedule` | Scheduling manifest from an existing calendar | Yes | No |
|
|
99
|
+
| `/postiz analytics` | Analytics briefing from API data or provided metrics | No | No |
|
|
100
|
+
| `/postiz proposal` | Client-ready proposal with platform mix and ROI | No | No |
|
|
101
|
+
| `/postiz platforms` | Platform coverage report for client context | No | No |
|
|
102
|
+
| `/postiz quick` | 30-second campaign snapshot for a domain or brand | No | Minimal |
|
|
103
|
+
|
|
104
|
+
Default selection rules:
|
|
105
|
+
- "Build a campaign" → `/postiz campaign`
|
|
106
|
+
- "Draft captions for my posts" → `/postiz captions`
|
|
107
|
+
- "Schedule my content calendar" → `/postiz schedule`
|
|
108
|
+
- "How did my posts perform?" → `/postiz analytics`
|
|
109
|
+
- "Pitch this to the client" → `/postiz proposal`
|
|
110
|
+
- "What platforms should I be on?" → `/postiz platforms`
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## STEP 4 — PLATFORM SELECTION LOGIC
|
|
115
|
+
|
|
116
|
+
Select platforms based on: audience demographics, campaign objective, content format, and client capacity.
|
|
117
|
+
|
|
118
|
+
### Primary platform selection rules
|
|
119
|
+
|
|
120
|
+
| Objective | Recommended Primary Platforms |
|
|
121
|
+
|---|---|
|
|
122
|
+
| Brand awareness | Instagram, TikTok, YouTube |
|
|
123
|
+
| Lead generation | LinkedIn, X/Twitter, Facebook |
|
|
124
|
+
| Community growth | Reddit, Discord, Slack |
|
|
125
|
+
| Product launch | Instagram, TikTok, X/Twitter, YouTube |
|
|
126
|
+
| Thought leadership | LinkedIn, X/Twitter, Bluesky |
|
|
127
|
+
| Local business | Facebook, Instagram, Google Business |
|
|
128
|
+
|
|
129
|
+
### Platform capacity rules
|
|
130
|
+
|
|
131
|
+
- Limit active platforms to 5 per campaign unless client explicitly has team capacity for more
|
|
132
|
+
- Always check `docs/platform-coverage.md` for per-platform format constraints before assigning content types
|
|
133
|
+
- Carousel posts: available on Instagram, LinkedIn, Pinterest — not TikTok or X
|
|
134
|
+
- Long-form video (>10 min): YouTube only — short-form elsewhere
|
|
135
|
+
- Thread format: X/Twitter, Bluesky, Mastodon
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## STEP 5 — CAPTION GENERATION LOGIC
|
|
140
|
+
|
|
141
|
+
Apply the AI caption layer for every content calendar entry.
|
|
142
|
+
|
|
143
|
+
### Caption workflow
|
|
144
|
+
|
|
145
|
+
1. Extract key message from content theme pillar
|
|
146
|
+
2. Identify platform tone profile from `docs/ai-caption-layer.md`
|
|
147
|
+
3. Draft 3 variants (A/B/C):
|
|
148
|
+
- Variant A: Direct and factual
|
|
149
|
+
- Variant B: Storytelling or narrative
|
|
150
|
+
- Variant C: Question or engagement-hook opening
|
|
151
|
+
4. Apply platform character limits:
|
|
152
|
+
- X/Twitter: 280 characters (aim for ≤240 for re-share space)
|
|
153
|
+
- LinkedIn: 3,000 characters (optimal engagement at 150–300 characters for opening)
|
|
154
|
+
- Instagram: 2,200 characters (optimal: ≤150 characters above "more" fold)
|
|
155
|
+
- TikTok: 2,200 characters (most engagement in first 150 characters)
|
|
156
|
+
- Pinterest: 500 character description
|
|
157
|
+
- Reddit: Variable by subreddit — default to long-form
|
|
158
|
+
- Bluesky: 300 characters
|
|
159
|
+
- Mastodon: 500 characters (instance-configurable)
|
|
160
|
+
5. Add hashtag sets (platform-appropriate quantity):
|
|
161
|
+
- Instagram: 3–5 primary hashtags (moved away from 30-hashtag practice)
|
|
162
|
+
- LinkedIn: 3–5 relevant professional hashtags
|
|
163
|
+
- TikTok: 3–6 hashtags mixing trending and niche
|
|
164
|
+
- Pinterest: 2–3 keyword-focused hashtags
|
|
165
|
+
- X/Twitter: 1–2 hashtags maximum
|
|
166
|
+
- Bluesky: None required (use in context only)
|
|
167
|
+
6. Flag any captions that require visual assets with specific format requirements
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## STEP 6 — CONTENT CALENDAR STRUCTURE
|
|
172
|
+
|
|
173
|
+
The content calendar template produces one row per scheduled post.
|
|
174
|
+
|
|
175
|
+
### Required columns
|
|
176
|
+
|
|
177
|
+
| Column | Content | Rules |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| Date | YYYY-MM-DD | Must fall within campaign window |
|
|
180
|
+
| Day | Weekday name | Include for readability |
|
|
181
|
+
| Platform | Platform slug (from coverage doc) | Must be in approved platform list |
|
|
182
|
+
| Content Theme | Theme pillar name | Must be one of 3–5 defined pillars |
|
|
183
|
+
| Post Type | image / video / carousel / text / reel / story | Must be valid for that platform |
|
|
184
|
+
| Caption Preview | First 100 characters of selected variant | Do not paste full caption |
|
|
185
|
+
| CTA | Call-to-action phrase | Required — never "N/A" |
|
|
186
|
+
| Media Notes | Asset requirements, dimensions, duration | Required for image/video/carousel |
|
|
187
|
+
| Status | draft / approved / scheduled / published | Default: draft |
|
|
188
|
+
|
|
189
|
+
### Cadence rules
|
|
190
|
+
|
|
191
|
+
- Minimum 3 posts per week per platform for meaningful growth signal
|
|
192
|
+
- Maximum 3 posts per day per platform to avoid feed fatigue
|
|
193
|
+
- Space multi-platform posts by at least 30 minutes to avoid simultaneous publishing optics
|
|
194
|
+
- Reserve weekends for engagement/community posts rather than promotional content unless client specifies otherwise
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## STEP 7 — SCHEDULING MANIFEST FORMAT
|
|
199
|
+
|
|
200
|
+
See `docs/bullmq-queue-layer.md` for full format specification.
|
|
201
|
+
|
|
202
|
+
Quick format reference:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"postizSchedulingManifest": {
|
|
207
|
+
"version": "1.0",
|
|
208
|
+
"workspaceId": "<postiz-workspace-uuid>",
|
|
209
|
+
"generatedAt": "<ISO-8601-timestamp>",
|
|
210
|
+
"posts": [
|
|
211
|
+
{
|
|
212
|
+
"postId": "<client-slug>-<YYYYMMDD>-<platform>-<sequence>",
|
|
213
|
+
"platform": "<postiz-platform-id>",
|
|
214
|
+
"scheduledAt": "<ISO-8601-timestamp>",
|
|
215
|
+
"content": "<selected-caption-variant>",
|
|
216
|
+
"mediaAssets": [],
|
|
217
|
+
"status": "pending"
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## STEP 8 — ANALYTICS BRIEFING LOGIC
|
|
227
|
+
|
|
228
|
+
When analytics data is provided (from Postiz API export or client-provided metrics):
|
|
229
|
+
|
|
230
|
+
### Required metrics to collect per platform
|
|
231
|
+
|
|
232
|
+
| Metric | Source | Notes |
|
|
233
|
+
|---|---|---|
|
|
234
|
+
| Impressions | Postiz analytics or platform export | Total times content was displayed |
|
|
235
|
+
| Reach | Platform native | Unique accounts that saw the content |
|
|
236
|
+
| Engagement rate | Calculated: (likes + comments + shares) / impressions × 100 | Platform-normalized |
|
|
237
|
+
| Follower growth | Platform native | Net new followers during period |
|
|
238
|
+
| Link clicks | Postiz UTM tracking or platform bio links | Only for platforms with link support |
|
|
239
|
+
| Top posts | By engagement rate, not raw likes | Surface the 3 best-performing posts |
|
|
240
|
+
|
|
241
|
+
### Analytics briefing structure
|
|
242
|
+
|
|
243
|
+
1. Period summary (date range, total posts published, platforms)
|
|
244
|
+
2. Per-platform performance table (all collected metrics)
|
|
245
|
+
3. Top 3 performing posts (with engagement rate, format, theme pillar)
|
|
246
|
+
4. Bottom 3 performing posts (with failure mode hypothesis)
|
|
247
|
+
5. Recommendations (3–5 actionable items for next period)
|
|
248
|
+
6. Benchmark comparison (if industry benchmarks are available from brand kit)
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## STEP 9 — OUTPUT ORDER
|
|
253
|
+
|
|
254
|
+
Produce artifacts in this strict order:
|
|
255
|
+
|
|
256
|
+
1. Social Campaign Brief (`templates/social-campaign-brief.md`)
|
|
257
|
+
2. Content Calendar (`templates/content-calendar.md`)
|
|
258
|
+
3. Platform Publishing Plan (`templates/platform-publishing-plan.md`)
|
|
259
|
+
4. Caption Copy Deck (`templates/caption-copy-deck.md`)
|
|
260
|
+
5. Scheduling Manifest (`templates/scheduling-manifest.md`) — only if scheduling requested
|
|
261
|
+
6. Analytics Brief (`templates/analytics-brief.md`) — only if analytics data available
|
|
262
|
+
7. Client Proposal (`templates/client-proposal.md`) — only if requested
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## STEP 10 — QUALITY BAR
|
|
267
|
+
|
|
268
|
+
Good output looks like this:
|
|
269
|
+
|
|
270
|
+
- All platform IDs match the official list in `docs/platform-coverage.md` — no invented platform slugs
|
|
271
|
+
- All caption variants respect the character limits for their target platform
|
|
272
|
+
- Content calendar rows contain no empty CTAs — every post must have an explicit call to action
|
|
273
|
+
- Scheduling manifest timestamps are in ISO 8601 format and fall within the campaign window
|
|
274
|
+
- Analytics briefings derive all metrics from provided data — no invented engagement rates
|
|
275
|
+
- Client proposals ground ROI projections in documented platform benchmark data
|
|
276
|
+
- Every output file can be handed to an operator or client and acted on immediately
|
|
277
|
+
- No filler paragraphs — every sentence either presents data, explains a constraint, or specifies an action
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Analytics Brief
|
|
2
|
+
|
|
3
|
+
<!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Period Summary
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Client | <!-- client name --> |
|
|
12
|
+
| Campaign | <!-- campaign name --> |
|
|
13
|
+
| Period | <!-- YYYY-MM-DD to YYYY-MM-DD --> |
|
|
14
|
+
| Platforms Analyzed | <!-- comma-separated --> |
|
|
15
|
+
| Total Posts Published | <!-- N --> |
|
|
16
|
+
| Data Source | <!-- Postiz API export / client-provided metrics / Postiz analytics dashboard --> |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Per-Platform Performance
|
|
21
|
+
|
|
22
|
+
| Platform | Impressions | Reach | Engagement Rate | Follower Growth | Link Clicks | Posts Published |
|
|
23
|
+
|---|---|---|---|---|---|---|
|
|
24
|
+
| <!-- instagram --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- +N --> | <!-- N --> | <!-- N --> |
|
|
25
|
+
| <!-- linkedin --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- +N --> | <!-- N --> | <!-- N --> |
|
|
26
|
+
| <!-- tiktok --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- +N --> | <!-- N/A --> | <!-- N --> |
|
|
27
|
+
| <!-- twitter --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- +N --> | <!-- N --> | <!-- N --> |
|
|
28
|
+
| **Totals** | <!-- --> | <!-- --> | <!-- avg --> | <!-- net --> | <!-- --> | <!-- --> |
|
|
29
|
+
|
|
30
|
+
*Engagement Rate = (likes + comments + shares + saves) / impressions × 100*
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Top 3 Performing Posts
|
|
35
|
+
|
|
36
|
+
### #1 Best Performing
|
|
37
|
+
|
|
38
|
+
| Attribute | Value |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Post Date | <!-- YYYY-MM-DD --> |
|
|
41
|
+
| Platform | <!-- --> |
|
|
42
|
+
| Theme Pillar | <!-- --> |
|
|
43
|
+
| Post Type | <!-- --> |
|
|
44
|
+
| Impressions | <!-- --> |
|
|
45
|
+
| Engagement Rate | <!-- N% --> |
|
|
46
|
+
| Caption Preview | <!-- first 100 chars --> |
|
|
47
|
+
| Why It Worked | <!-- hypothesis: format, timing, topic, hook style --> |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### #2 Best Performing
|
|
52
|
+
|
|
53
|
+
| Attribute | Value |
|
|
54
|
+
|---|---|
|
|
55
|
+
| Post Date | <!-- --> |
|
|
56
|
+
| Platform | <!-- --> |
|
|
57
|
+
| Theme Pillar | <!-- --> |
|
|
58
|
+
| Post Type | <!-- --> |
|
|
59
|
+
| Impressions | <!-- --> |
|
|
60
|
+
| Engagement Rate | <!-- N% --> |
|
|
61
|
+
| Caption Preview | <!-- --> |
|
|
62
|
+
| Why It Worked | <!-- --> |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### #3 Best Performing
|
|
67
|
+
|
|
68
|
+
| Attribute | Value |
|
|
69
|
+
|---|---|
|
|
70
|
+
| Post Date | <!-- --> |
|
|
71
|
+
| Platform | <!-- --> |
|
|
72
|
+
| Theme Pillar | <!-- --> |
|
|
73
|
+
| Post Type | <!-- --> |
|
|
74
|
+
| Impressions | <!-- --> |
|
|
75
|
+
| Engagement Rate | <!-- N% --> |
|
|
76
|
+
| Caption Preview | <!-- --> |
|
|
77
|
+
| Why It Worked | <!-- --> |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Bottom 3 Performing Posts
|
|
82
|
+
|
|
83
|
+
| Post Date | Platform | Theme | Engagement Rate | Failure Hypothesis |
|
|
84
|
+
|---|---|---|---|---|
|
|
85
|
+
| <!-- --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- e.g., Posted at low-engagement time, generic topic, no visual hook --> |
|
|
86
|
+
| <!-- --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- --> |
|
|
87
|
+
| <!-- --> | <!-- --> | <!-- --> | <!-- N% --> | <!-- --> |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## KPI vs. Target Comparison
|
|
92
|
+
|
|
93
|
+
| KPI | Target | Actual | Status |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| Impressions | <!-- --> | <!-- --> | <!-- Met / Missed / Exceeded --> |
|
|
96
|
+
| Avg Engagement Rate | <!-- N% --> | <!-- N% --> | <!-- --> |
|
|
97
|
+
| Follower Growth | <!-- +N --> | <!-- +N --> | <!-- --> |
|
|
98
|
+
| Link Clicks | <!-- N --> | <!-- N --> | <!-- --> |
|
|
99
|
+
| Conversions | <!-- N --> | <!-- N --> | <!-- --> |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Recommendations for Next Period
|
|
104
|
+
|
|
105
|
+
<!-- 3–5 specific, actionable recommendations. Each must name the exact platform, format, or behavior to change. -->
|
|
106
|
+
|
|
107
|
+
1. **Increase [post type] on [platform]:** [Specific recommendation with rationale from data above]
|
|
108
|
+
2. **Shift [platform] posting time to [time]:** [Reason, referencing best-performing post timing]
|
|
109
|
+
3. **Add [content format] to [platform]:** [Why — engagement data supports this]
|
|
110
|
+
4. **Retire [underperforming theme pillar] on [platform]:** [Replace with X — engagement data shows Y]
|
|
111
|
+
5. **Test [caption variant style] on [platform]:** [Based on the performance gap between variants A and C]
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Benchmark Comparison
|
|
116
|
+
|
|
117
|
+
<!-- Compare client performance to industry benchmarks if available from brand kit or third-party sources. -->
|
|
118
|
+
|
|
119
|
+
| Metric | Client Result | Industry Benchmark | Source |
|
|
120
|
+
|---|---|---|---|
|
|
121
|
+
| Instagram engagement rate | <!-- N% --> | <!-- 1.0–3.0% --> | <!-- Rival IQ 2026 Industry Report --> |
|
|
122
|
+
| LinkedIn engagement rate | <!-- N% --> | <!-- 0.5–2.0% --> | <!-- --> |
|
|
123
|
+
| TikTok engagement rate | <!-- N% --> | <!-- 4.0–6.0% --> | <!-- --> |
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Caption Copy Deck
|
|
2
|
+
|
|
3
|
+
<!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Client | <!-- client name --> |
|
|
12
|
+
| Campaign | <!-- campaign name --> |
|
|
13
|
+
| Total Posts | <!-- N --> |
|
|
14
|
+
| Platforms Covered | <!-- comma-separated --> |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Caption Entries
|
|
19
|
+
|
|
20
|
+
<!-- One entry per scheduled post. Entries follow calendar order (date ascending). -->
|
|
21
|
+
<!-- Each entry includes 3 variants (A/B/C) and a selected variant recommendation. -->
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### Post 001 — <!-- YYYY-MM-DD --> | <!-- platform --> | <!-- Theme Pillar -->
|
|
26
|
+
|
|
27
|
+
**Post Type:** <!-- image / video / carousel / text -->
|
|
28
|
+
**Media Notes:** <!-- asset requirements, dimensions -->
|
|
29
|
+
**CTA:** <!-- exact call-to-action text -->
|
|
30
|
+
**Hashtags:** <!-- #hashtag1 #hashtag2 #hashtag3 -->
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
**Variant A — Direct / Factual**
|
|
35
|
+
|
|
36
|
+
> <!-- Caption text. Stays within character limit. Leads with the core fact or insight. -->
|
|
37
|
+
|
|
38
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
**Variant B — Storytelling / Narrative**
|
|
43
|
+
|
|
44
|
+
> <!-- Caption text. Opens with a scenario or relatable situation before delivering the insight. -->
|
|
45
|
+
|
|
46
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
**Variant C — Question / Engagement Hook**
|
|
51
|
+
|
|
52
|
+
> <!-- Caption text. Opens with a direct question or provocative statement to drive comments. -->
|
|
53
|
+
|
|
54
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
**Recommended Variant:** <!-- A / B / C -->
|
|
59
|
+
**Recommendation Rationale:** <!-- e.g., Variant B performs best for this audience on Instagram due to story-first format -->
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### Post 002 — <!-- YYYY-MM-DD --> | <!-- platform --> | <!-- Theme Pillar -->
|
|
64
|
+
|
|
65
|
+
**Post Type:** <!-- -->
|
|
66
|
+
**Media Notes:** <!-- -->
|
|
67
|
+
**CTA:** <!-- -->
|
|
68
|
+
**Hashtags:** <!-- -->
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
**Variant A — Direct / Factual**
|
|
73
|
+
|
|
74
|
+
> <!-- -->
|
|
75
|
+
|
|
76
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
**Variant B — Storytelling / Narrative**
|
|
81
|
+
|
|
82
|
+
> <!-- -->
|
|
83
|
+
|
|
84
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
**Variant C — Question / Engagement Hook**
|
|
89
|
+
|
|
90
|
+
> <!-- -->
|
|
91
|
+
|
|
92
|
+
*Character count: <!-- N --> / <!-- platform limit -->*
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
**Recommended Variant:** <!-- -->
|
|
97
|
+
**Recommendation Rationale:** <!-- -->
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
<!-- Repeat entry block for each post in the content calendar. -->
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Hashtag Library
|
|
106
|
+
|
|
107
|
+
<!-- Reusable hashtag sets for each platform and theme pillar. -->
|
|
108
|
+
|
|
109
|
+
### <!-- Platform: Instagram -->
|
|
110
|
+
|
|
111
|
+
| Pillar | Hashtag Set |
|
|
112
|
+
|---|---|
|
|
113
|
+
| <!-- Industry Insights --> | <!-- #hashtag1 #hashtag2 #hashtag3 --> |
|
|
114
|
+
| <!-- Product Value --> | <!-- --> |
|
|
115
|
+
| <!-- Social Proof --> | <!-- --> |
|
|
116
|
+
|
|
117
|
+
### <!-- Platform: LinkedIn -->
|
|
118
|
+
|
|
119
|
+
| Pillar | Hashtag Set |
|
|
120
|
+
|---|---|
|
|
121
|
+
| <!-- Industry Insights --> | <!-- #hashtag1 #hashtag2 #hashtag3 --> |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Caption Quality Notes
|
|
126
|
+
|
|
127
|
+
<!-- Any platform-specific constraints, approved terminology, or client-mandated phrases to use or avoid. -->
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Social Media Campaign Proposal
|
|
2
|
+
|
|
3
|
+
<!-- Client: [client-slug] | Version: v1 | Date: YYYY-MM-DD -->
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Executive Summary
|
|
8
|
+
|
|
9
|
+
<!-- 2–3 sentence overview: who the client is, the campaign objective, the recommended platform mix, and the expected business outcome. No filler — every sentence must reference a concrete number or outcome. -->
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Campaign Overview
|
|
14
|
+
|
|
15
|
+
| Field | Value |
|
|
16
|
+
|---|---|
|
|
17
|
+
| Proposed Campaign Name | <!-- --> |
|
|
18
|
+
| Campaign Objective | <!-- --> |
|
|
19
|
+
| Recommended Platforms | <!-- --> |
|
|
20
|
+
| Campaign Duration | <!-- e.g., 90 days --> |
|
|
21
|
+
| Total Posts | <!-- e.g., 120 posts across 4 platforms --> |
|
|
22
|
+
| Start Date | <!-- YYYY-MM-DD (proposed) --> |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Why These Platforms
|
|
27
|
+
|
|
28
|
+
<!-- For each recommended platform, explain the audience fit in 1–2 sentences grounded in the client's target demographics. No generic "Instagram has a large user base" statements. -->
|
|
29
|
+
|
|
30
|
+
| Platform | Audience Fit | Primary Role in Campaign |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| <!-- instagram --> | <!-- e.g., 68% of client's target demographic (25–40, urban professionals) are active Instagram users --> | <!-- Brand awareness through visual storytelling and Reels --> |
|
|
33
|
+
| <!-- linkedin --> | <!-- --> | <!-- --> |
|
|
34
|
+
| <!-- tiktok --> | <!-- --> | <!-- --> |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Content Strategy
|
|
39
|
+
|
|
40
|
+
### Theme Pillars
|
|
41
|
+
|
|
42
|
+
| Pillar | Description | % of Calendar | Key Formats |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| <!-- Industry Insights --> | <!-- What the client knows that their audience doesn't --> | <!-- 40% --> | <!-- Carousels, long-form captions --> |
|
|
45
|
+
| <!-- Product Value --> | <!-- Feature spotlights, use cases, comparisons --> | <!-- 30% --> | <!-- Images, short video demos --> |
|
|
46
|
+
| <!-- Social Proof --> | <!-- Customer stories, testimonials, case data --> | <!-- 20% --> | <!-- Quote graphics, video testimonials --> |
|
|
47
|
+
| <!-- Community --> | <!-- Q&A, polls, behind-the-scenes --> | <!-- 10% --> | <!-- Stories, polls, text posts --> |
|
|
48
|
+
|
|
49
|
+
### Caption Strategy
|
|
50
|
+
|
|
51
|
+
All captions will be drafted as A/B/C variants. The selected variant per post will be chosen based on:
|
|
52
|
+
- Platform-specific tone profile
|
|
53
|
+
- Content pillar (educational pillars → Variant A; community pillars → Variant C)
|
|
54
|
+
- A/B test results from prior campaigns (if analytics data is available)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Deliverables
|
|
59
|
+
|
|
60
|
+
| Deliverable | Format | Cadence |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| Social Campaign Brief | Markdown | Once (at campaign start) |
|
|
63
|
+
| Content Calendar | Markdown | Once (monthly refresh) |
|
|
64
|
+
| Platform Publishing Plan | Markdown | Once (at campaign start) |
|
|
65
|
+
| Caption Copy Deck | Markdown | Per 30-day block |
|
|
66
|
+
| Scheduling Manifest | JSON | Per 30-day block |
|
|
67
|
+
| Analytics Brief | Markdown | Monthly |
|
|
68
|
+
| Client Proposal | Markdown | At engagement start |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Engagement Tiers
|
|
73
|
+
|
|
74
|
+
### Tier 1 — Campaign Starter
|
|
75
|
+
|
|
76
|
+
**Scope:** 1 platform, 3 posts/week, 30-day content calendar, caption copy deck (A/B variants), one analytics brief
|
|
77
|
+
|
|
78
|
+
**Includes:**
|
|
79
|
+
- Social Campaign Brief
|
|
80
|
+
- 30-Day Content Calendar (13 posts)
|
|
81
|
+
- Caption Copy Deck (A/B variants)
|
|
82
|
+
- One Month Analytics Brief
|
|
83
|
+
|
|
84
|
+
**Best for:** Clients testing social media for the first time or validating a single platform.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### Tier 2 — Multi-Platform Growth
|
|
89
|
+
|
|
90
|
+
**Scope:** Up to 3 platforms, 5 posts/week per platform, 90-day content calendar, full caption copy deck (A/B/C), Postiz scheduling setup, monthly analytics
|
|
91
|
+
|
|
92
|
+
**Includes:**
|
|
93
|
+
- Social Campaign Brief
|
|
94
|
+
- 90-Day Content Calendar (up to 195 posts)
|
|
95
|
+
- Platform Publishing Plan
|
|
96
|
+
- Caption Copy Deck (A/B/C variants)
|
|
97
|
+
- Postiz Scheduling Manifest + setup support
|
|
98
|
+
- 3× Monthly Analytics Briefs
|
|
99
|
+
|
|
100
|
+
**Best for:** Brands actively investing in social media growth with a dedicated content team.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### Tier 3 — Full Social Media Operator
|
|
105
|
+
|
|
106
|
+
**Scope:** Up to 5 platforms, daily cadence, full campaign lifecycle, AI-assisted caption generation, Postiz multi-workspace management, weekly analytics
|
|
107
|
+
|
|
108
|
+
**Includes:**
|
|
109
|
+
- Social Campaign Brief (refreshed quarterly)
|
|
110
|
+
- Rolling 30-Day Content Calendar (maintained ongoing)
|
|
111
|
+
- Platform Publishing Plan
|
|
112
|
+
- Caption Copy Deck (A/B/C variants + AI-enhanced alternatives)
|
|
113
|
+
- Postiz Scheduling Manifest (submitted on approval)
|
|
114
|
+
- Weekly Analytics Briefings
|
|
115
|
+
- Quarterly Campaign Strategy Review
|
|
116
|
+
|
|
117
|
+
**Best for:** Clients treating social media as a primary growth channel with volume demands across multiple platforms.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## ROI Projection
|
|
122
|
+
|
|
123
|
+
<!-- Ground these projections in documented platform benchmarks. Do not invent numbers. -->
|
|
124
|
+
|
|
125
|
+
| Scenario | Baseline Assumptions | Projected Outcome | Source |
|
|
126
|
+
|---|---|---|---|
|
|
127
|
+
| Conservative (Tier 1) | 3 posts/week, 1 platform, avg 1.5% engagement rate | <!-- +X followers, Y impressions / month --> | Industry average — [source] |
|
|
128
|
+
| Mid (Tier 2) | 5 posts/week × 3 platforms, avg 2.5% engagement | <!-- --> | <!-- --> |
|
|
129
|
+
| Aggressive (Tier 3) | Daily × 5 platforms, AI captions, Postiz scheduling | <!-- --> | <!-- --> |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Next Steps
|
|
134
|
+
|
|
135
|
+
1. Select engagement tier
|
|
136
|
+
2. Complete brand kit (or review and approve Growthub's draft)
|
|
137
|
+
3. Approve first 30-day content calendar
|
|
138
|
+
4. Connect platforms in Postiz admin UI (if using local-fork or hosted Postiz)
|
|
139
|
+
5. Campaign goes live on agreed start date
|