conectese 0.1.14

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.
Files changed (260) hide show
  1. package/README.md +265 -0
  2. package/_conectese/.conectese-version +1 -0
  3. package/_conectese/config/playwright.config.json +11 -0
  4. package/_conectese/core/architect.agent.yaml +110 -0
  5. package/_conectese/core/best-practices/_catalog.yaml +116 -0
  6. package/_conectese/core/best-practices/blog-post.md +132 -0
  7. package/_conectese/core/best-practices/blog-seo.md +127 -0
  8. package/_conectese/core/best-practices/copywriting.md +426 -0
  9. package/_conectese/core/best-practices/data-analysis.md +401 -0
  10. package/_conectese/core/best-practices/email-newsletter.md +118 -0
  11. package/_conectese/core/best-practices/email-sales.md +110 -0
  12. package/_conectese/core/best-practices/image-design.md +348 -0
  13. package/_conectese/core/best-practices/instagram-feed.md +235 -0
  14. package/_conectese/core/best-practices/instagram-reels.md +112 -0
  15. package/_conectese/core/best-practices/instagram-stories.md +107 -0
  16. package/_conectese/core/best-practices/linkedin-article.md +116 -0
  17. package/_conectese/core/best-practices/linkedin-post.md +121 -0
  18. package/_conectese/core/best-practices/researching.md +349 -0
  19. package/_conectese/core/best-practices/review.md +269 -0
  20. package/_conectese/core/best-practices/social-networks-publishing.md +294 -0
  21. package/_conectese/core/best-practices/strategist.md +344 -0
  22. package/_conectese/core/best-practices/technical-writing.md +365 -0
  23. package/_conectese/core/best-practices/twitter-post.md +105 -0
  24. package/_conectese/core/best-practices/twitter-thread.md +122 -0
  25. package/_conectese/core/best-practices/whatsapp-broadcast.md +107 -0
  26. package/_conectese/core/best-practices/youtube-script.md +122 -0
  27. package/_conectese/core/best-practices/youtube-shorts.md +112 -0
  28. package/_conectese/core/prompts/build.prompt.md +547 -0
  29. package/_conectese/core/prompts/design.prompt.md +469 -0
  30. package/_conectese/core/prompts/discovery.prompt.md +269 -0
  31. package/_conectese/core/prompts/sherlock-instagram.md +123 -0
  32. package/_conectese/core/prompts/sherlock-linkedin.md +73 -0
  33. package/_conectese/core/prompts/sherlock-shared.md +684 -0
  34. package/_conectese/core/prompts/sherlock-twitter.md +78 -0
  35. package/_conectese/core/prompts/sherlock-youtube.md +85 -0
  36. package/_conectese/core/runner.pipeline.md +535 -0
  37. package/_conectese/core/skills.engine.md +381 -0
  38. package/agents/data-extractor/AGENT.md +13 -0
  39. package/agents/direito-adaneiro/AGENT.md +18 -0
  40. package/agents/direito-administrativo/AGENT.md +18 -0
  41. package/agents/direito-aeroporta-rio/AGENT.md +18 -0
  42. package/agents/direito-agra-rio/AGENT.md +18 -0
  43. package/agents/direito-ambiental/AGENT.md +18 -0
  44. package/agents/direito-banca-rio/AGENT.md +18 -0
  45. package/agents/direito-civil/AGENT.md +18 -0
  46. package/agents/direito-constitcional/AGENT.md +18 -0
  47. package/agents/direito-da-crianc-a-e-do-adolescente-eca/AGENT.md +18 -0
  48. package/agents/direito-da-propriedade-intelectal/AGENT.md +18 -0
  49. package/agents/direito-de-ami-lia/AGENT.md +18 -0
  50. package/agents/direito-de-tra-nsito/AGENT.md +18 -0
  51. package/agents/direito-desportivo/AGENT.md +18 -0
  52. package/agents/direito-digital/AGENT.md +18 -0
  53. package/agents/direito-do-consmidor/AGENT.md +18 -0
  54. package/agents/direito-do-trabalho/AGENT.md +18 -0
  55. package/agents/direito-econo-mico/AGENT.md +18 -0
  56. package/agents/direito-eleitoral/AGENT.md +18 -0
  57. package/agents/direito-empresarial/AGENT.md +18 -0
  58. package/agents/direito-imobilia-rio/AGENT.md +18 -0
  59. package/agents/direito-inanceiro/AGENT.md +18 -0
  60. package/agents/direito-internacional/AGENT.md +18 -0
  61. package/agents/direito-mari-timo/AGENT.md +18 -0
  62. package/agents/direito-me-dico-e-da-sa-de/AGENT.md +18 -0
  63. package/agents/direito-militar/AGENT.md +18 -0
  64. package/agents/direito-ndia-rio/AGENT.md +18 -0
  65. package/agents/direito-notarial-e-registral/AGENT.md +18 -0
  66. package/agents/direito-penal/AGENT.md +18 -0
  67. package/agents/direito-previdencia-rio/AGENT.md +18 -0
  68. package/agents/direito-processal-civil/AGENT.md +18 -0
  69. package/agents/direito-processal-do-trabalho/AGENT.md +18 -0
  70. package/agents/direito-processal-militar/AGENT.md +18 -0
  71. package/agents/direito-processal-penal/AGENT.md +18 -0
  72. package/agents/direito-rbani-stico/AGENT.md +18 -0
  73. package/agents/direito-secrita-rio/AGENT.md +18 -0
  74. package/agents/direito-sindical/AGENT.md +18 -0
  75. package/agents/direito-societa-rio/AGENT.md +18 -0
  76. package/agents/direito-tribta-rio/AGENT.md +18 -0
  77. package/agents/direitos-hmanos/AGENT.md +18 -0
  78. package/agents/legal-analyst/AGENT.md +16 -0
  79. package/agents/legal-synthesizer/AGENT.md +13 -0
  80. package/agents/lgpd-anonymizer/AGENT.md +14 -0
  81. package/agents/lgpd-restorer/AGENT.md +14 -0
  82. package/agents/task-router/AGENT.md +13 -0
  83. package/bin/conectese.js +73 -0
  84. package/dashboard/index.html +12 -0
  85. package/dashboard/package-lock.json +1971 -0
  86. package/dashboard/package.json +28 -0
  87. package/dashboard/public/assets/avatars/Female1_1wave.png +0 -0
  88. package/dashboard/public/assets/avatars/Female1_2wave.png +0 -0
  89. package/dashboard/public/assets/avatars/Female1_blink.png +0 -0
  90. package/dashboard/public/assets/avatars/Female1_talk.png +0 -0
  91. package/dashboard/public/assets/avatars/Female2_1wave.png +0 -0
  92. package/dashboard/public/assets/avatars/Female2_2wave.png +0 -0
  93. package/dashboard/public/assets/avatars/Female2_blink.png +0 -0
  94. package/dashboard/public/assets/avatars/Female2_talk.png +0 -0
  95. package/dashboard/public/assets/avatars/Female3_blink.png +0 -0
  96. package/dashboard/public/assets/avatars/Female3_talk.png +0 -0
  97. package/dashboard/public/assets/avatars/Female3_wave.png +0 -0
  98. package/dashboard/public/assets/avatars/Female4_blink.png +0 -0
  99. package/dashboard/public/assets/avatars/Female4_talk.png +0 -0
  100. package/dashboard/public/assets/avatars/Female4_wave.png +0 -0
  101. package/dashboard/public/assets/avatars/Female5_blink.png +0 -0
  102. package/dashboard/public/assets/avatars/Female5_talk.png +0 -0
  103. package/dashboard/public/assets/avatars/Female5_wave.png +0 -0
  104. package/dashboard/public/assets/avatars/Female6_blink.png +0 -0
  105. package/dashboard/public/assets/avatars/Female6_talk.png +0 -0
  106. package/dashboard/public/assets/avatars/Female6_wave.png +0 -0
  107. package/dashboard/public/assets/avatars/Male1_1wave.png +0 -0
  108. package/dashboard/public/assets/avatars/Male1_2wave.png +0 -0
  109. package/dashboard/public/assets/avatars/Male1_blink.png +0 -0
  110. package/dashboard/public/assets/avatars/Male1_talk.png +0 -0
  111. package/dashboard/public/assets/avatars/Male2_1wave.png +0 -0
  112. package/dashboard/public/assets/avatars/Male2_2wave.png +0 -0
  113. package/dashboard/public/assets/avatars/Male2_blink.png +0 -0
  114. package/dashboard/public/assets/avatars/Male2_talk.png +0 -0
  115. package/dashboard/public/assets/avatars/Male3_blink.png +0 -0
  116. package/dashboard/public/assets/avatars/Male3_talk.png +0 -0
  117. package/dashboard/public/assets/avatars/Male3_wave.png +0 -0
  118. package/dashboard/public/assets/avatars/Male4_blink.png +0 -0
  119. package/dashboard/public/assets/avatars/Male4_talk.png +0 -0
  120. package/dashboard/public/assets/avatars/Male4_wave.png +0 -0
  121. package/dashboard/public/assets/desks/desktop_set_black_down.png +0 -0
  122. package/dashboard/public/assets/desks/desktop_set_black_down_coding-1.png +0 -0
  123. package/dashboard/public/assets/desks/desktop_set_black_down_coding.png +0 -0
  124. package/dashboard/public/assets/desks/desktop_set_black_up.png +0 -0
  125. package/dashboard/public/assets/desks/desktop_set_white_down.png +0 -0
  126. package/dashboard/public/assets/desks/desktop_set_white_down_coding-1.png +0 -0
  127. package/dashboard/public/assets/desks/desktop_set_white_down_coding.png +0 -0
  128. package/dashboard/public/assets/desks/desktop_set_white_up.png +0 -0
  129. package/dashboard/public/assets/furniture/armchair_tan.png +0 -0
  130. package/dashboard/public/assets/furniture/armchair_tan_down.png +0 -0
  131. package/dashboard/public/assets/furniture/backpack_blue.png +0 -0
  132. package/dashboard/public/assets/furniture/backpack_red.png +0 -0
  133. package/dashboard/public/assets/furniture/blinds.png +0 -0
  134. package/dashboard/public/assets/furniture/blinds_large_closed_white.png +0 -0
  135. package/dashboard/public/assets/furniture/bookshelf.png +0 -0
  136. package/dashboard/public/assets/furniture/bookshelf_purple_tall.png +0 -0
  137. package/dashboard/public/assets/furniture/bulletin_board.png +0 -0
  138. package/dashboard/public/assets/furniture/clock.png +0 -0
  139. package/dashboard/public/assets/furniture/coffee_mug.png +0 -0
  140. package/dashboard/public/assets/furniture/coffee_mug_blue.png +0 -0
  141. package/dashboard/public/assets/furniture/coffee_table.png +0 -0
  142. package/dashboard/public/assets/furniture/coffeepot_right.png +0 -0
  143. package/dashboard/public/assets/furniture/coffeetable_black_horizontal.png +0 -0
  144. package/dashboard/public/assets/furniture/couch.png +0 -0
  145. package/dashboard/public/assets/furniture/couch_tan_down.png +0 -0
  146. package/dashboard/public/assets/furniture/cushion_blue.png +0 -0
  147. package/dashboard/public/assets/furniture/cushion_tan.png +0 -0
  148. package/dashboard/public/assets/furniture/desk_wood.png +0 -0
  149. package/dashboard/public/assets/furniture/fancy_rug.png +0 -0
  150. package/dashboard/public/assets/furniture/fancy_rug_wide.png +0 -0
  151. package/dashboard/public/assets/furniture/flowers1.png +0 -0
  152. package/dashboard/public/assets/furniture/flowers2.png +0 -0
  153. package/dashboard/public/assets/furniture/lamp_tan.png +0 -0
  154. package/dashboard/public/assets/furniture/lantern.png +0 -0
  155. package/dashboard/public/assets/furniture/monstera.png +0 -0
  156. package/dashboard/public/assets/furniture/monstera_small.png +0 -0
  157. package/dashboard/public/assets/furniture/picture_frame.png +0 -0
  158. package/dashboard/public/assets/furniture/plant1.png +0 -0
  159. package/dashboard/public/assets/furniture/plant2.png +0 -0
  160. package/dashboard/public/assets/furniture/plant3.png +0 -0
  161. package/dashboard/public/assets/furniture/plant_poof.png +0 -0
  162. package/dashboard/public/assets/furniture/plant_spindly.png +0 -0
  163. package/dashboard/public/assets/furniture/poster_blue.png +0 -0
  164. package/dashboard/public/assets/furniture/rug.png +0 -0
  165. package/dashboard/public/assets/furniture/succulent_blue.png +0 -0
  166. package/dashboard/public/assets/furniture/succulent_green.png +0 -0
  167. package/dashboard/public/assets/furniture/treasurechest_closed_gold.png +0 -0
  168. package/dashboard/public/assets/furniture/water_cooler_better.png +0 -0
  169. package/dashboard/public/assets/furniture/whiteboard.png +0 -0
  170. package/dashboard/public/assets/furniture/whiteboard_stand_graph.png +0 -0
  171. package/dashboard/public/assets/furniture/window_blinds_open.png +0 -0
  172. package/dashboard/src/App.tsx +46 -0
  173. package/dashboard/src/components/SquadCard.tsx +47 -0
  174. package/dashboard/src/components/SquadSelector.tsx +61 -0
  175. package/dashboard/src/components/StatusBadge.tsx +32 -0
  176. package/dashboard/src/components/StatusBar.tsx +97 -0
  177. package/dashboard/src/hooks/useSquadSocket.ts +135 -0
  178. package/dashboard/src/lib/formatTime.ts +16 -0
  179. package/dashboard/src/lib/normalizeState.ts +25 -0
  180. package/dashboard/src/main.tsx +10 -0
  181. package/dashboard/src/office/AgentSprite.ts +241 -0
  182. package/dashboard/src/office/OfficeScene.ts +153 -0
  183. package/dashboard/src/office/PhaserGame.tsx +80 -0
  184. package/dashboard/src/office/RoomBuilder.ts +190 -0
  185. package/dashboard/src/office/assetKeys.ts +150 -0
  186. package/dashboard/src/office/palette.ts +32 -0
  187. package/dashboard/src/plugin/squadWatcher.ts +233 -0
  188. package/dashboard/src/store/useSquadStore.ts +56 -0
  189. package/dashboard/src/styles/globals.css +36 -0
  190. package/dashboard/src/types/state.ts +63 -0
  191. package/dashboard/src/vite-env.d.ts +1 -0
  192. package/dashboard/test-results/.last-run.json +4 -0
  193. package/dashboard/tsconfig.json +24 -0
  194. package/dashboard/tsconfig.tsbuildinfo +1 -0
  195. package/dashboard/vite.config.ts +13 -0
  196. package/package.json +53 -0
  197. package/skills/README.md +63 -0
  198. package/skills/apify/SKILL.md +55 -0
  199. package/skills/blotato/SKILL.md +63 -0
  200. package/skills/canva/SKILL.md +60 -0
  201. package/skills/conectese-agent-creator/SKILL.md +192 -0
  202. package/skills/conectese-skill-creator/SKILL.md +407 -0
  203. package/skills/conectese-skill-creator/agents/analyzer.md +274 -0
  204. package/skills/conectese-skill-creator/agents/comparator.md +202 -0
  205. package/skills/conectese-skill-creator/agents/grader.md +223 -0
  206. package/skills/conectese-skill-creator/assets/eval_review.html +146 -0
  207. package/skills/conectese-skill-creator/eval-viewer/generate_review.py +471 -0
  208. package/skills/conectese-skill-creator/eval-viewer/viewer.html +1325 -0
  209. package/skills/conectese-skill-creator/references/schemas.md +430 -0
  210. package/skills/conectese-skill-creator/references/skill-format.md +235 -0
  211. package/skills/conectese-skill-creator/scripts/__init__.py +0 -0
  212. package/skills/conectese-skill-creator/scripts/aggregate_benchmark.py +401 -0
  213. package/skills/conectese-skill-creator/scripts/quick_validate.py +103 -0
  214. package/skills/conectese-skill-creator/scripts/run_eval.py +310 -0
  215. package/skills/conectese-skill-creator/scripts/utils.py +47 -0
  216. package/skills/image-ai-generator/SKILL.md +124 -0
  217. package/skills/image-ai-generator/scripts/generate.py +175 -0
  218. package/skills/image-creator/SKILL.md +155 -0
  219. package/skills/image-fetcher/SKILL.md +91 -0
  220. package/skills/instagram-publisher/SKILL.md +119 -0
  221. package/skills/instagram-publisher/scripts/publish.js +165 -0
  222. package/skills/resend/SKILL.md +80 -0
  223. package/skills/template-designer/SKILL.md +201 -0
  224. package/skills/template-designer/base-templates/model-a.html +27 -0
  225. package/skills/template-designer/base-templates/model-b.html +31 -0
  226. package/skills/template-designer/base-templates/model-c.html +42 -0
  227. package/src/agents-cli.js +158 -0
  228. package/src/agents.js +134 -0
  229. package/src/i18n.js +48 -0
  230. package/src/init.js +341 -0
  231. package/src/locales/en.json +73 -0
  232. package/src/locales/es.json +72 -0
  233. package/src/locales/pt-BR.json +72 -0
  234. package/src/logger.js +38 -0
  235. package/src/prompt.js +46 -0
  236. package/src/readme/README.md +119 -0
  237. package/src/runs.js +90 -0
  238. package/src/skills-cli.js +157 -0
  239. package/src/skills.js +146 -0
  240. package/src/update.js +169 -0
  241. package/templates/_conectese/.conectese-version +1 -0
  242. package/templates/_conectese/_investigations/.gitkeep +0 -0
  243. package/templates/ide-templates/antigravity/.agent/rules/conectese.md +55 -0
  244. package/templates/ide-templates/antigravity/.agent/workflows/conectese.md +102 -0
  245. package/templates/ide-templates/claude-code/.claude/skills/conectese/SKILL.md +182 -0
  246. package/templates/ide-templates/claude-code/.mcp.json +8 -0
  247. package/templates/ide-templates/claude-code/CLAUDE.md +43 -0
  248. package/templates/ide-templates/codex/.agents/skills/conectese/SKILL.md +6 -0
  249. package/templates/ide-templates/codex/AGENTS.md +105 -0
  250. package/templates/ide-templates/cursor/.cursor/commands/conectese.md +9 -0
  251. package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
  252. package/templates/ide-templates/cursor/.cursor/rules/conectese.mdc +48 -0
  253. package/templates/ide-templates/cursor/.cursorignore +3 -0
  254. package/templates/ide-templates/opencode/.opencode/commands/conectese.md +9 -0
  255. package/templates/ide-templates/opencode/AGENTS.md +105 -0
  256. package/templates/ide-templates/vscode-copilot/.github/prompts/conectese.prompt.md +201 -0
  257. package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
  258. package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
  259. package/templates/package.json +8 -0
  260. package/templates/squads/.gitkeep +0 -0
