neuron-inspector 0.3.0 → 0.3.1

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.
@@ -8,12 +8,17 @@ let activeRecipe = null;
8
8
  export const RECIPE_TOOLS = [
9
9
  {
10
10
  name: "neuron_recipe_run",
11
- description: "Start a recipe run. Loads the recipe's agent.md with variables interpolated, its learnings, and resolved variables (auto-filled from profile). Returns everything the AI needs to execute the recipe. Call neuron_recipe_complete when done to auto-log the outcome to memory.",
11
+ description: "Start a recipe run. Loads the recipe's agent.md with variables interpolated, its learnings, resolved variables (auto-filled from profile), and active rules (global + platform + task-specific). Rules are injected as non-negotiable constraints that override recipe strategy. Call neuron_recipe_complete when done.",
12
12
  inputSchema: {
13
13
  type: "object",
14
14
  properties: {
15
15
  slug: { type: "string", description: "Recipe slug (e.g. 'web-researcher', 'qa-engineer')" },
16
16
  variables: { type: "object", description: "Variable overrides — keys matching recipe.yaml variable names. Merged on top of profile defaults." },
17
+ rules: {
18
+ type: "array",
19
+ items: { type: "string" },
20
+ description: "Task-specific rules for this run (e.g. 'never follow anyone', 'skip users with less than 100 followers'). These are added on top of global rules from ~/.neuron/rules.yaml.",
21
+ },
17
22
  },
18
23
  required: ["slug"],
19
24
  },
@@ -149,6 +154,40 @@ export const RECIPE_TOOLS = [
149
154
  required: ["data"],
150
155
  },
151
156
  },
157
+ {
158
+ name: "neuron_rules_get",
159
+ description: "Read the active rules (~/.neuron/rules.yaml). Rules are hard constraints that override recipe strategies. " +
160
+ "Three levels: 'never' (absolute — never follow anyone, never auto-send without approval), " +
161
+ "'global' (apply to every recipe run), 'platform' (per-platform — e.g. linkedin-specific rules). " +
162
+ "Task-specific rules are passed per-run via neuron_recipe_run.",
163
+ inputSchema: { type: "object", properties: {} },
164
+ },
165
+ {
166
+ name: "neuron_rules_set",
167
+ description: "Set or update rules (~/.neuron/rules.yaml). Rules are non-negotiable constraints that override recipe strategies. " +
168
+ "Provide any combination of: 'never' (absolute prohibitions), 'global' (apply to all runs), " +
169
+ "'platform' (per-platform rules keyed by platform name). Merges with existing rules — " +
170
+ "platform rules are merged per-platform, global and never are replaced entirely if provided.",
171
+ inputSchema: {
172
+ type: "object",
173
+ properties: {
174
+ never: {
175
+ type: "array",
176
+ items: { type: "string" },
177
+ description: "Absolute prohibitions — things the agent must NEVER do (e.g. 'never follow anyone from the brand account', 'never send without human approval')",
178
+ },
179
+ global: {
180
+ type: "array",
181
+ items: { type: "string" },
182
+ description: "Global rules for all recipes (e.g. 'always personalize messages', 'maximum 10 actions per session')",
183
+ },
184
+ platform: {
185
+ type: "object",
186
+ description: "Per-platform rules. Keys are platform names (instagram, x, linkedin, facebook, tiktok). Values are arrays of rule strings.",
187
+ },
188
+ },
189
+ },
190
+ },
152
191
  ];
153
192
  /** Handle a recipe tool call locally (no extension needed). */
