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,684 @@
1
+ # Sherlock — Shared Core
2
+
3
+ This file contains the shared logic for all Sherlock investigations. It must be loaded before any platform-specific extractor file.
4
+
5
+ ## Purpose
6
+
7
+ When a user provides reference profile URLs during squad discovery ("follow the style of @username"), the Architect dispatches one Sherlock subagent per profile URL. Each subagent navigates to the profile using browser automation, extracts real content (captions, text, slide content, video transcriptions), and produces a structured analysis of patterns found.
8
+
9
+ The investigation output feeds directly into squad data files — making agents, frameworks, quality criteria, and voice guidance grounded in real high-performing content rather than generic best practices.
10
+
11
+ ## Session Management (ALWAYS inform the user)
12
+
13
+ At the START of every investigation, before any browser action, tell the user:
14
+
15
+ > "Your browser sessions are saved in `_conectese/_browser_profile/`. To clear a platform's session, just delete the JSON file (e.g., `instagram.json`). I'll ask before saving any new session."
16
+
17
+ This notice is mandatory for every investigation run, even if sessions already exist.
18
+
19
+ ---
20
+
21
+ ## How It Works
22
+
23
+ 1. The Architect receives reference URLs from the user during Phase 1 Discovery (question 5)
24
+ 2. For each URL, the Architect launches a Sherlock subagent in the background using the Task tool
25
+ 3. Each subagent runs independently — one profile per subagent
26
+ 4. Subagents produce two files each: `raw-content.md` and `pattern-analysis.md`
27
+ 5. After all subagents complete, the Architect (Design phase) consolidates findings into `consolidated-analysis.md`
28
+ 6. The consolidated analysis enriches all Phase 3 extraction artifacts
29
+
30
+ **Note:** `consolidated-analysis.md` is generated by the Architect during the Design phase, not by individual Sherlock subagents. Each subagent only produces `raw-content.md` and `pattern-analysis.md`.
31
+
32
+ ---
33
+
34
+ ## Browser Automation
35
+
36
+ Sherlock uses Playwright CLI for browser automation. Use `npx playwright` commands to:
37
+ - Navigate to URLs
38
+ - Read page content via snapshots
39
+ - Click elements
40
+ - Scroll for more content
41
+ - Save and restore sessions
42
+
43
+ ### Session Persistence
44
+
45
+ Browser sessions are stored as JSON files in `_conectese/_browser_profile/`:
46
+
47
+ - Instagram: `_conectese/_browser_profile/instagram.json`
48
+ - YouTube: `_conectese/_browser_profile/youtube.json`
49
+ - Twitter/X: `_conectese/_browser_profile/twitter.json`
50
+ - LinkedIn: `_conectese/_browser_profile/linkedin.json`
51
+
52
+ **Loading a session (Playwright CLI):**
53
+ ```bash
54
+ npx playwright open --load-storage=_conectese/_browser_profile/{platform}.json {url}
55
+ ```
56
+
57
+ **Saving a session (Playwright CLI):**
58
+ ```bash
59
+ npx playwright open --save-storage=_conectese/_browser_profile/{platform}.json {url}
60
+ ```
61
+
62
+ When using MCP browser tools or other automation APIs, use these JSON files as the source of truth for session state — load the stored cookies/localStorage at the start of each investigation and save after login when the user consents.
63
+
64
+ ### Screenshot Saving Rule
65
+
66
+ When saving a browser screenshot as a file, always specify the full path:
67
+
68
+ ```
69
+ squads/{squad-name}/_investigations/{username}/screenshots/{filename}.png
70
+ ```
71
+
72
+ Never save screenshots without a full output path — omitting the path saves the file to the repo root, polluting the project.
73
+
74
+ For content reading and navigation, prefer snapshots (live view, no file saved) over screenshots.
75
+
76
+ The `{squad-name}` value is always provided by the Architect in the Sherlock subagent prompt.
77
+
78
+ ---
79
+
80
+ ## Investigation Mode
81
+
82
+ The Architect always passes an `investigation_mode` parameter in the subagent prompt. Read this value and follow the corresponding behavior:
83
+
84
+ | Mode | Meaning | Behavior |
85
+ |------|---------|----------|
86
+ | `single_post` | User provided a direct post/reel/tv URL — just analyze that one post | Skip profile grid navigation. Go directly to the post URL. Extract that post only. |
87
+ | `profile_1` | Scan profile, get 1 post only | Navigate to profile grid. Collect the most recent 1 post. Stop after 1. |
88
+ | `profile_3` | Scan profile for patterns | Navigate to profile grid. Collect up to 3 posts. Stop at 3 even if more are available. |
89
+
90
+ **If no `investigation_mode` is specified:** default to `profile_3`.
91
+
92
+ This mode applies to Instagram only. YouTube, Twitter/X, and LinkedIn use their own quantity configuration.
93
+
94
+ ---
95
+
96
+ ## Prerequisites Check
97
+
98
+ Before running any Sherlock investigation, verify the required tools are available. Run each check as a Bash command.
99
+
100
+ ### Required for All Investigations
101
+
102
+ - **Browser automation**: The agent must have access to browser automation tools (Playwright CLI via `npx playwright`, MCP browser tools, or equivalent). These are required for every investigation.
103
+
104
+ ### Required Only for Video Content (Reels, YouTube, TikTok)
105
+
106
+ Video transcription requires three CLI tools. Check each one:
107
+
108
+ ```bash
109
+ yt-dlp --version
110
+ ```
111
+
112
+ If missing: `pip install yt-dlp` or `brew install yt-dlp`
113
+
114
+ ```bash
115
+ ffmpeg -version
116
+ ```
117
+
118
+ If missing: `brew install ffmpeg` or download from https://ffmpeg.org/download.html
119
+
120
+ ```bash
121
+ whisper --help
122
+ ```
123
+
124
+ If missing: `pip install openai-whisper`
125
+
126
+ ### When Prerequisites Are Not Met
127
+
128
+ - If browser automation is unavailable, Sherlock cannot run. Inform the user and fall back to Phase 2 web research only.
129
+ - If yt-dlp, ffmpeg, or whisper are missing, Sherlock can still run but will skip video transcription. Text-based content (carousels, tweets, LinkedIn posts, text posts) can still be extracted. Log a warning: "Video transcription tools not available — skipping Reel/video transcription. Text content will still be extracted."
130
+ - Always inform the user which tools are missing and provide installation commands.
131
+
132
+ ---
133
+
134
+ ## Browser Profile Setup
135
+
136
+ Sherlock uses persistent browser session files to preserve login sessions across investigations.
137
+
138
+ ### Session File Locations
139
+
140
+ Session files are stored in `_conectese/_browser_profile/` as JSON files (one per platform). This directory is gitignored and persists between runs.
141
+
142
+ ### First-Time Setup
143
+
144
+ On the first investigation for a given platform, Sherlock may encounter a login wall. When this happens:
145
+
146
+ 1. Navigate to the platform URL
147
+ 2. Take a snapshot to detect login prompts or walls
148
+ 3. If a login wall is detected, inform the user:
149
+ "I need you to log in to {platform} so I can access the content. I'll open the browser — log in, and come back here when you're done."
150
+
151
+ 4. **Step 1 — Open browser for login (NO session saving):**
152
+ ```bash
153
+ npx playwright open {platform-url}
154
+ ```
155
+ Use a **5-minute timeout** on this command. The user needs time to complete login + any verification (email, SMS, 2FA).
156
+
157
+ 5. Wait for the user to confirm login is complete in the terminal.
158
+
159
+ 6. **Step 2 — Save the session (quick — user is already logged in):**
160
+ Ask: "Want me to save this session for next time?"
161
+ If yes:
162
+ ```bash
163
+ npx playwright open --save-storage=_conectese/_browser_profile/{platform}.json {platform-url}
164
+ ```
165
+ This command completes quickly since the browser already has the authenticated cookies.
166
+
167
+ 7. If the user declines saving, inform them:
168
+ "No problem. Remember your cookies are still in `_conectese/_browser_profile/` — delete the folder to clear everything."
169
+
170
+ ### Subsequent Runs
171
+
172
+ After the first login, load the session file at the start of each investigation:
173
+ ```bash
174
+ npx playwright open --load-storage=_conectese/_browser_profile/{platform}.json {url}
175
+ ```
176
+
177
+ Still check for login walls on each run (platforms may expire sessions) and re-prompt the user if needed.
178
+
179
+ ### Session Revocation
180
+
181
+ Users can clear all saved browser sessions at any time by deleting the `_conectese/_browser_profile/` directory or individual JSON files. After deletion, the next investigation will require a fresh manual login.
182
+
183
+ ---
184
+
185
+ ## Failure Handling
186
+
187
+ **Never fabricate data. Never declare success over empty results.**
188
+
189
+ - If extraction fails for any reason, save an `error.md` file to `squads/{squad-name}/_investigations/{username}/error.md` explaining what failed and why.
190
+ - Never produce an investigation with neither `raw-content.md` nor `error.md` — one of the two must always be present.
191
+ - If extraction is partially successful, save what was collected to `raw-content.md` with a note about what was not extracted, and do not also create `error.md` unless the partial data is too thin to be useful.
192
+ - Maximum time per profile: 10 minutes. If extraction exceeds this, save what has been collected so far and note: "Investigation truncated at {N} contents due to time limit."
193
+ - If a platform blocks access or returns errors, retry once. If the retry fails, save `error.md` and inform the user.
194
+ - If the browser crashes or becomes unresponsive, save any collected data first, then report the failure.
195
+
196
+ ---
197
+
198
+ ## Output Formats
199
+
200
+ Sherlock produces two output files per investigation (per subagent). The Architect produces a third file during the Design phase.
201
+
202
+ ### Raw Content File: `raw-content.md`
203
+
204
+ One file per profile, saved to `squads/{squad-name}/_investigations/{username}/raw-content.md`.
205
+
206
+ ```markdown
207
+ # Raw Content: @{username} ({platform})
208
+
209
+ Investigated: {YYYY-MM-DD}
210
+ Total contents analyzed: {N}
211
+ Content types: {comma-separated list, e.g. "carousel, reel, single image"}
212
+
213
+ ---
214
+
215
+ ## Content 1: [Carousel: 8 slides | Educational]
216
+
217
+ **Date:** 2026-02-15
218
+ **Metrics:** 4,200 likes, 312 comments, 1,890 saves
219
+ **URL:** https://www.instagram.com/p/ABC123/
220
+
221
+ ### Caption
222
+ The full caption text goes here, exactly as it appears on the platform.
223
+ Including all line breaks, emojis, hashtags, and mentions.
224
+
225
+ No editing, no summarizing — raw text only.
226
+
227
+ ### Slide 1
228
+ The exact text content visible on slide 1. If the slide is purely visual
229
+ with no text overlay, note: "[Visual only — no text overlay]"
230
+
231
+ ### Slide 2
232
+ Text content of slide 2.
233
+
234
+ ### Slide 3
235
+ Text content of slide 3.
236
+
237
+ (Continue for all slides in the carousel.)
238
+
239
+ ---
240
+
241
+ ## Content 2: [Reel: 45 seconds | Storytelling]
242
+
243
+ **Date:** 2026-02-12
244
+ **Metrics:** 89,000 views, 3,100 likes, 478 comments
245
+ **URL:** https://www.instagram.com/reel/DEF456/
246
+
247
+ ### Caption
248
+ Full caption text as it appears on the platform.
249
+
250
+ ### Transcription
251
+ The complete spoken-word transcription of the Reel audio.
252
+ Every word, including filler words, pauses noted as [pause],
253
+ and any on-screen text that differs from the spoken content
254
+ noted in brackets: [on-screen: "different text here"].
255
+
256
+ If transcription was unavailable: "Transcription unavailable — audio
257
+ extraction failed. Caption only."
258
+
259
+ ---
260
+
261
+ ## Content 3: [Single Image | Motivational]
262
+
263
+ **Date:** 2026-02-10
264
+ **Metrics:** 2,800 likes, 145 comments
265
+ **URL:** https://www.instagram.com/p/GHI789/
266
+
267
+ ### Caption
268
+ Full caption text.
269
+
270
+ ---
271
+
272
+ ## Content 4: [Tweet: standalone | Opinion]
273
+
274
+ **Date:** 2026-02-18
275
+ **Metrics:** 1,200 likes, 340 retweets, 89 replies, 45,000 views
276
+ **URL:** https://x.com/username/status/123456789
277
+
278
+ ### Text
279
+ The full tweet text, exactly as posted.
280
+
281
+ ---
282
+
283
+ ## Content 5: [Thread: 7 tweets | Framework]
284
+
285
+ **Date:** 2026-02-14
286
+ **Metrics:** 3,400 likes (thread total), 890 retweets, 234 replies
287
+ **URL:** https://x.com/username/status/987654321
288
+
289
+ ### Tweet 1/7
290
+ First tweet in the thread.
291
+
292
+ ### Tweet 2/7
293
+ Second tweet in the thread.
294
+
295
+ ### Tweet 3/7
296
+ Third tweet in the thread.
297
+
298
+ (Continue for all tweets in the thread.)
299
+
300
+ ---
301
+
302
+ ## Content 6: [LinkedIn Post | Thought Leadership]
303
+
304
+ **Date:** 2026-02-16
305
+ **Metrics:** 890 reactions, 67 comments, 34 reposts
306
+ **URL:** https://www.linkedin.com/posts/username_activity-123456789
307
+
308
+ ### Text
309
+ The full post text after expanding "see more."
310
+ Including all formatting, line breaks, and emojis as they appear.
311
+
312
+ ---
313
+
314
+ ## Content 7: [LinkedIn Article | Industry Analysis]
315
+
316
+ **Date:** 2026-02-08
317
+ **Metrics:** 1,200 reactions, 89 comments
318
+ **URL:** https://www.linkedin.com/pulse/article-title-username
319
+
320
+ ### Title
321
+ The article title.
322
+
323
+ ### Text
324
+ The full article text. Include all paragraphs, headers, and sub-sections
325
+ exactly as they appear in the article.
326
+
327
+ ---
328
+
329
+ ## Content 8: [YouTube Video: 12 min | Tutorial]
330
+
331
+ **Date:** 2026-02-11
332
+ **Metrics:** 45,000 views, 2,100 likes, 189 comments
333
+ **URL:** https://www.youtube.com/watch?v=ABC123
334
+
335
+ ### Title
336
+ The video title.
337
+
338
+ ### Description
339
+ The full video description text (after expanding).
340
+
341
+ ### Transcription
342
+ The complete video transcription. If sourced from auto-generated subtitles,
343
+ note at the top: "[Auto-generated subtitles — may contain minor errors]"
344
+
345
+ Full transcription text goes here, paragraph by paragraph.
346
+ ```
347
+
348
+ ### Pattern Analysis File: `pattern-analysis.md`
349
+
350
+ One file per profile, saved to `squads/{squad-name}/_investigations/{username}/pattern-analysis.md`.
351
+
352
+ ```markdown
353
+ # Pattern Analysis: @{username} ({platform})
354
+
355
+ Analyzed: {YYYY-MM-DD}
356
+ Sample size: {N} contents
357
+ Period covered: {earliest date} to {latest date}
358
+
359
+ ## Executive Summary
360
+
361
+ A 3-5 sentence overview of the most significant patterns found. What makes
362
+ this creator's content distinctive? What is their primary content strategy?
363
+ What patterns correlate most strongly with high engagement?
364
+
365
+ ## Structural Patterns
366
+
367
+ ### Content Mix
368
+ | Type | Count | Percentage | Avg. Engagement |
369
+ |------|-------|------------|-----------------|
370
+ | Carousel | 7 | 58% | 4,200 likes |
371
+ | Reel | 3 | 25% | 45,000 views |
372
+ | Single Image | 2 | 17% | 1,800 likes |
373
+
374
+ ### Format Structures
375
+ - **Carousels**: Most common structure is [N] slides. Opening slide pattern:
376
+ [describe]. Closing slide pattern: [describe]. Typical slide text length:
377
+ [N] words.
378
+ - **Reels**: Average length: [N] seconds. Opening hook pattern: [describe].
379
+ Spoken vs. on-screen text ratio: [describe].
380
+ - **Posts**: Average caption length: [N] words. Line break frequency:
381
+ [describe]. Hashtag placement: [describe].
382
+
383
+ ### Posting Cadence
384
+ - Average posts per week: [N]
385
+ - Most common posting days: [days]
386
+ - Content type rotation pattern: [describe if any]
387
+
388
+ ## Language Patterns
389
+
390
+ ### Tone Profile
391
+ Overall tone: [describe in 2-3 sentences — formal/casual, serious/playful,
392
+ authoritative/conversational, etc.]
393
+
394
+ ### Hook Patterns
395
+ The top 5 most effective hooks (by engagement), with the pattern they follow:
396
+
397
+ 1. "{exact hook text}" — Pattern: [pattern name, e.g. "contradiction opener",
398
+ "bold claim", "question that challenges assumption"]
399
+ 2. "{exact hook text}" — Pattern: [pattern name]
400
+ 3. "{exact hook text}" — Pattern: [pattern name]
401
+ 4. "{exact hook text}" — Pattern: [pattern name]
402
+ 5. "{exact hook text}" — Pattern: [pattern name]
403
+
404
+ ### Call-to-Action Patterns
405
+ The most common CTA approaches, ranked by frequency:
406
+
407
+ 1. [CTA type]: "{example}" — used in [N] of [total] posts
408
+ 2. [CTA type]: "{example}" — used in [N] of [total] posts
409
+ 3. [CTA type]: "{example}" — used in [N] of [total] posts
410
+
411
+ ### Vocabulary Signature
412
+ Words and phrases this creator uses frequently that form part of their voice:
413
+ - "{phrase}" — appears in [N] posts, used for [context]
414
+ - "{phrase}" — appears in [N] posts, used for [context]
415
+ - "{phrase}" — appears in [N] posts, used for [context]
416
+ - "{phrase}" — appears in [N] posts, used for [context]
417
+ - "{phrase}" — appears in [N] posts, used for [context]
418
+
419
+ ### Style Notes
420
+ - Sentence length tendency: [short/medium/long, with average word count]
421
+ - Emoji usage: [frequency and placement pattern]
422
+ - Formatting habits: [line breaks, bullet points, numbering, bold/caps]
423
+ - Hashtag strategy: [count, placement, type — branded vs. discovery vs. community]
424
+
425
+ ## Engagement Patterns
426
+
427
+ ### Highest Performing Content
428
+ | Rank | Content | Type | Key Metric | What Made It Work |
429
+ |------|---------|------|-----------|-------------------|
430
+ | 1 | "{title/hook}" | Carousel | 8,900 saves | [specific reason] |
431
+ | 2 | "{title/hook}" | Reel | 120K views | [specific reason] |
432
+ | 3 | "{title/hook}" | Post | 5,200 likes | [specific reason] |
433
+
434
+ ### Engagement Drivers
435
+ Patterns that correlate with above-average engagement:
436
+ - [Pattern 1]: Posts with this pattern average [X]% higher engagement
437
+ - [Pattern 2]: Posts with this pattern average [X]% higher engagement
438
+ - [Pattern 3]: Posts with this pattern average [X]% higher engagement
439
+
440
+ ### Underperforming Content
441
+ Patterns found in below-average posts:
442
+ - [Pattern]: These posts averaged [X]% lower engagement. Possible reason: [hypothesis]
443
+ - [Pattern]: These posts averaged [X]% lower engagement. Possible reason: [hypothesis]
444
+
445
+ ## Recommendations for Squad
446
+
447
+ Five specific, actionable recommendations for how the squad should incorporate
448
+ patterns from this creator's content:
449
+
450
+ 1. **[Recommendation title]**: [Detailed recommendation with specific examples
451
+ from the analyzed content. Reference exact posts or patterns. Explain how
452
+ to adapt this for the user's brand.]
453
+
454
+ 2. **[Recommendation title]**: [Detailed recommendation.]
455
+
456
+ 3. **[Recommendation title]**: [Detailed recommendation.]
457
+
458
+ 4. **[Recommendation title]**: [Detailed recommendation.]
459
+
460
+ 5. **[Recommendation title]**: [Detailed recommendation.]
461
+ ```
462
+
463
+ ### Consolidated Analysis File: `consolidated-analysis.md`
464
+
465
+ **This file is produced by the Architect during the Design phase, not by individual Sherlock subagents.**
466
+
467
+ One file per investigation (across all profiles), saved to `squads/{squad-name}/_investigations/consolidated-analysis.md`.
468
+
469
+ ```markdown
470
+ # Consolidated Investigation: {squad-name}
471
+
472
+ Investigated: {YYYY-MM-DD}
473
+ Total profiles analyzed: {N}
474
+ Total contents extracted: {N across all profiles}
475
+
476
+ ## Profiles Analyzed
477
+
478
+ | # | Profile | Platform | Contents | Top Content Type | Avg. Engagement |
479
+ |---|---------|----------|----------|------------------|-----------------|
480
+ | 1 | @{username} | Instagram | 12 | Carousel (67%) | 4,200 likes |
481
+ | 2 | @{username} | YouTube | 8 | Long-form (100%) | 45,000 views |
482
+ | 3 | @{username} | X/Twitter | 15 | Threads (40%) | 2,100 likes |
483
+
484
+ ## Universal Patterns
485
+
486
+ Patterns that appear across ALL (or most) analyzed profiles:
487
+
488
+ ### Structural Patterns
489
+ - [Pattern found across multiple profiles]: Seen in [N] of [total] profiles.
490
+ Examples: [reference specific content from different profiles].
491
+ - [Pattern]: Seen in [N] of [total] profiles. Examples: [references].
492
+ - [Pattern]: Seen in [N] of [total] profiles. Examples: [references].
493
+
494
+ ### Language Patterns
495
+ - [Shared language pattern]: Found in [N] profiles. Examples: [references].
496
+ - [Shared language pattern]: Found in [N] profiles. Examples: [references].
497
+ - [Shared language pattern]: Found in [N] profiles. Examples: [references].
498
+
499
+ ### Engagement Drivers
500
+ - [Universal engagement driver]: Correlates with high performance across
501
+ [N] profiles. Evidence: [specific examples].
502
+ - [Universal engagement driver]: Evidence: [specific examples].
503
+ - [Universal engagement driver]: Evidence: [specific examples].
504
+
505
+ ## Profile Differentiators
506
+
507
+ What makes each profile's approach unique (not shared with others):
508
+
509
+ ### @{username1} — Unique Strengths
510
+ - [Unique pattern 1]: [description with examples]
511
+ - [Unique pattern 2]: [description with examples]
512
+
513
+ ### @{username2} — Unique Strengths
514
+ - [Unique pattern 1]: [description with examples]
515
+ - [Unique pattern 2]: [description with examples]
516
+
517
+ ### @{username3} — Unique Strengths
518
+ - [Unique pattern 1]: [description with examples]
519
+ - [Unique pattern 2]: [description with examples]
520
+
521
+ ## Recommended Framework
522
+
523
+ A synthesized framework based on the best patterns found across all profiles.
524
+ This framework becomes the operational blueprint for the squad.
525
+
526
+ ### Structure Template
527
+ The recommended content structure, synthesized from the highest-performing
528
+ patterns across all analyzed profiles:
529
+
530
+ 1. **Opening/Hook**: [Recommended approach based on top-performing hooks across
531
+ all profiles. Include 3 hook patterns that worked best, with templates.]
532
+ 2. **Body Structure**: [Recommended structure — number of sections/slides/points,
533
+ flow pattern, information density per section.]
534
+ 3. **Supporting Elements**: [Evidence, examples, data — how to support claims
535
+ based on what top creators do.]
536
+ 4. **Closing/CTA**: [Recommended CTA approach synthesized from highest-performing
537
+ CTAs across all profiles. Include 2-3 CTA templates.]
538
+
539
+ ### Voice Guidelines
540
+ Synthesized voice recommendations based on patterns across all profiles:
541
+
542
+ - **Tone**: [Recommended tone direction with justification from data]
543
+ - **Vocabulary to adopt**: [5-8 words/phrases found in high-performing content
544
+ across profiles]
545
+ - **Vocabulary to avoid**: [3-5 patterns absent from successful content or
546
+ present in underperforming content]
547
+ - **Sentence style**: [Length, rhythm, formatting based on observed patterns]
548
+ - **Emoji and formatting**: [Recommendations based on what top performers do]
549
+
550
+ ### Hook Templates
551
+ The 5 most effective hook patterns found, abstracted into reusable templates:
552
+
553
+ 1. **[Pattern name]**: "[Template with {placeholders}]"
554
+ Source: @{username}, engagement: [metric]. Why it works: [explanation].
555
+ 2. **[Pattern name]**: "[Template]"
556
+ Source: @{username}, engagement: [metric]. Why it works: [explanation].
557
+ 3. **[Pattern name]**: "[Template]"
558
+ Source: @{username}, engagement: [metric]. Why it works: [explanation].
559
+ 4. **[Pattern name]**: "[Template]"
560
+ Source: @{username}, engagement: [metric]. Why it works: [explanation].
561
+ 5. **[Pattern name]**: "[Template]"
562
+ Source: @{username}, engagement: [metric]. Why it works: [explanation].
563
+
564
+ ### CTA Templates
565
+ The 3 most effective CTA patterns found:
566
+
567
+ 1. **[CTA type]**: "[Template]" — Avg engagement lift: [X]%
568
+ 2. **[CTA type]**: "[Template]" — Avg engagement lift: [X]%
569
+ 3. **[CTA type]**: "[Template]" — Avg engagement lift: [X]%
570
+
571
+ ### Anti-Patterns
572
+ Patterns that were absent from successful content or present in underperforming
573
+ content. These become "never do" rules for the squad:
574
+
575
+ 1. [Anti-pattern]: Found in [N] underperforming posts, absent from top performers.
576
+ 2. [Anti-pattern]: Found in [N] underperforming posts, absent from top performers.
577
+ 3. [Anti-pattern]: Found in [N] underperforming posts, absent from top performers.
578
+ 4. [Anti-pattern]: Found in [N] underperforming posts, absent from top performers.
579
+ ```
580
+
581
+ ---
582
+
583
+ ## How the Architect Uses Sherlock Output
584
+
585
+ After the investigation completes, the Architect maps findings to squad data files during Phase 3 (Extraction). Each squad data file is enriched with real-world evidence from the investigation.
586
+
587
+ ### Mapping: Investigation Output to Squad Data Files
588
+
589
+ | Investigation Section | Squad Data File | What Gets Extracted |
590
+ |---|---|---|
591
+ | Highest-engagement raw content | `pipeline/data/output-examples.md` | Real posts reformatted as gold-standard examples for the writer agent |
592
+ | Anti-Patterns from consolidated analysis | `pipeline/data/anti-patterns.md` | Patterns absent from successful content become "never do" rules |
593
+ | Engagement Patterns + Quality metrics | `pipeline/data/quality-criteria.md` | Real engagement benchmarks calibrate scoring thresholds |
594
+ | Recommended Framework from consolidated analysis | `pipeline/data/domain-framework.md` | Structure template, hook templates, CTA templates become the operational framework |
595
+ | Language Patterns from pattern analyses | `pipeline/data/tone-of-voice.md` | Vocabulary signature, tone profile, and style notes inform voice options |
596
+ | Research brief (web search) + pattern analyses | `pipeline/data/research-brief.md` | Web research enriched with first-party content analysis evidence |
597
+
598
+ ### Agent Enrichment
599
+
600
+ Beyond data files, investigation output enriches individual agent definitions:
601
+
602
+ - **Writer agent persona**: Operational Framework includes real hook patterns and structure templates from the investigation. Voice Guidance uses the vocabulary signature. Output Examples are adapted from real high-performing content.
603
+ - **Reviewer agent persona**: Quality Criteria are calibrated against real engagement metrics from investigated profiles. The reviewer knows what "high-performing" looks like because it has seen real examples.
604
+ - **Researcher agent persona**: The research brief includes first-party data from the investigation, making the researcher's benchmarks grounded in real content, not just industry averages.
605
+ - **Ideator agent persona** (content squads): Hook templates and angle patterns from the investigation feed directly into the ideator's framework for generating viral angles.
606
+
607
+ ### Priority Rules
608
+
609
+ When investigation data conflicts with web research data:
610
+
611
+ 1. Investigation data (first-party, real content) takes priority over web research (third-party, aggregated)
612
+ 2. Patterns found across multiple investigated profiles carry more weight than single-profile patterns
613
+ 3. The Architect notes the source of each data point in the squad data files: "[Source: Investigation — @username]" vs "[Source: Web research — URL]"
614
+
615
+ ---
616
+
617
+ ## Investigation Configuration
618
+
619
+ ### URL Parsing Rules
620
+
621
+ Sherlock detects the platform from the URL to apply the correct extractor:
622
+
623
+ | URL Contains | Platform | Extractor File |
624
+ |---|---|---|
625
+ | `instagram.com` | Instagram | `sherlock-instagram.md` |
626
+ | `youtube.com` or `youtu.be` | YouTube | `sherlock-youtube.md` |
627
+ | `x.com` or `twitter.com` | Twitter/X | `sherlock-twitter.md` |
628
+ | `linkedin.com` | LinkedIn | `sherlock-linkedin.md` |
629
+
630
+ If the URL does not match any known pattern, inform the user: "I don't recognize this platform. Supported platforms: Instagram, YouTube, Twitter/X, LinkedIn."
631
+
632
+ ### Configuration Prompts
633
+
634
+ Before starting extraction for each profile, Sherlock asks the user for configuration using numbered lists (one question at a time):
635
+
636
+ **Content quantity:**
637
+ "How many pieces of content should I extract from @{username}?"
638
+ 1. 1 (single post)
639
+ 2. 3 (standard — recommended)
640
+
641
+ **Content type focus** (platform-dependent):
642
+
643
+ For Instagram:
644
+ "What content types should I focus on for @{username}?"
645
+ 1. All types
646
+ 2. Carousels only
647
+ 3. Reels only
648
+ 4. Carousels + Reels (skip single images)
649
+
650
+ For YouTube:
651
+ "What should I extract from {channel}?"
652
+ 1. Most recent videos
653
+ 2. Most popular videos
654
+ 3. Mix of recent and popular
655
+
656
+ For Twitter/X:
657
+ "What content should I focus on from @{username}?"
658
+ 1. All tweets
659
+ 2. Threads only
660
+ 3. Tweets + Threads (skip replies)
661
+
662
+ For LinkedIn:
663
+ "What content should I focus on from {name}?"
664
+ 1. All posts
665
+ 2. Long-form posts only
666
+ 3. Articles only
667
+ 4. Posts + Articles
668
+
669
+ ### Smart Recommendations
670
+
671
+ Sherlock recommends extraction settings based on the squad type:
672
+
673
+ - **Content creation squads** (writing, copywriting, posts): Recommend "Carousels + Reels" on Instagram, "Threads only" on Twitter, "Long-form posts" on LinkedIn. These content types have the highest signal for writing patterns.
674
+ - **Video squads** (YouTube, TikTok, Reels): Recommend "Reels only" on Instagram, "Most recent videos" on YouTube. Focus on video content and transcriptions.
675
+ - **Strategy/analysis squads**: Recommend "All types" with "deep dive" quantity. Maximum data for pattern analysis.
676
+ - **General squads**: Recommend "standard" quantity with "all types." Balanced approach.
677
+
678
+ ### Timeout and Error Handling
679
+
680
+ - Maximum time per profile: 10 minutes. If extraction exceeds this, save what has been collected so far and note: "Investigation truncated at {N} contents due to time limit."
681
+ - If a platform blocks access or returns errors, retry once. If the retry fails, save `error.md` and inform the user.
682
+ - If the browser crashes or becomes unresponsive, save collected data to the output file and report the failure.
683
+ - Always produce output files even on partial failure — partial data is better than no data.
684
+ - **Never fabricate data. Never declare success over empty results.**