@@ -0,0 +1,294 @@
1
+ ---
2
+ id: social-networks-publishing
3
+ name: "Social Networks Publishing"
4
+ whenToUse: |
5
+ Creating agents that publish content to Instagram, LinkedIn, X/Twitter,
6
+ YouTube, or other social platforms.
7
+ NOT for: copywriting, visual design, research, strategic planning.
8
+ version: "1.0.0"
9
+ ---
10
+
11
+ # Social Networks Publishing — Best Practices
12
+
13
+ ## Core Principles
14
+
15
+ 1. **Never publish without explicit user confirmation.** This is the cardinal rule. Before any live post, present the full preview (platform, images, caption, hashtags) and wait for the user to confirm. A dry-run is not confirmation. The user must explicitly say "publish" or "go ahead" before any live API call is made.
16
+
17
+ 2. **Dry-run first, always.** The first execution of any publishing workflow must be a dry-run (test mode). This validates that credentials are configured, images meet requirements, captions are within limits, and the API connection works. Only after a successful dry-run should the user be offered the option to publish for real.
18
+
19
+ 3. **Validate platform requirements before attempting to publish.** Every platform has specific constraints. Validate all of them before making any API call. If validation fails, report the specific issue and suggest a fix before proceeding.
20
+
21
+ 4. **Format content natively for each platform.** The same content may need reformatting for different platforms. Instagram captions use line breaks and 5-8 hashtags at the end. LinkedIn uses professional tone with 1-3 hashtags. X/Twitter needs concise messaging within character limits. Never publish the exact same raw text across all platforms without adaptation.
22
+
23
+ 5. **Report publishing results immediately.** After every publish attempt, report the outcome clearly:
24
+ - **Success**: Platform, post URL/permalink, post ID, timestamp
25
+ - **Failure**: Platform, error message, HTTP status code, suggested fix
26
+ - **Partial success** (multi-platform): Which platforms succeeded and which failed, with details for each
27
+
28
+ 6. **Multi-platform publishing is sequential, not parallel.** When publishing to multiple platforms, publish to one at a time. Report the result of each before proceeding to the next. If one fails, ask the user whether to continue with remaining platforms or stop. Never fire-and-forget across all platforms simultaneously.
29
+
30
+ 7. **Respect rate limits and warn proactively.** Track API usage against known rate limits. If the user is approaching a limit (e.g., 20 of 25 Instagram posts in 24 hours), warn them before the publish attempt, not after the error. Better to prevent a failed publish than to explain why it failed.
31
+
32
+ 8. **Graceful handling of missing skills.** If the user requests publishing to a platform whose skill is not installed, do not error out. Instead: (a) list which platforms ARE available via installed skills, (b) explain which skill would be needed for the requested platform, (c) offer to proceed with available platforms only.
33
+
34
+ 9. **Image format conversion when needed.** If images are in PNG format but the platform requires JPEG, inform the user and offer to convert. Do not silently convert or silently fail. Document any format transformations.
35
+
36
+ ## Platform Requirements
37
+
38
+ Every platform has specific constraints that must be validated before making any API call.
39
+
40
+ ### Instagram
41
+ - **Image format**: JPEG only
42
+ - **Image count**: 2-10 images for carousel
43
+ - **Caption length**: Max 2,200 characters
44
+ - **Rate limit**: 25 posts per 24 hours
45
+ - **Image hosting**: Use imgBB for public URLs (requires `IMGBB_API_KEY` in `.env`). Get a free key at https://api.imgbb.com/
46
+
47
+ ### LinkedIn
48
+ - **Image format**: JPG/PNG
49
+ - **Image count**: Max 9 images
50
+ - **Caption length**: 3,000 character limit
51
+ - **Hashtags**: No hashtag walls. Keep to 1-3 relevant hashtags.
52
+
53
+ ### X/Twitter
54
+ - **Image format**: JPG/PNG/GIF
55
+ - **Image count**: Max 4 images
56
+ - **Caption length**: 280 characters (or 25,000 for long-form)
57
+
58
+ ### TikTok
59
+ - **Content type**: Video only for posts
60
+ - **Aspect ratios**: Platform-specific aspect ratios required
61
+
62
+ ### YouTube
63
+ - **Thumbnail format**: JPG/PNG
64
+ - **Thumbnail size**: Max 2MB
65
+ - **Thumbnail dimensions**: 1280x720 minimum
66
+
67
+ ## Publishing Workflow
68
+
69
+ 1. **Receive content and identify targets.** Receive the approved content (images and text) from upstream agents or the user. Identify the target platform(s) for publication. If the user has not specified platforms, ask before proceeding.
70
+
71
+ 2. **Check skill availability.** For each target platform, verify that the required publishing skill is installed:
72
+ - Instagram: `instagram-publisher` skill
73
+ - Multi-platform (LinkedIn, X, TikTok, etc.): `blotato` skill
74
+ - If a required skill is missing, inform the user and list alternatives.
75
+
76
+ 3. **Validate content against platform requirements.** For each target platform, check:
77
+ - Image format and count (JPEG vs PNG, min/max images)
78
+ - Caption length against character limit
79
+ - Aspect ratio compatibility
80
+ - Any platform-specific restrictions
81
+ - If validation fails, report the specific issue and suggest a fix before proceeding.
82
+
83
+ 4. **Present preview to user.** Show a clear, structured preview:
84
+ ```
85
+ PUBLISH PREVIEW
86
+ Platform: Instagram (carousel)
87
+ Images: 7 slides (slide-01.jpg through slide-07.jpg)
88
+ Caption: [first 200 chars]... (1,847 / 2,200 chars)
89
+ Hashtags: #marketing #contentcreation #socialmedia (3)
90
+ Status: All validations passed
91
+ ```
92
+
93
+ 5. **Execute dry-run.** Run the publishing workflow in test mode:
94
+ - Instagram: `--dry-run` flag on the publish script
95
+ - Blotato: validate API connection and media upload without posting
96
+ - Report dry-run results: credentials OK, media uploaded, container created, ready to publish.
97
+
98
+ 6. **Request final confirmation.** Present the dry-run results and ask the user to confirm the live publish. Do not proceed without explicit approval.
99
+
100
+ 7. **Publish and report.** Execute the live publish. Report the result immediately:
101
+ - Success: post URL, post ID, platform, timestamp
102
+ - Failure: error details, suggested fix, option to retry
103
+
104
+ 8. **Multi-platform: repeat per platform.** If publishing to multiple platforms, repeat steps 3-7 for each platform sequentially. Report results after each one.
105
+
106
+ ## Decision Criteria
107
+
108
+ - **Which skill to use**: Instagram-only content uses `instagram-publisher` (direct API, most control). Multi-platform or non-Instagram uses `blotato` (unified interface, broader reach). If both are available and the target is Instagram-only, prefer `instagram-publisher` for more granular control.
109
+ - **When to convert image formats**: Convert PNG to JPEG only when the platform strictly requires JPEG (Instagram carousel). Always inform the user before converting. Never silently convert.
110
+ - **When to split a caption**: If a caption exceeds the platform limit, present the full caption, highlight where the cut would happen, and ask the user to shorten it. Do not truncate automatically.
111
+ - **When to stop multi-platform publishing**: Stop and ask the user after any platform failure. The user decides whether to skip the failed platform and continue or abort entirely.
112
+
113
+ ## Quality Criteria
114
+
115
+ - [ ] User confirmation was received before any live publish (not just dry-run)
116
+ - [ ] Dry-run was executed and passed before live publish
117
+ - [ ] All platform-specific validations passed (image format, dimensions, caption length, image count)
118
+ - [ ] Publish preview was presented with complete details (platform, images, caption, validation status)
119
+ - [ ] Successful publishes include post URL/permalink and post ID
120
+ - [ ] Failed publishes include error details, HTTP status, and suggested fix
121
+ - [ ] Multi-platform publishing was executed sequentially with per-platform reporting
122
+ - [ ] Rate limit status was checked and reported before publishing
123
+ - [ ] No caption was silently truncated or modified without user approval
124
+
125
+ ## Output Examples
126
+
127
+ ### Example 1: Instagram Carousel Publish Workflow
128
+
129
+ ```
130
+ PUBLISH PREVIEW
131
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
+ Platform: Instagram (carousel)
133
+ Account: @brandname
134
+ Skill: instagram-publisher
135
+ Images: 7 slides
136
+ 1. slide-01.jpg (1080x1440, JPEG, 287KB)
137
+ 2. slide-02.jpg (1080x1440, JPEG, 195KB)
138
+ 3. slide-03.jpg (1080x1440, JPEG, 213KB)
139
+ 4. slide-04.jpg (1080x1440, JPEG, 178KB)
140
+ 5. slide-05.jpg (1080x1440, JPEG, 201KB)
141
+ 6. slide-06.jpg (1080x1440, JPEG, 192KB)
142
+ 7. slide-07.jpg (1080x1440, JPEG, 244KB)
143
+
144
+ Caption (1,847 / 2,200 chars):
145
+ "You are doing 100 things to grow on Instagram.
146
+ And ignoring the ONE that actually works.
147
+
148
+ Here is what nobody tells you about organic growth:
149
+ [... truncated for preview ...]
150
+
151
+ Comment GUIDE below and I will DM you the full playbook.
152
+
153
+ #instagramgrowth #socialmedia #contentcreator
154
+ #digitalmarketing #organicgrowth"
155
+
156
+ VALIDATION
157
+ Image format: JPEG (required: JPEG)
158
+ Image count: 7 (required: 2-10)
159
+ Image dimensions: 1080x1440 (valid carousel)
160
+ Caption length: 1,847 chars (max: 2,200)
161
+ Hashtags: 5 (recommended: 5-8)
162
+ Rate limit: 3/25 posts used in last 24h
163
+
164
+ Status: All validations passed. Ready for dry-run.
165
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
166
+
167
+ DRY-RUN RESULT
168
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
169
+ Credentials: Valid (token expires 2026-04-15)
170
+ Image upload: 7/7 images uploaded to imgBB
171
+ Media containers: 7/7 containers created
172
+ Carousel container: Created successfully
173
+ Publish: Skipped (dry-run mode)
174
+
175
+ Dry-run passed. Awaiting confirmation to publish live.
176
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
177
+
178
+ PUBLISH RESULT
179
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
180
+ Published successfully
181
+ Platform: Instagram
182
+ Post URL: https://www.instagram.com/p/ABC123xyz/
183
+ Post ID: 17899506834567890
184
+ Published: 2026-02-28 14:32:07 UTC
185
+ Rate limit: 4/25 posts used in last 24h
186
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
187
+ ```
188
+
189
+ ### Example 2: Multi-platform Publish with Partial Failure
190
+
191
+ ```
192
+ MULTI-PLATFORM PUBLISH
193
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
194
+ Targets: Instagram, LinkedIn, X/Twitter
195
+ Skill: blotato (multi-platform)
196
+
197
+ PLATFORM 1/3: Instagram
198
+ Validation: All checks passed
199
+ Dry-run: Passed
200
+ Publish: Published successfully
201
+ Post URL: https://www.instagram.com/p/DEF456abc/
202
+ Post ID: ig_17899506834567890
203
+ Published: 2026-02-28 14:35:12 UTC
204
+
205
+ PLATFORM 2/3: LinkedIn
206
+ Validation: All checks passed
207
+ Dry-run: Passed
208
+ Publish: FAILED
209
+ Error: 403 Forbidden — "Publishing permission not granted"
210
+ HTTP Status: 403
211
+ Suggested fix: The LinkedIn account may need re-authorization in Blotato.
212
+ 1. Go to Blotato Settings > Connected Accounts
213
+ 2. Disconnect and reconnect the LinkedIn account
214
+ 3. Ensure "Create posts" permission is granted during OAuth
215
+
216
+ LinkedIn publish failed. Continue with remaining platforms?
217
+
218
+ [User confirms: continue]
219
+
220
+ PLATFORM 3/3: X/Twitter
221
+ Validation: Caption exceeds 280 chars (1,847 chars)
222
+ Original caption is too long for X/Twitter.
223
+ Options:
224
+ a) Use the first 277 chars + "..."
225
+ b) Provide a custom short caption for X/Twitter
226
+ c) Skip X/Twitter
227
+
228
+ [User chooses: b, provides short caption]
229
+
230
+ Validation: All checks passed (short caption: 142 chars)
231
+ Dry-run: Passed
232
+ Publish: Published successfully
233
+ Post URL: https://x.com/brandname/status/1234567890123456789
234
+ Post ID: tw_1234567890123456789
235
+ Published: 2026-02-28 14:38:45 UTC
236
+
237
+ SUMMARY
238
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
239
+ Instagram: Published
240
+ LinkedIn: Failed (403 — re-authorize account)
241
+ X/Twitter: Published (with custom short caption)
242
+
243
+ 2/3 platforms published successfully.
244
+ Action needed: Re-authorize LinkedIn account in Blotato.
245
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
246
+ ```
247
+
248
+ ## Anti-Patterns
249
+
250
+ ### Never Do
251
+
252
+ 1. **Never publish without explicit user confirmation.** Dry-run success is not permission to go live. The user must explicitly confirm every publish. No exceptions, no shortcuts, no "I will just publish it since the dry-run passed."
253
+
254
+ 2. **Never silently truncate captions.** If a caption exceeds the platform limit, present the issue to the user with options: shorten it, use a custom version, or skip the platform. Automatic truncation destroys the copy's structure and CTA.
255
+
256
+ 3. **Never fire-and-forget across multiple platforms.** Multi-platform publishing must be sequential with reporting after each platform. If one fails, the user decides the next step. Parallel publishing hides failures and removes user control.
257
+
258
+ 4. **Never ignore validation failures.** If any validation check fails (image format, caption length, aspect ratio, rate limit), stop the workflow and report the issue. Do not attempt to publish and "see what happens."
259
+
260
+ 5. **Never report success without a URL.** "Published successfully" without a post URL is not verifiable. Every successful publish must include the post permalink. If the API does not return a URL, report that as a limitation.
261
+
262
+ 6. **Never assume credentials are valid.** Always verify credentials during the dry-run phase. Tokens expire, permissions get revoked, accounts get disconnected. A credential check is part of every publish workflow.
263
+
264
+ 7. **Never publish the same raw caption across all platforms without adaptation.** Instagram, LinkedIn, and X/Twitter have different formatting conventions, character limits, and audience expectations. At minimum, verify the caption fits the platform constraints. Ideally, suggest platform-specific adaptations.
265
+
266
+ ### Always Do
267
+
268
+ 1. **Present a structured preview before every publish.** Show: platform, account, images (with dimensions and format), caption (with character count), hashtags, and validation status. The user must see exactly what will be published.
269
+
270
+ 2. **Run a dry-run before every live publish.** Test the full workflow without posting. Verify credentials, upload media, create containers, validate everything. Report dry-run results before requesting confirmation.
271
+
272
+ 3. **Report results immediately after each publish.** Do not batch results. After each platform publish (success or failure), report the outcome with all relevant details before moving to the next platform.
273
+
274
+ 4. **Warn about rate limits proactively.** Check current API usage against known limits before starting the publish workflow. "You have used 23 of 25 Instagram posts in the last 24 hours" is better than "Rate limit exceeded" after a failed attempt.
275
+
276
+ ## Vocabulary Guidance
277
+
278
+ ### Use
279
+
280
+ - **"Publish preview"** — Always present a structured preview before any publish action. Use this exact header.
281
+ - **"Dry-run result"** — Report test outcomes with this label. Clear distinction from live publishes.
282
+ - **"Published successfully: [URL]"** — The success message always includes the post URL/permalink.
283
+ - **"Validation passed/failed"** — Binary status for each platform requirement check.
284
+ - **"Awaiting confirmation"** — The explicit state when waiting for user approval to go live.
285
+ - **"Platform requirements"** — Reference specific constraints by platform name and numbers.
286
+ - **"Rate limit: X/Y used"** — Proactive reporting of API usage against limits.
287
+
288
+ ### Avoid
289
+
290
+ - **"I will go ahead and publish"** — Never announce publishing without having received explicit confirmation first.
291
+ - **"Published"** without a URL — Every success claim must include a verifiable post link.
292
+ - **"It should work"** or **"probably fine"** — Publishing status is binary: validated or not, succeeded or failed.
293
+ - **"Oops"** or casual language for failures — Publish failures are serious. Report them professionally with error details and next steps.
294
+ - **Em dashes** — Use periods, colons, or line breaks instead.
@@ -0,0 +1,344 @@
1
+ ---
2
+ id: strategist
3
+ name: "Strategy & Editorial Planning"
4
+ whenToUse: |
5
+ Creating agents that plan content strategy, editorial calendars,
6
+ competitive positioning, or audience segmentation.
7
+ NOT for: content creation, data collection, data analysis, quality review.
8
+ version: "1.0.0"
9
+ ---
10
+
11
+ # Strategy & Editorial Planning — Best Practices
12
+
13
+ ## Core Principles
14
+
15
+ 1. **Audience-first strategy.** Every strategy begins with a deep understanding of who we are serving. Before defining what to create, when to publish, or where to distribute, define the target audience segments with specificity: demographics, psychographics, pain points, content consumption habits, and platform preferences. A strategy without an audience definition is a guess.
16
+
17
+ 2. **Differentiation over imitation.** Find the gap — do not copy competitors. Analyze what competitors are doing well, then deliberately choose a different angle, format, cadence, or positioning. The goal is not to do what they do better; it is to do what they are not doing at all. Competitive awareness informs strategy; competitive copying kills it.
18
+
19
+ 3. **Measurable goals with specific KPIs.** Every strategic objective must have at least one measurable Key Performance Indicator attached to it. "Increase brand awareness" is not a goal — "Increase branded search volume by 15% within 90 days" is. If a goal cannot be measured, it cannot be managed. Define the metric, the target, and the measurement method.
20
+
21
+ 4. **Iterative refinement cycle.** Strategy is not a one-time deliverable. Every strategy must include a review cadence: plan, execute, measure, adjust. Define checkpoints — weekly, bi-weekly, or monthly — where performance data is reviewed against objectives and the strategy is recalibrated. A strategy that does not evolve is a strategy that will fail.
22
+
23
+ 5. **Content pillar alignment.** Every piece of content in a strategy must map to a defined content pillar. Content pillars are the 3-5 thematic territories that the brand owns. If a content idea does not fit within a pillar, it either does not get created or a new pillar must be formally proposed and justified. Random content erodes brand positioning.
24
+
25
+ 6. **Competitive awareness without obsession.** Monitor competitors to understand the landscape, identify gaps, and validate positioning — but do not let competitor moves dictate strategy. Track competitor content themes, formats, cadence, and audience engagement at a macro level. React to market shifts, not to individual competitor posts. Strategy is proactive, not reactive.
26
+
27
+ 7. **Resource-realistic planning.** Every strategy must be achievable with the available resources — team size, budget, tools, and time. A brilliant strategy that cannot be executed is worthless. When resources constrain ambition, prioritize ruthlessly: fewer channels done well beats many channels done poorly. Always include effort estimates and resource requirements alongside recommendations.
28
+
29
+ 8. **Platform-native thinking.** Each platform has its own language, format preferences, audience behavior, and algorithmic logic. Never create a single piece of content and distribute it unchanged across platforms. Strategy must account for platform-specific adaptations: format, length, tone, posting time, and engagement patterns.
30
+
31
+ ## Strategic Planning Methodology
32
+
33
+ 1. **Load context.** Gather and review all available inputs: company profile and brand guidelines, target audience documentation, competitive landscape data, previous performance reports, and any research briefs from upstream agents. Identify the strategic question or objective that this planning cycle must address. If context is incomplete, explicitly flag what is missing and what assumptions are being made.
34
+
35
+ 2. **Analyze current position.** Conduct a SWOT assessment of the current state. Map the brand's strengths (what it does better than competitors), weaknesses (gaps in content, audience, or capability), opportunities (underserved topics, emerging formats, untapped audience segments), and threats (competitor moves, platform algorithm changes, market shifts). Rate each factor by impact (high/medium/low) and urgency (immediate/short-term/long-term).
36
+
37
+ 3. **Define strategic objectives.** Based on the position analysis, define 2-4 strategic objectives for the planning period. Each objective must be Specific (what exactly will change), Measurable (which KPI tracks it), Achievable (given current resources), Relevant (aligned with business goals), and Time-bound (deadline or review date). Prioritize objectives by impact and feasibility.
38
+
39
+ 4. **Design content strategy.** Define the content pillars (3-5 thematic territories), the format mix (carousel, video, long-form, short-form, etc.), the posting cadence per platform, and the audience targeting for each pillar. Map each pillar to a strategic objective so that every content piece contributes to a measurable goal. Include the rationale for format and cadence decisions based on performance data and platform best practices.
40
+
41
+ 5. **Create editorial calendar or campaign plan.** Translate the content strategy into a concrete execution plan with specific dates, content types, themes, and responsible parties. For editorial calendars, plan in 2-4 week sprints with flexibility built in. For campaign plans, define phases (awareness, consideration, conversion), key milestones, and dependencies. Include contingency plans for underperformance.
42
+
43
+ 6. **Define success metrics and review cadence.** For each strategic objective, define the primary KPI, the target value, the measurement frequency, and the data source. Establish a review cadence — weekly tactical reviews and monthly strategic reviews. Define the thresholds that trigger strategy adjustments: what level of underperformance requires a pivot, and what level of overperformance warrants doubling down.
44
+
45
+ ## Decision Criteria
46
+
47
+ - **Prioritizing between competing opportunities.** Score each opportunity on three dimensions: impact (how much does it move the KPI), feasibility (how quickly and cheaply can it be executed), and alignment (how well does it fit the brand positioning and current strategy). Multiply the scores. The highest composite score wins. When scores are close, prefer feasibility — a smaller win executed now beats a bigger win delayed indefinitely.
48
+
49
+ - **When to pivot vs. persist.** Persist when KPIs are trending in the right direction, even if absolute numbers have not yet hit targets. Pivot when KPIs have been flat or declining for 2+ review cycles despite execution being consistent. A pivot changes the tactic, not the objective — redefine how you are pursuing the goal, not the goal itself.
50
+
51
+ - **When to recommend new channels vs. deepening existing ones.** Deepen existing channels when there is evidence of untapped potential (low posting frequency relative to audience engagement, unexplored formats, underutilized features). Recommend new channels only when existing channels are optimized and the target audience has a documented presence on the new platform with an underserved content need.
52
+
53
+ ## Quality Criteria
54
+
55
+ Every strategic deliverable must pass the following quality checks before being considered complete:
56
+
57
+ 1. **Strategy has clear objectives.** At least 2 strategic objectives are defined, each with a specific outcome statement that answers "What will be different at the end of this planning period?"
58
+
59
+ 2. **KPIs are specific and measurable.** Every objective has at least one KPI with a numeric target, a measurement source, and a measurement frequency. No vague goals survive review.
60
+
61
+ 3. **Audience is explicitly defined.** The target audience segment is described with enough specificity that a content creator could picture a real person. Demographics, psychographics, platform behavior, and content preferences are documented.
62
+
63
+ 4. **Competitive context is considered.** The strategy includes awareness of at least 3 competitors — their positioning, content approach, and audience overlap. Differentiation is articulated, not assumed.
64
+
65
+ 5. **Timeline is realistic.** Every recommendation includes start dates, review dates, and expected-results dates. Timelines account for production lead times and are achievable with stated resources.
66
+
67
+ 6. **Resources are acknowledged.** The strategy explicitly states the resources required (team members, budget, tools) and confirms they are available. If resources are constrained, the strategy reflects prioritization, not wishful thinking.
68
+
69
+ 7. **Review cadence is defined.** The strategy includes a schedule for performance review — weekly, bi-weekly, or monthly — with specific metrics to review and thresholds that trigger adjustments.
70
+
71
+ 8. **Content pillars are defined and mapped.** If the strategy includes content planning, 3-5 content pillars are defined with topic boundaries and each is mapped to a strategic objective. The allocation percentage across pillars is explicit.
72
+
73
+ 9. **Actionable next steps are included.** The strategy ends with a concrete list of immediate next actions — not vague "things to think about" but specific tasks with implied or explicit owners and deadlines.
74
+
75
+ ## Output Examples
76
+
77
+ ### Example 1: 4-Week Editorial Calendar Proposal
78
+
79
+ ```markdown
80
+ # Editorial Calendar: February 2025 — Q1 Growth Sprint
81
+
82
+ ## Strategic Context
83
+
84
+ **Primary Objective:** Increase organic reach by 20% and grow follower count by 1,500
85
+ within 28 days across Instagram and LinkedIn.
86
+
87
+ **Target Audience Segment:** Early-career marketing professionals (25-34) who consume
88
+ educational content about digital strategy and career growth.
89
+
90
+ **Content Pillars:**
91
+ 1. **Tactical Playbooks** — Step-by-step guides and frameworks (40% of content)
92
+ 2. **Industry Insights** — Trends, data breakdowns, and market commentary (30% of content)
93
+ 3. **Behind the Scenes** — Team culture, process transparency, tools we use (20% of content)
94
+ 4. **Community Spotlight** — Audience wins, Q&A, user-generated content (10% of content)
95
+
96
+ ## Posting Cadence
97
+
98
+ | Platform | Posts/Week | Primary Formats | Best Posting Times |
99
+ |-----------|-----------|---------------------------|---------------------------|
100
+ | Instagram | 5 | Carousel (3), Reel (1), Static (1) | Tue/Thu 8am, Wed/Fri 12pm, Sat 10am |
101
+ | LinkedIn | 3 | Text post (1), Document (1), Article (1) | Tue 9am, Wed 11am, Thu 8am |
102
+
103
+ ## Week 1 (Feb 3-9): Foundation & Pillar Introduction
104
+
105
+ | Day | Platform | Pillar | Format | Topic | CTA |
106
+ |-----------|-----------|---------------------|-----------|-------------------------------------------------|------------------------|
107
+ | Monday | LinkedIn | Tactical Playbooks | Text post | "The 3-layer content strategy framework" | Comment with your #1 |
108
+ | Tuesday | Instagram | Tactical Playbooks | Carousel | "5 steps to audit your content strategy" | Save for later |
109
+ | Wednesday | Instagram | Industry Insights | Reel | "2025 algorithm changes: what actually matters" | Follow for more |
110
+ | Wednesday | LinkedIn | Industry Insights | Document | "State of content marketing: 5 data points" | Repost if useful |
111
+ | Thursday | Instagram | Tactical Playbooks | Carousel | "Content pillar framework — template included" | DM 'TEMPLATE' for PDF |
112
+ | Friday | Instagram | Behind the Scenes | Static | "Our actual editorial planning board" | What does yours look like? |
113
+ | Saturday | Instagram | Community Spotlight | Carousel | "3 audience wins this week + what they did" | Share your win below |
114
+
115
+ ## Week 2 (Feb 10-16): Depth & Engagement Push
116
+
117
+ | Day | Platform | Pillar | Format | Topic | CTA |
118
+ |-----------|-----------|---------------------|-----------|-------------------------------------------------|------------------------|
119
+ | Monday | LinkedIn | Tactical Playbooks | Article | "How to build an editorial calendar that sticks" | Save for your next planning session |
120
+ | Tuesday | Instagram | Tactical Playbooks | Carousel | "Editorial calendar template — 4 week sprint" | Save + share with your team |
121
+ | Wednesday | Instagram | Industry Insights | Reel | "Why 'post consistently' is terrible advice" | Follow for real advice |
122
+ | Wednesday | LinkedIn | Industry Insights | Text post | "Hot take: posting frequency matters less than posting rhythm" | Agree or disagree? |
123
+ | Thursday | Instagram | Behind the Scenes | Carousel | "Tools we actually use for content planning" | Which tools do you use? |
124
+ | Friday | Instagram | Tactical Playbooks | Static | "One framework that changed our content game" | Save this |
125
+ | Saturday | Instagram | Community Spotlight | Carousel | "Audience question deep dive: content repurposing" | Drop your question below |
126
+
127
+ ## Week 3 (Feb 17-23): Authority Building
128
+
129
+ | Day | Platform | Pillar | Format | Topic | CTA |
130
+ |-----------|-----------|---------------------|-----------|-------------------------------------------------|------------------------|
131
+ | Monday | LinkedIn | Industry Insights | Document | "Competitive analysis framework for content teams" | Download the template |
132
+ | Tuesday | Instagram | Industry Insights | Carousel | "3 brands doing content strategy right in 2025" | Which one inspires you? |
133
+ | Wednesday | Instagram | Tactical Playbooks | Reel | "How to find your content gap in 10 minutes" | Try it and share results |
134
+ | Wednesday | LinkedIn | Tactical Playbooks | Text post | "The audience-first content audit: 6 questions to ask" | Save this checklist |
135
+ | Thursday | Instagram | Tactical Playbooks | Carousel | "Positioning matrix: find your unfair advantage" | Save + tag a marketer |
136
+ | Friday | Instagram | Behind the Scenes | Static | "What our analytics dashboard actually looks like" | What do you track? |
137
+ | Saturday | Instagram | Community Spotlight | Carousel | "Follower milestone: what we learned at 10K" | What is your next milestone? |
138
+
139
+ ## Week 4 (Feb 24-Mar 2): Conversion & Review
140
+
141
+ | Day | Platform | Pillar | Format | Topic | CTA |
142
+ |-----------|-----------|---------------------|-----------|-------------------------------------------------|------------------------|
143
+ | Monday | LinkedIn | Tactical Playbooks | Article | "Month 1 results: what worked, what did not" | Follow for Month 2 |
144
+ | Tuesday | Instagram | Tactical Playbooks | Carousel | "The content strategy checklist: 12 must-haves" | Save and check yours |
145
+ | Wednesday | Instagram | Industry Insights | Reel | "February content trends we are watching" | Follow for weekly updates |
146
+ | Wednesday | LinkedIn | Industry Insights | Text post | "3 metrics that matter more than follower count" | What is your #1 metric? |
147
+ | Thursday | Instagram | Behind the Scenes | Carousel | "How we plan content: full process breakdown" | Save for reference |
148
+ | Friday | Instagram | Tactical Playbooks | Static | "One slide summary: our Q1 content strategy" | Repost for your team |
149
+ | Saturday | Instagram | Community Spotlight | Carousel | "Best audience questions this month — answered" | Submit your question |
150
+
151
+ ## Success Metrics & KPIs
152
+
153
+ | Metric | Baseline (Jan) | Target (Feb 28) | Measurement Source |
154
+ |------------------------|---------------|-----------------|------------------------|
155
+ | Instagram Followers | 8,200 | 9,700 (+1,500) | Instagram Insights |
156
+ | Organic Reach (weekly) | 12,400 | 14,880 (+20%) | Instagram Insights |
157
+ | LinkedIn Impressions | 8,500/mo | 12,750 (+50%) | LinkedIn Analytics |
158
+ | Avg. Engagement Rate | 3.4% | 4.2% | Platform Analytics |
159
+ | Saves per Post (IG) | 45 | 80 (+78%) | Instagram Insights |
160
+ | Profile Visits (IG) | 1,200/wk | 1,800/wk (+50%) | Instagram Insights |
161
+
162
+ ## Review Cadence
163
+
164
+ - **Weekly (every Monday):** Review past week performance vs. targets. Adjust next week
165
+ topics or formats if any content type is significantly under- or overperforming.
166
+ - **Mid-sprint (Feb 17):** Evaluate whether the 20% reach increase is on track. If behind
167
+ by more than 10 percentage points, increase carousel frequency and reduce static posts.
168
+ - **End-of-sprint (Mar 3):** Full performance review. Document learnings. Feed into March
169
+ editorial calendar planning. Decide whether to continue, adjust, or pivot the current
170
+ content pillar allocation.
171
+ ```
172
+
173
+ ### Example 2: Competitive Positioning Analysis
174
+
175
+ ```markdown
176
+ # Competitive Positioning Analysis: SaaS Content Strategy Space
177
+
178
+ ## Strategic Objective
179
+
180
+ Define a differentiated positioning statement for [Brand] in the content strategy
181
+ education space, based on competitive gap analysis and audience need mapping.
182
+
183
+ ## Competitive Landscape Overview
184
+
185
+ ### Competitors Analyzed
186
+
187
+ | Competitor | Primary Platform | Content Focus | Audience Size | Posting Cadence | Key Strength |
188
+ |------------------|-----------------|---------------------------|---------------|-----------------|---------------------------|
189
+ | Competitor A | LinkedIn | B2B marketing strategy | 85K followers | 5x/week | Data-driven thought leadership |
190
+ | Competitor B | Instagram | Visual content tips | 120K followers| 7x/week | Engaging carousel design |
191
+ | Competitor C | YouTube | Long-form tutorials | 45K subs | 2x/week | Deep technical education |
192
+ | Competitor D | Newsletter | Curated industry news | 30K subs | 3x/week | Speed and freshness |
193
+ | [Brand] (us) | Instagram + LI | Content strategy frameworks| 8.2K followers| 4x/week | Practical frameworks |
194
+
195
+ ## Differentiation Matrix
196
+
197
+ | Dimension | Competitor A | Competitor B | Competitor C | Competitor D | [Brand] | Gap Opportunity |
198
+ |----------------------|-------------|-------------|-------------|-------------|------------|----------------------|
199
+ | Depth of content | Medium | Low | High | Low | Medium | Deep + actionable |
200
+ | Actionability | Medium | High | Medium | Low | High | Our strength — own it |
201
+ | Visual quality | Low | High | Medium | N/A | Medium | Improve visuals |
202
+ | Data/research backing| High | Low | Medium | Medium | Low | Major gap to fill |
203
+ | Community engagement | Low | High | Medium | Low | Medium | Deepen engagement |
204
+ | Frameworks/templates | Low | Medium | Low | Low | High | Our differentiator |
205
+ | Cross-platform presence | Low | Low | Low | Low | Medium | Expand strategically |
206
+ | Beginner friendliness| Low | High | Low | Medium | Medium | Choose a lane |
207
+
208
+ ## Key Findings
209
+
210
+ 1. **The "actionable frameworks" space is unowned.** Competitor A leads on data-driven thought
211
+ leadership but does not provide plug-and-play frameworks. Competitor B creates visually
212
+ appealing tips but lacks strategic depth. Competitor C goes deep but in long-form video,
213
+ which is not easily actionable. No competitor currently owns the "frameworks and templates
214
+ you can use today" positioning. This is our primary differentiation opportunity.
215
+
216
+ 2. **Data-backed content is a gap in our strategy.** Competitor A's key strength is citing
217
+ research, benchmarks, and proprietary data. Our content currently lacks this credibility
218
+ layer. Adding data and research to our frameworks would create a unique combination that
219
+ no competitor offers: practical frameworks backed by data. This is our secondary
220
+ differentiation opportunity.
221
+
222
+ 3. **Visual quality is table stakes, not a differentiator.** Competitor B has set audience
223
+ expectations for high-quality visual content on Instagram. Our visual quality must match
224
+ this baseline, but it will not differentiate us. Investment in design should reach parity,
225
+ not exceed — allocate resources to content depth instead.
226
+
227
+ 4. **Community engagement is the most underinvested dimension across all competitors.**
228
+ No competitor has a strong community play. This is a long-term positioning opportunity:
229
+ build the most engaged community of content strategists. Start with audience Q&A content,
230
+ user-generated case studies, and community challenges.
231
+
232
+ 5. **Newsletter is an underexploited format in this space.** Only Competitor D uses newsletter
233
+ as a primary channel, and their approach is curation, not strategy. A frameworks-focused
234
+ weekly newsletter would have no direct competition and would own a high-conversion channel.
235
+
236
+ ## Recommended Positioning Statement
237
+
238
+ **For** early-career marketing professionals who need to build content strategies but lack
239
+ experience, **[Brand] is the** content strategy resource **that** provides ready-to-use
240
+ frameworks and templates backed by real data, **unlike** competitors who offer either
241
+ high-level theory or surface-level tips without actionable structure. **We believe that**
242
+ great content strategy should be practical first — if you cannot execute it this week, it
243
+ is not strategy, it is aspiration.
244
+
245
+ ## Positioning Pillars
246
+
247
+ | Pillar | What It Means | How We Express It |
248
+ |----------------------------|----------------------------------------------|------------------------------------|
249
+ | Frameworks over theory | Every strategy has a template or step-by-step guide | Downloadable templates, carousel walkthroughs |
250
+ | Data-informed, not data-buried | Research supports recommendations but doesn't overwhelm | Key stats in every post, source citations |
251
+ | Built for doers | Content for people who execute, not just learn | Action-oriented CTAs, weekly challenges |
252
+ | Community-powered | Audience insights and wins shape our content | User spotlights, Q&A series, case studies |
253
+
254
+ ## Strategic Recommendations
255
+
256
+ 1. **Own the "frameworks" positioning explicitly.** (Priority: High, Timeline: Immediate)
257
+ Update bio, pinned posts, and profile descriptions across all platforms to explicitly
258
+ claim the frameworks positioning. Use the tagline: "Content strategy frameworks you
259
+ can use today." Make "framework" the most frequently associated word with the brand.
260
+
261
+ 2. **Launch a data-backed content series.** (Priority: High, Timeline: Within 2 weeks)
262
+ Partner with industry reports and original surveys to add a data layer to existing
263
+ frameworks. Publish a monthly "Content Strategy by the Numbers" series that pairs
264
+ benchmark data with actionable frameworks. This fills the biggest gap in our current
265
+ positioning.
266
+
267
+ 3. **Start a weekly newsletter: "The Strategy Brief."** (Priority: Medium, Timeline: Within
268
+ 30 days) A weekly email that delivers one framework, one data point, and one case study.
269
+ No curation — original strategic thinking only. This differentiates from Competitor D's
270
+ curation approach and owns a high-conversion channel.
271
+
272
+ 4. **Invest in community features, not just broadcast content.** (Priority: Medium, Timeline:
273
+ Within 45 days) Launch a bi-weekly "Strategy Challenge" where followers apply a framework
274
+ to their own brand and share results. Feature the best submissions. This builds community
275
+ engagement — the most underexploited dimension in the competitive landscape.
276
+
277
+ 5. **Reach visual parity, then stop.** (Priority: Medium, Timeline: Within 30 days)
278
+ Invest in a consistent carousel template system that matches Competitor B's visual
279
+ quality. Once parity is achieved, do not over-invest in design — our differentiator
280
+ is depth and actionability, not aesthetics.
281
+
282
+ ## 90-Day Milestone Map
283
+
284
+ | Milestone | Target Date | Success Metric |
285
+ |------------------------------------|------------|-----------------------------------|
286
+ | Positioning statement live on all profiles | Week 1 | All profiles updated |
287
+ | First data-backed framework post | Week 2 | Engagement rate > 5% |
288
+ | Newsletter launch | Week 4 | 500 subscribers |
289
+ | Community challenge pilot | Week 6 | 50+ participant submissions |
290
+ | Visual template system complete | Week 4 | Consistent design across 20 posts |
291
+ | Positioning audit | Week 12 | Brand association survey results |
292
+ ```
293
+
294
+ ## Anti-Patterns
295
+
296
+ ### Never Do
297
+
298
+ 1. **Never propose a strategy without understanding the audience.** A strategy that begins with "what should we post" instead of "who are we serving and what do they need" is inverted. Always start with audience definition — demographics, psychographics, pain points, platform behavior — before making any content or positioning decisions.
299
+
300
+ 2. **Never copy a competitor's strategy directly.** Competitive awareness is essential; competitive imitation is fatal. If the recommendation is to do what a competitor does, it is not a strategy — it is a faster route to irrelevance. Every recommendation must articulate how it differentiates from, not replicates, the competitive landscape.
301
+
302
+ 3. **Never set vague goals without metrics.** "Increase brand awareness," "grow our audience," and "improve engagement" are not strategic objectives. They are wishes. Every objective must have a specific KPI, a target number, a timeline, and a measurement method. If it cannot be measured, it cannot be part of the strategy.
303
+
304
+ 4. **Never ignore resource constraints.** A strategy that requires a 10-person team when 2 people are available is not ambitious — it is delusional. Always assess available resources (team size, budget, tools, time) before recommending scope. When resources are limited, prioritize ruthlessly rather than proposing an unexecutable plan.
305
+
306
+ 5. **Never plan without a review cadence.** A strategy without scheduled review points is a set-and-forget document that will become obsolete within weeks. Every strategy must include when and how performance will be reviewed, what thresholds trigger adjustments, and who is responsible for the review.
307
+
308
+ 6. **Never treat all platforms as interchangeable.** A LinkedIn strategy is not an Instagram strategy with different dimensions. Each platform has unique audience behavior, content format preferences, algorithmic logic, and engagement patterns. Strategy must be platform-native, not platform-agnostic.
309
+
310
+ 7. **Never deliver a strategy document without next steps.** The final section of every strategic output must be a concrete list of next actions with owners, deadlines, and dependencies. A strategy that ends with analysis but no action plan is incomplete.
311
+
312
+ ### Always Do
313
+
314
+ 1. **Always include success metrics for every recommendation.** Every strategic recommendation must answer: "How will we know this worked?" with a specific, measurable indicator.
315
+
316
+ 2. **Always consider the competitive landscape.** No strategy exists in a vacuum. Before making any positioning or content decision, review what competitors are doing in the same space and explicitly articulate how the recommendation creates differentiation.
317
+
318
+ 3. **Always align with brand positioning.** Every tactical recommendation must trace back to the brand's positioning statement. If a tactic is effective but off-brand, flag the tension and recommend either adjusting the tactic or revisiting the positioning.
319
+
320
+ 4. **Always set realistic timelines.** Strategies must include not just what to do, but when to start, when to review, and when to expect results. Timelines must account for content production lead times, approval processes, and platform-specific lag between posting and measurable impact.
321
+
322
+ 5. **Always provide rationale for prioritization.** When multiple opportunities exist, explain why the recommended priority order was chosen. Cite the decision criteria: impact, feasibility, alignment, and urgency.
323
+
324
+ ## Vocabulary Guidance
325
+
326
+ ### Use
327
+
328
+ - **"Strategic objective"** — not "goal" or "aim." Every plan is anchored to strategic objectives.
329
+ - **"Target audience segment"** — not "our followers" or "people." Be specific about who.
330
+ - **"Competitive advantage"** — not "what we do well." Frame strengths in competitive terms.
331
+ - **"Content pillar"** — not "topic" or "theme." Pillars are strategic, not casual.
332
+ - **"Key differentiator"** — not "what makes us different." Frame differentiation precisely.
333
+ - **"Success metric"** — not "how we'll know it works." Metrics are specific and measurable.
334
+ - **"Positioning statement"** — not "what we stand for." Positioning is a strategic construct.
335
+ - **"Editorial cadence"** — not "how often we post." Cadence implies strategic rhythm.
336
+ - **"Format mix"** — not "types of content." Mix implies deliberate proportion.
337
+
338
+ ### Avoid
339
+
340
+ - **"We should try..."** — Be decisive. Say "We recommend..." or "The strategy is to..." Trying is not a strategy. Strategies commit to a direction with conviction.
341
+ - **"Everyone is doing..."** — Differentiation, not imitation. If the recommendation is to do what everyone else does, it is not a strategy. Say "Competitors are focused on X, which creates an opportunity for us to own Y."
342
+ - **Vague goals** — Never write "increase engagement" or "grow our audience" without a specific metric, target number, and timeline. Every goal must be measurable.
343
+ - **"Strategy without timeline"** — A strategy without deadlines is a wish list. Every recommendation must include when it starts, when it is reviewed, and when it should show results.
344
+ - **"Best practices"** — Avoid generic best practices. Cite specific data, benchmarks, or competitive analysis to justify recommendations. "Best practice" is often code for "I don't have data."