154
193
  export async function handleRecipeTool(name, args) {
@@ -166,11 +205,22 @@ export async function handleRecipeTool(name, args) {
166
205
  for (const [key, value] of Object.entries(resolved)) {
167
206
  instructions = instructions.replaceAll(`{{${key}}}`, String(value ?? ""));
168
207
  }
208
+ // Load and inject rules — these override recipe strategy
209
+ const globalRules = recipes.getRules();
210
+ const taskRules = args.rules ?? [];
211
+ const platform = resolved.platform ?? undefined;
212
+ const rulesBlock = recipes.formatRulesBlock(globalRules, taskRules, platform);
213
+ if (rulesBlock) {
214
+ instructions = rulesBlock + "\n" + instructions;
215
+ }
169
216
  // Track active run
170
217
  activeRecipe = { slug, startedAt: new Date().toISOString(), variables: resolved };
171
218
  // Get memory stats for evolve hint
172
219
  const memory = recipes.getMemory(slug, 1);
173
220
  const shouldEvolve = memory.total >= 5;
221
+ // Count active rules for visibility
222
+ const ruleCount = globalRules.never.length + globalRules.global.length + taskRules.length +
223
+ (platform && globalRules.platform[platform] ? globalRules.platform[platform].length : 0);
174
224
  return {
175
225
  recipe: recipe.meta.name,
176
226
  slug,
@@ -180,6 +230,15 @@ export async function handleRecipeTool(name, args) {
180
230
  unfilled_variables: Object.entries(recipe.variables)
181
231
  .filter(([key]) => !(key in resolved) || resolved[key] === undefined || resolved[key] === "")
182
232
  .map(([key, def]) => ({ key, ...def })),
233
+ active_rules: ruleCount,
234
+ rules_summary: ruleCount > 0
235
+ ? {
236
+ never: globalRules.never,
237
+ global: globalRules.global,
238
+ platform: platform && globalRules.platform[platform] ? globalRules.platform[platform] : [],
239
+ task: taskRules,
240
+ }
241
+ : null,
183
242
  memory_count: memory.total,
184
243
  evolve_hint: shouldEvolve
185
244
  ? `This recipe has ${memory.total} past runs. After completing this run, read memory with neuron_recipe_memory, analyze patterns, and update learnings with neuron_recipe_complete (include updated_learnings).`
@@ -252,6 +311,14 @@ export async function handleRecipeTool(name, args) {
252
311
  }
253
312
  case "neuron_profile_save":
254
313
  return recipes.saveProfile(args.data);
314
+ case "neuron_rules_get":
315
+ return recipes.getRules();
316
+ case "neuron_rules_set":
317
+ return recipes.saveRules({
318
+ never: args.never,
319
+ global: args.global,
320
+ platform: args.platform,
321
+ });
255
322
  default:
256
323
  throw new Error(`Unknown recipe tool: ${name}`);
257
324
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recipe-tools.js","sourceRoot":"","sources":["../src/recipe-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe-tools.js","sourceRoot":"","sources":["../src/recipe-tools.ts"],"names":[],"mappings":"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"}
package/dist/recipes.d.ts CHANGED
@@ -56,4 +56,15 @@ export declare function getProfile(): Record<string, unknown> | null;
56
56
  export declare function saveProfile(data: Record<string, string>): {
57
57
  path: string;
58
58
  };
59
+ export interface Rules {
60
+ global: string[];
61
+ platform: Record<string, string[]>;
62
+ never: string[];
63
+ }
64
+ export declare function getRules(): Rules;
65
+ export declare function saveRules(rules: Partial<Rules>): {
66
+ path: string;
67
+ };
68
+ /** Format rules as a constraints block to inject into agent instructions. */
69
+ export declare function formatRulesBlock(globalRules: Rules, taskRules?: string[], platform?: string): string;
59
70
  export {};
package/dist/recipes.js CHANGED
@@ -24,6 +24,10 @@ function userRecipesDir() {
24
24
  function profilePath() {
25
25
  return path.join(os.homedir(), ".neuron", "profile.yaml");
26
26
  }
27
+ /** Global rules path */
28
+ function rulesPath() {
29
+ return path.join(os.homedir(), ".neuron", "rules.yaml");
30
+ }
27
31
  // ── Helpers ─────────────────────────────────────────────────
28
32
  function readText(filePath) {
29
33
  try {
@@ -303,4 +307,59 @@ export function saveProfile(data) {
303
307
  fs.writeFileSync(profilePath(), YAML.stringify(merged));
304
308
  return { path: profilePath() };
305
309
  }
310
+ export function getRules() {
311
+ const text = readText(rulesPath());
312
+ if (!text)
313
+ return { global: [], platform: {}, never: [] };
314
+ const parsed = parseYaml(text);
315
+ return {
316
+ global: Array.isArray(parsed.global) ? parsed.global : [],
317
+ platform: parsed.platform ?? {},
318
+ never: Array.isArray(parsed.never) ? parsed.never : [],
319
+ };
320
+ }
321
+ export function saveRules(rules) {
322
+ const dir = path.dirname(rulesPath());
323
+ if (!fs.existsSync(dir))
324
+ fs.mkdirSync(dir, { recursive: true });
325
+ const existing = getRules();
326
+ const merged = {
327
+ global: rules.global ?? existing.global,
328
+ platform: rules.platform ? { ...existing.platform, ...rules.platform } : existing.platform,
329
+ never: rules.never ?? existing.never,
330
+ };
331
+ fs.writeFileSync(rulesPath(), YAML.stringify(merged));
332
+ return { path: rulesPath() };
333
+ }
334
+ /** Format rules as a constraints block to inject into agent instructions. */
335
+ export function formatRulesBlock(globalRules, taskRules, platform) {
336
+ const lines = [];
337
+ if (globalRules.never.length > 0) {
338
+ lines.push("## HARD CONSTRAINTS (never violate)");
339
+ for (const r of globalRules.never)
340
+ lines.push(`- ${r}`);
341
+ lines.push("");
342
+ }
343
+ if (globalRules.global.length > 0) {
344
+ lines.push("## Global Rules");
345
+ for (const r of globalRules.global)
346
+ lines.push(`- ${r}`);
347
+ lines.push("");
348
+ }
349
+ if (platform && globalRules.platform[platform]?.length) {
350
+ lines.push(`## Platform Rules (${platform})`);
351
+ for (const r of globalRules.platform[platform])
352
+ lines.push(`- ${r}`);
353
+ lines.push("");
354
+ }
355
+ if (taskRules && taskRules.length > 0) {
356
+ lines.push("## Task-Specific Rules");
357
+ for (const r of taskRules)
358
+ lines.push(`- ${r}`);
359
+ lines.push("");
360
+ }
361
+ return lines.length > 0
362
+ ? "---\n\n" + lines.join("\n") + "\n---\n\nThe rules above override ANY conflicting instruction in the recipe strategy. If a rule says never do X, do not do X even if the strategy says to.\n"
363
+ : "";
364
+ }
306
365
  //# sourceMappingURL=recipes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neuron-inspector",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "64 tools for AI agents. Turn Chrome into an MCP server — inspect DOM, automate clicks, audit security, mock APIs, extract data, record demos, self-improving recipes.",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
@@ -0,0 +1,338 @@
1
+ # Social Ops
2
+
3
+ You execute social media operations across Instagram, X/Twitter, Facebook, TikTok, and LinkedIn. You comment on posts, DM users, engage with followers of specific pages, target likers of specific content, and reply under targeted posts.
4
+
5
+ You use the logged-in browser session — no API keys, no third-party tools. The user is already signed into the platform in Chrome.
6
+
7
+ ## Strategy
8
+
9
+ ### Phase 0: Load context
10
+
11
+ 1. Read `learnings.md` for platform-specific patterns from past runs
12
+ 2. Read `{{output_path}}/ops-log.yaml` to avoid re-contacting people
13
+ 3. If `{{input.campaign_plan}}` exists, load platform constraints from the planner
14
+ 4. Check today's action count against `{{daily_cap}}`
15
+ 5. Load the **Platform Playbook** section below for `{{platform}}`
16
+
17
+ ### Phase 1: Find targets
18
+
19
+ Based on `{{operation}}` and `{{target}}`:
20
+
21
+ **If target is a post URL** (comment, engage-likers, engage-commenters):
22
+ 1. `neuron_research_page` on the post URL
23
+ 2. Extract: post content, author, engagement counts
24
+ 3. For engage-likers: navigate to the likes list (see Platform Playbook for how)
25
+ 4. For engage-commenters: scroll through comments, extract commenter profiles
26
+ 5. Collect target list
27
+
28
+ **If target is a page/account URL** (engage-followers, dm):
29
+ 1. `neuron_research_page` on the profile URL
30
+ 2. Navigate to followers list (see Platform Playbook)
31
+ 3. `neuron_search_and_collect` to paginate through followers
32
+ 4. Collect target list
33
+
34
+ **If target is a hashtag or search query**:
35
+ 1. `neuron_search_and_collect` on the platform's search/explore with the query
36
+ 2. Extract posts and their authors
37
+ 3. Collect target list
38
+
39
+ Filter the target list:
40
+ - Remove anyone already in ops-log.yaml
41
+ - Cap at `{{session_cap}}` * 2 (you'll filter further after profiling)
42
+
43
+ ### Phase 2: Profile targets (if personalize = yes)
44
+
45
+ For each target, `neuron_research_profiles` in batches of up to 5:
46
+ - Pull: name, bio, recent posts, follower count
47
+ - Score relevance 1-5 based on alignment with the campaign goal
48
+ - Find a personalization hook for the message (a recent post, their bio, their work)
49
+
50
+ Skip targets scoring below 3.
51
+
52
+ ### Phase 3: Compose
53
+
54
+ For each qualified target, compose the action:
55
+
56
+ **For comments:**
57
+ - Read the post content first — the comment must be relevant to what was posted
58
+ - If `{{message_template}}` is set, adapt it to the specific post
59
+ - If no template, write a genuine comment that adds to the conversation
60
+ - Never paste the same comment on two posts — vary it substantively
61
+ - Keep comments natural — 1-3 sentences, no hashtag stuffing, no emoji walls
62
+
63
+ **For DMs:**
64
+ - If `{{personalize}}` is yes: reference something from their profile (see Phase 2)
65
+ - If no: adapt `{{message_template}}` with their name
66
+ - Follow the same anti-spam rules as the linkedin-outreach recipe: every message must be unique, reference something specific, no "I came across your profile"
67
+ - Keep DMs short — 2-3 sentences for cold DMs
68
+
69
+ **For likes/follows:**
70
+ - No composition needed — these are direct actions
71
+
72
+ ### Phase 4: Execute
73
+
74
+ For each action:
75
+
76
+ 1. `neuron_detect_blocker` — check for rate limits, captchas, login prompts. If detected: **STOP the entire session immediately.**
77
+
78
+ 2. Navigate to the target (post or profile)
79
+
80
+ 3. Execute the action using the Platform Playbook selectors:
81
+ - Comment: find comment box → type → submit
82
+ - DM: open DM composer → type → send
83
+ - Like: click like button
84
+ - Follow: click follow button
85
+
86
+ 4. `neuron_monitor_action` to verify the action was successful (diff shows the change)
87
+
88
+ 5. If `{{approval_mode}}` is "review-all": screenshot and pause for human approval before executing
89
+ If "auto-after-3": pause for first 3, then auto-execute
90
+
91
+ 6. Wait `{{min_delay_seconds}}` before the next action
92
+
93
+ 7. Log to ops-log.yaml
94
+
95
+ ### Phase 5: Log
96
+
97
+ After each action:
98
+
99
+ ```yaml
100
+ - date: "{{now}}"
101
+ platform: "{{platform}}"
102
+ operation: "{{operation}}"
103
+ target_url: "<url of post or profile>"
104
+ target_name: "<person's name>"
105
+ target_bio: "<short bio>"
106
+ message: "<comment or DM text sent>"
107
+ personalization_hook: "<what was referenced from their profile>"
108
+ status: sent
109
+ response: pending
110
+ blocker: false
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Platform Playbooks
116
+
117
+ These are the known UI patterns for each platform. They degrade when platforms update their UI — if a selector fails, fall back to `neuron_find_elements` with visible text matching, then flag the failure in memory so the evolve phase can update.
118
+
119
+ ### Instagram
120
+
121
+ **Navigate to post:** Direct URL works (`instagram.com/p/{id}`)
122
+
123
+ **Comment on post:**
124
+ - Scroll to comment section
125
+ - Find: `textarea[aria-label*="comment" i]` or `textarea[placeholder*="comment" i]`
126
+ - Type the comment
127
+ - Submit: find the "Post" button near the textarea, `button:has-text("Post")` or `[type="submit"]` inside the comment form
128
+
129
+ **Like a post:**
130
+ - Find: `svg[aria-label="Like"]` parent button, or `span:has-text("Like")` ancestor button
131
+ - Click it
132
+ - Verify: the aria-label changes to "Unlike"
133
+
134
+ **DM a user:**
135
+ - From their profile: click "Message" button
136
+ - Or navigate to `instagram.com/direct/new/` and search for the username
137
+ - Find the message input: `textarea[placeholder*="Message"]` or `div[contenteditable="true"][role="textbox"]`
138
+ - Type → click Send (paper plane icon) or press Enter
139
+
140
+ **Get post likers:**
141
+ - Click the likes count on the post (e.g., "1,234 likes")
142
+ - Modal opens with a scrollable list of users
143
+ - `neuron_scroll` inside the modal to load more
144
+ - `neuron_extract_data` on the modal to get names + profile links
145
+
146
+ **Get followers of account:**
147
+ - Navigate to profile → click "followers" count
148
+ - Modal with scrollable list
149
+ - `neuron_scroll` inside modal + `neuron_extract_data`
150
+
151
+ **Rate limits (verify with planner):**
152
+ - ~30-60 DMs/day (established accounts)
153
+ - ~20-30 comments/day
154
+ - ~100-150 likes/day
155
+ - ~20-30 follows/day
156
+ - Action blocks last 24-48 hours
157
+
158
+ ### X / Twitter
159
+
160
+ **Navigate to post:** Direct URL (`x.com/{user}/status/{id}`)
161
+
162
+ **Comment/Reply:**
163
+ - Click the reply icon on the tweet, or scroll to the reply box at bottom
164
+ - Find: `div[data-testid="tweetTextarea_0"]` or `div[role="textbox"][contenteditable="true"]`
165
+ - Type the reply
166
+ - Submit: click `div[data-testid="tweetButton"]` or button with "Reply" text
167
+
168
+ **Like a tweet:**
169
+ - Find: `div[data-testid="like"]` or `button[data-testid="like"]`
170
+ - Click it
171
+ - Verify: `data-testid` changes to "unlike"
172
+
173
+ **DM a user:**
174
+ - Click the message/envelope icon on their profile, or navigate to `x.com/messages`
175
+ - Click "New message", search for the user
176
+ - Find: `div[data-testid="dmComposerTextInput"]` or `div[role="textbox"]`
177
+ - Type → Enter or click Send
178
+
179
+ **Get post likers:**
180
+ - Click likes count → opens list at `x.com/{user}/status/{id}/likes`
181
+ - `neuron_extract_data` on the list
182
+
183
+ **Get followers:**
184
+ - Navigate to `x.com/{user}/followers`
185
+ - Infinite scroll + extract
186
+
187
+ **Rate limits (verify with planner):**
188
+ - DMs: varies heavily by account age and verification
189
+ - Tweets/replies: ~300/day (verified), ~50/day (new unverified)
190
+ - Likes: ~500/day
191
+ - Follows: ~400/day, ~5000 total until ratio kicks in
192
+
193
+ ### Facebook
194
+
195
+ **Navigate to post:** Direct URL (`facebook.com/{user}/posts/{id}`)
196
+
197
+ **Comment on post:**
198
+ - Find: `div[contenteditable="true"][role="textbox"]` in the comment section
199
+ - May need to click "Write a comment..." to expand
200
+ - Type → Enter to submit
201
+
202
+ **Like a post:**
203
+ - Find: `div[aria-label="Like"]` or `span:has-text("Like")` button
204
+ - Click it
205
+
206
+ **DM a user:**
207
+ - Navigate to `facebook.com/messages/new/` or click Message on their profile
208
+ - `div[contenteditable="true"][role="textbox"]` for the composer
209
+ - Type → Enter
210
+
211
+ **Get post reactions (likers):**
212
+ - Click the reactions count on the post
213
+ - Modal with tabs (All, Like, Love, etc.)
214
+ - `neuron_extract_data` on the modal
215
+
216
+ **Rate limits (verify with planner):**
217
+ - Facebook is aggressive about automation detection
218
+ - Use longer delays (3+ minutes between actions)
219
+ - New accounts are heavily restricted
220
+ - ~20-30 messages/day is safe for established accounts
221
+
222
+ ### TikTok
223
+
224
+ **Navigate to post:** Direct URL (`tiktok.com/@{user}/video/{id}`)
225
+
226
+ **Comment on post:**
227
+ - Find: `div[contenteditable="true"]` or `div[data-e2e="comment-input"]`
228
+ - Type the comment
229
+ - Submit: click post button, usually `div[data-e2e="comment-post"]` or button near the input
230
+
231
+ **Like a video:**
232
+ - Find: `span[data-e2e="like-icon"]` or the heart button
233
+ - Click it
234
+
235
+ **DM a user:**
236
+ - Navigate to `tiktok.com/messages` → new message → search user
237
+ - Find the message input
238
+ - Type → send
239
+
240
+ **Get video likers:**
241
+ - TikTok doesn't expose a full likers list publicly
242
+ - Alternative: extract from comments section instead
243
+
244
+ **Get followers:**
245
+ - Navigate to profile → followers tab
246
+ - `neuron_extract_data` on the list
247
+
248
+ **Rate limits (verify with planner):**
249
+ - TikTok has strong bot detection
250
+ - Comment limits: ~20-30/day
251
+ - DMs: restricted to mutual followers or limited sends
252
+ - Use very conservative pacing (2+ minutes between actions)
253
+
254
+ ### LinkedIn
255
+
256
+ **Navigate to post:** Direct URL (`linkedin.com/feed/update/urn:li:activity:{id}`)
257
+
258
+ **Comment on post:**
259
+ - Find: `div.ql-editor[contenteditable="true"]` or click "Add a comment..."
260
+ - Type the comment
261
+ - Submit: click the "Post" button (or Ctrl+Enter)
262
+
263
+ **Like a post:**
264
+ - Find: `button[aria-label*="Like"]` or `button.react-button`
265
+ - Click it
266
+
267
+ **DM a user:**
268
+ - Click "Message" on their profile
269
+ - Or open `linkedin.com/messaging/` → new message → search
270
+ - Find: `div.msg-form__contenteditable[contenteditable="true"]`
271
+ - Type → Enter or click Send
272
+
273
+ **Get post likers:**
274
+ - Click the reactions count → opens a modal with the list
275
+ - `neuron_extract_data` on the modal
276
+
277
+ **Get followers/connections:**
278
+ - Navigate to `linkedin.com/mynetwork/` or use People search
279
+ - LinkedIn gates follower lists — use search + filters instead
280
+
281
+ **Rate limits (verify with planner):**
282
+ - See planner learnings — LinkedIn is the most documented
283
+ - ~100 connection requests/week
284
+ - ~150 DMs/day to connections
285
+ - ~50-80 messages to non-connections (InMail/message requests)
286
+ - Comments: ~30-50/day
287
+
288
+ ---
289
+
290
+ ## Reflect
291
+
292
+ After each session:
293
+
294
+ ```yaml
295
+ date: {{now}}
296
+ platform: "{{platform}}"
297
+ operation: "{{operation}}"
298
+ outcome:
299
+ targets_found: <count>
300
+ targets_qualified: <count after filtering>
301
+ actions_executed: <count>
302
+ actions_approved: <count>
303
+ actions_rejected_by_human: <count>
304
+ blockers_hit:
305
+ - type: "<rate_limit|captcha|login_wall|selector_failed>"
306
+ details: "<what happened>"
307
+ selector_failures:
308
+ - selector: "<what was tried>"
309
+ platform: "{{platform}}"
310
+ context: "<what it was supposed to find>"
311
+ session_duration_minutes: <approx>
312
+ ```
313
+
314
+ ## Evolve
315
+
316
+ After 10+ sessions, review memory and update `learnings.md`:
317
+
318
+ **Selector accuracy:**
319
+ - Which platform selectors are working reliably?
320
+ - Which have broken? Update the Platform Playbook section.
321
+ - Are there better selectors found via `neuron_find_elements` fallback?
322
+
323
+ **Operation effectiveness:**
324
+ - Which operations (comment vs DM vs like) get the most engagement back?
325
+ - Which platforms have the best response rates?
326
+ - Which message styles work per platform? (LinkedIn formality ≠ Instagram casual)
327
+
328
+ **Rate limit accuracy:**
329
+ - Have any limits changed?
330
+ - What's the actual safe operating range vs the documented limit?
331
+ - Any new detection patterns?
332
+
333
+ **Targeting:**
334
+ - Which target sources (post likers vs followers vs commenters vs search) yield the most receptive people?
335
+ - Does personalization significantly improve response rates?
336
+ - What fit score threshold is worth the effort?
337
+
338
+ Update the Platform Playbook with any selector changes, updated limits, or new UI patterns discovered.
@@ -0,0 +1,22 @@
1
+ # Learnings
2
+
3
+ No operations executed yet. This file updates after 10+ sessions.
4
+
5
+ ## Platform Selector Status
6
+
7
+ All selectors in the Platform Playbook are initial best-effort as of September 2026.
8
+ Platforms change their DOM frequently — expect breakage. When a selector fails,
9
+ the agent falls back to `neuron_find_elements` with visible text matching and
10
+ logs the failure. This section tracks what's current.
11
+
12
+ | Platform | Last verified | Selector health |
13
+ |----------|--------------|-----------------|
14
+ | Instagram | Not yet | Unknown |
15
+ | X/Twitter | Not yet | Unknown |
16
+ | Facebook | Not yet | Unknown |
17
+ | TikTok | Not yet | Unknown |
18
+ | LinkedIn | Not yet | Unknown |
19
+
20
+ ## Cross-Platform Patterns
21
+
22
+ (Will be populated from multi-platform operations)
@@ -0,0 +1,93 @@
1
+ name: Social Ops
2
+ version: 1.0.0
3
+ description: >
4
+ Multi-platform social operations — comment on posts, DM users, engage with
5
+ followers of a page, target likers of specific content, reply under targeted
6
+ posts. Works across Instagram, X/Twitter, Facebook, TikTok, and LinkedIn.
7
+ One recipe, all platforms, with per-platform playbooks.
8
+ author: neuron
9
+ tags: [social, instagram, twitter, x, facebook, tiktok, linkedin, dms, comments, engagement, outreach]
10
+
11
+ variables:
12
+ operation:
13
+ prompt: "What do you want to do?"
14
+ options: [comment, dm, like, follow, engage-followers, engage-likers, engage-commenters]
15
+ required: true
16
+ platform:
17
+ prompt: "Which platform?"
18
+ options: [instagram, x, facebook, tiktok, linkedin]
19
+ required: true
20
+ target:
21
+ prompt: "Target — a post URL, a page/account URL, a hashtag, or a search query"
22
+ type: text
23
+ required: true
24
+ example: "https://instagram.com/p/ABC123 or @letschop or #lagosfoodies"
25
+ message_template:
26
+ prompt: "Message or comment template. Use {name} for the person's name, {post} for their post topic."
27
+ type: text
28
+ default: ""
29
+ example: "Love this! We're building something for food lovers in Lagos — would love your thoughts"
30
+ personalize:
31
+ prompt: "Read each person's profile before messaging to personalize?"
32
+ options: ["yes", "no"]
33
+ default: "yes"
34
+ daily_cap:
35
+ prompt: "Max actions per day"
36
+ type: number
37
+ default: 20
38
+ session_cap:
39
+ prompt: "Max actions this session"
40
+ type: number
41
+ default: 5
42
+ min_delay_seconds:
43
+ prompt: "Minimum seconds between actions"
44
+ type: number
45
+ default: 60
46
+ output_path:
47
+ prompt: "Where to save logs"
48
+ type: path
49
+ default: "./social-ops"
50
+ approval_mode:
51
+ prompt: "Review each action before executing?"
52
+ options: [review-all, auto-after-3]
53
+ default: review-all
54
+
55
+ tools:
56
+ required:
57
+ - neuron_navigate
58
+ - neuron_extract_data
59
+ - neuron_find_elements
60
+ - neuron_type
61
+ - neuron_click
62
+ - neuron_scroll
63
+ - neuron_screenshot
64
+ - neuron_evaluate_js
65
+ - neuron_list_tabs
66
+ - neuron_get_errors
67
+ - neuron_detect_blocker
68
+ - neuron_research_page
69
+ - neuron_research_profiles
70
+ - neuron_search_and_collect
71
+ - neuron_monitor_action
72
+ optional:
73
+ - neuron_open_tab
74
+ - neuron_snapshot_state
75
+ - neuron_diff_states
76
+
77
+ pipes:
78
+ outputs:
79
+ ops_log:
80
+ format: yaml
81
+ path: "{{output_path}}/ops-log.yaml"
82
+ description: "Log of all social actions taken — who, what, when, response"
83
+ inputs:
84
+ campaign_plan:
85
+ from: planner
86
+ output: plan
87
+ description: "Campaign plan with platform constraints and strategy"
88
+ optional: true
89
+
90
+ limits:
91
+ max_tabs: 3
92
+ max_duration_minutes: 45
93
+ require_human_approval: true