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.
- package/README.md +265 -0
- package/_conectese/.conectese-version +1 -0
- package/_conectese/config/playwright.config.json +11 -0
- package/_conectese/core/architect.agent.yaml +110 -0
- package/_conectese/core/best-practices/_catalog.yaml +116 -0
- package/_conectese/core/best-practices/blog-post.md +132 -0
- package/_conectese/core/best-practices/blog-seo.md +127 -0
- package/_conectese/core/best-practices/copywriting.md +426 -0
- package/_conectese/core/best-practices/data-analysis.md +401 -0
- package/_conectese/core/best-practices/email-newsletter.md +118 -0
- package/_conectese/core/best-practices/email-sales.md +110 -0
- package/_conectese/core/best-practices/image-design.md +348 -0
- package/_conectese/core/best-practices/instagram-feed.md +235 -0
- package/_conectese/core/best-practices/instagram-reels.md +112 -0
- package/_conectese/core/best-practices/instagram-stories.md +107 -0
- package/_conectese/core/best-practices/linkedin-article.md +116 -0
- package/_conectese/core/best-practices/linkedin-post.md +121 -0
- package/_conectese/core/best-practices/researching.md +349 -0
- package/_conectese/core/best-practices/review.md +269 -0
- package/_conectese/core/best-practices/social-networks-publishing.md +294 -0
- package/_conectese/core/best-practices/strategist.md +344 -0
- package/_conectese/core/best-practices/technical-writing.md +365 -0
- package/_conectese/core/best-practices/twitter-post.md +105 -0
- package/_conectese/core/best-practices/twitter-thread.md +122 -0
- package/_conectese/core/best-practices/whatsapp-broadcast.md +107 -0
- package/_conectese/core/best-practices/youtube-script.md +122 -0
- package/_conectese/core/best-practices/youtube-shorts.md +112 -0
- package/_conectese/core/prompts/build.prompt.md +547 -0
- package/_conectese/core/prompts/design.prompt.md +469 -0
- package/_conectese/core/prompts/discovery.prompt.md +269 -0
- package/_conectese/core/prompts/sherlock-instagram.md +123 -0
- package/_conectese/core/prompts/sherlock-linkedin.md +73 -0
- package/_conectese/core/prompts/sherlock-shared.md +684 -0
- package/_conectese/core/prompts/sherlock-twitter.md +78 -0
- package/_conectese/core/prompts/sherlock-youtube.md +85 -0
- package/_conectese/core/runner.pipeline.md +535 -0
- package/_conectese/core/skills.engine.md +381 -0
- package/agents/data-extractor/AGENT.md +13 -0
- package/agents/direito-adaneiro/AGENT.md +18 -0
- package/agents/direito-administrativo/AGENT.md +18 -0
- package/agents/direito-aeroporta-rio/AGENT.md +18 -0
- package/agents/direito-agra-rio/AGENT.md +18 -0
- package/agents/direito-ambiental/AGENT.md +18 -0
- package/agents/direito-banca-rio/AGENT.md +18 -0
- package/agents/direito-civil/AGENT.md +18 -0
- package/agents/direito-constitcional/AGENT.md +18 -0
- package/agents/direito-da-crianc-a-e-do-adolescente-eca/AGENT.md +18 -0
- package/agents/direito-da-propriedade-intelectal/AGENT.md +18 -0
- package/agents/direito-de-ami-lia/AGENT.md +18 -0
- package/agents/direito-de-tra-nsito/AGENT.md +18 -0
- package/agents/direito-desportivo/AGENT.md +18 -0
- package/agents/direito-digital/AGENT.md +18 -0
- package/agents/direito-do-consmidor/AGENT.md +18 -0
- package/agents/direito-do-trabalho/AGENT.md +18 -0
- package/agents/direito-econo-mico/AGENT.md +18 -0
- package/agents/direito-eleitoral/AGENT.md +18 -0
- package/agents/direito-empresarial/AGENT.md +18 -0
- package/agents/direito-imobilia-rio/AGENT.md +18 -0
- package/agents/direito-inanceiro/AGENT.md +18 -0
- package/agents/direito-internacional/AGENT.md +18 -0
- package/agents/direito-mari-timo/AGENT.md +18 -0
- package/agents/direito-me-dico-e-da-sa-de/AGENT.md +18 -0
- package/agents/direito-militar/AGENT.md +18 -0
- package/agents/direito-ndia-rio/AGENT.md +18 -0
- package/agents/direito-notarial-e-registral/AGENT.md +18 -0
- package/agents/direito-penal/AGENT.md +18 -0
- package/agents/direito-previdencia-rio/AGENT.md +18 -0
- package/agents/direito-processal-civil/AGENT.md +18 -0
- package/agents/direito-processal-do-trabalho/AGENT.md +18 -0
- package/agents/direito-processal-militar/AGENT.md +18 -0
- package/agents/direito-processal-penal/AGENT.md +18 -0
- package/agents/direito-rbani-stico/AGENT.md +18 -0
- package/agents/direito-secrita-rio/AGENT.md +18 -0
- package/agents/direito-sindical/AGENT.md +18 -0
- package/agents/direito-societa-rio/AGENT.md +18 -0
- package/agents/direito-tribta-rio/AGENT.md +18 -0
- package/agents/direitos-hmanos/AGENT.md +18 -0
- package/agents/legal-analyst/AGENT.md +16 -0
- package/agents/legal-synthesizer/AGENT.md +13 -0
- package/agents/lgpd-anonymizer/AGENT.md +14 -0
- package/agents/lgpd-restorer/AGENT.md +14 -0
- package/agents/task-router/AGENT.md +13 -0
- package/bin/conectese.js +73 -0
- package/dashboard/index.html +12 -0
- package/dashboard/package-lock.json +1971 -0
- package/dashboard/package.json +28 -0
- package/dashboard/public/assets/avatars/Female1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female4_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female5_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female5_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female5_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female6_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female6_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female6_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male4_wave.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_up.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_up.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/backpack_blue.png +0 -0
- package/dashboard/public/assets/furniture/backpack_red.png +0 -0
- package/dashboard/public/assets/furniture/blinds.png +0 -0
- package/dashboard/public/assets/furniture/blinds_large_closed_white.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf_purple_tall.png +0 -0
- package/dashboard/public/assets/furniture/bulletin_board.png +0 -0
- package/dashboard/public/assets/furniture/clock.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug_blue.png +0 -0
- package/dashboard/public/assets/furniture/coffee_table.png +0 -0
- package/dashboard/public/assets/furniture/coffeepot_right.png +0 -0
- package/dashboard/public/assets/furniture/coffeetable_black_horizontal.png +0 -0
- package/dashboard/public/assets/furniture/couch.png +0 -0
- package/dashboard/public/assets/furniture/couch_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/cushion_blue.png +0 -0
- package/dashboard/public/assets/furniture/cushion_tan.png +0 -0
- package/dashboard/public/assets/furniture/desk_wood.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug_wide.png +0 -0
- package/dashboard/public/assets/furniture/flowers1.png +0 -0
- package/dashboard/public/assets/furniture/flowers2.png +0 -0
- package/dashboard/public/assets/furniture/lamp_tan.png +0 -0
- package/dashboard/public/assets/furniture/lantern.png +0 -0
- package/dashboard/public/assets/furniture/monstera.png +0 -0
- package/dashboard/public/assets/furniture/monstera_small.png +0 -0
- package/dashboard/public/assets/furniture/picture_frame.png +0 -0
- package/dashboard/public/assets/furniture/plant1.png +0 -0
- package/dashboard/public/assets/furniture/plant2.png +0 -0
- package/dashboard/public/assets/furniture/plant3.png +0 -0
- package/dashboard/public/assets/furniture/plant_poof.png +0 -0
- package/dashboard/public/assets/furniture/plant_spindly.png +0 -0
- package/dashboard/public/assets/furniture/poster_blue.png +0 -0
- package/dashboard/public/assets/furniture/rug.png +0 -0
- package/dashboard/public/assets/furniture/succulent_blue.png +0 -0
- package/dashboard/public/assets/furniture/succulent_green.png +0 -0
- package/dashboard/public/assets/furniture/treasurechest_closed_gold.png +0 -0
- package/dashboard/public/assets/furniture/water_cooler_better.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard_stand_graph.png +0 -0
- package/dashboard/public/assets/furniture/window_blinds_open.png +0 -0
- package/dashboard/src/App.tsx +46 -0
- package/dashboard/src/components/SquadCard.tsx +47 -0
- package/dashboard/src/components/SquadSelector.tsx +61 -0
- package/dashboard/src/components/StatusBadge.tsx +32 -0
- package/dashboard/src/components/StatusBar.tsx +97 -0
- package/dashboard/src/hooks/useSquadSocket.ts +135 -0
- package/dashboard/src/lib/formatTime.ts +16 -0
- package/dashboard/src/lib/normalizeState.ts +25 -0
- package/dashboard/src/main.tsx +10 -0
- package/dashboard/src/office/AgentSprite.ts +241 -0
- package/dashboard/src/office/OfficeScene.ts +153 -0
- package/dashboard/src/office/PhaserGame.tsx +80 -0
- package/dashboard/src/office/RoomBuilder.ts +190 -0
- package/dashboard/src/office/assetKeys.ts +150 -0
- package/dashboard/src/office/palette.ts +32 -0
- package/dashboard/src/plugin/squadWatcher.ts +233 -0
- package/dashboard/src/store/useSquadStore.ts +56 -0
- package/dashboard/src/styles/globals.css +36 -0
- package/dashboard/src/types/state.ts +63 -0
- package/dashboard/src/vite-env.d.ts +1 -0
- package/dashboard/test-results/.last-run.json +4 -0
- package/dashboard/tsconfig.json +24 -0
- package/dashboard/tsconfig.tsbuildinfo +1 -0
- package/dashboard/vite.config.ts +13 -0
- package/package.json +53 -0
- package/skills/README.md +63 -0
- package/skills/apify/SKILL.md +55 -0
- package/skills/blotato/SKILL.md +63 -0
- package/skills/canva/SKILL.md +60 -0
- package/skills/conectese-agent-creator/SKILL.md +192 -0
- package/skills/conectese-skill-creator/SKILL.md +407 -0
- package/skills/conectese-skill-creator/agents/analyzer.md +274 -0
- package/skills/conectese-skill-creator/agents/comparator.md +202 -0
- package/skills/conectese-skill-creator/agents/grader.md +223 -0
- package/skills/conectese-skill-creator/assets/eval_review.html +146 -0
- package/skills/conectese-skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/conectese-skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/conectese-skill-creator/references/schemas.md +430 -0
- package/skills/conectese-skill-creator/references/skill-format.md +235 -0
- package/skills/conectese-skill-creator/scripts/__init__.py +0 -0
- package/skills/conectese-skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/conectese-skill-creator/scripts/quick_validate.py +103 -0
- package/skills/conectese-skill-creator/scripts/run_eval.py +310 -0
- package/skills/conectese-skill-creator/scripts/utils.py +47 -0
- package/skills/image-ai-generator/SKILL.md +124 -0
- package/skills/image-ai-generator/scripts/generate.py +175 -0
- package/skills/image-creator/SKILL.md +155 -0
- package/skills/image-fetcher/SKILL.md +91 -0
- package/skills/instagram-publisher/SKILL.md +119 -0
- package/skills/instagram-publisher/scripts/publish.js +165 -0
- package/skills/resend/SKILL.md +80 -0
- package/skills/template-designer/SKILL.md +201 -0
- package/skills/template-designer/base-templates/model-a.html +27 -0
- package/skills/template-designer/base-templates/model-b.html +31 -0
- package/skills/template-designer/base-templates/model-c.html +42 -0
- package/src/agents-cli.js +158 -0
- package/src/agents.js +134 -0
- package/src/i18n.js +48 -0
- package/src/init.js +341 -0
- package/src/locales/en.json +73 -0
- package/src/locales/es.json +72 -0
- package/src/locales/pt-BR.json +72 -0
- package/src/logger.js +38 -0
- package/src/prompt.js +46 -0
- package/src/readme/README.md +119 -0
- package/src/runs.js +90 -0
- package/src/skills-cli.js +157 -0
- package/src/skills.js +146 -0
- package/src/update.js +169 -0
- package/templates/_conectese/.conectese-version +1 -0
- package/templates/_conectese/_investigations/.gitkeep +0 -0
- package/templates/ide-templates/antigravity/.agent/rules/conectese.md +55 -0
- package/templates/ide-templates/antigravity/.agent/workflows/conectese.md +102 -0
- package/templates/ide-templates/claude-code/.claude/skills/conectese/SKILL.md +182 -0
- package/templates/ide-templates/claude-code/.mcp.json +8 -0
- package/templates/ide-templates/claude-code/CLAUDE.md +43 -0
- package/templates/ide-templates/codex/.agents/skills/conectese/SKILL.md +6 -0
- package/templates/ide-templates/codex/AGENTS.md +105 -0
- package/templates/ide-templates/cursor/.cursor/commands/conectese.md +9 -0
- package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
- package/templates/ide-templates/cursor/.cursor/rules/conectese.mdc +48 -0
- package/templates/ide-templates/cursor/.cursorignore +3 -0
- package/templates/ide-templates/opencode/.opencode/commands/conectese.md +9 -0
- package/templates/ide-templates/opencode/AGENTS.md +105 -0
- package/templates/ide-templates/vscode-copilot/.github/prompts/conectese.prompt.md +201 -0
- package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
- package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
- package/templates/package.json +8 -0
- 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.**
|