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.
- package/dist/recipe-tools.js +68 -1
- package/dist/recipe-tools.js.map +1 -1
- package/dist/recipes.d.ts +11 -0
- package/dist/recipes.js +59 -0
- package/dist/recipes.js.map +1 -1
- package/package.json +1 -1
- package/recipes/social-ops/agent.md +338 -0
- package/recipes/social-ops/learnings.md +22 -0
- package/recipes/social-ops/recipe.yaml +93 -0
package/dist/recipe-tools.js
CHANGED
|
@@ -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,
|
|
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
|
}
|
package/dist/recipe-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe-tools.js","sourceRoot":"","sources":["../src/recipe-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,2EAA2E;AAC3E,IAAI,YAAY,GAAmF,IAAI,CAAC;AAExG,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,
|
|
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
|
package/dist/recipes.js.map
CHANGED
|
@@ -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.
|
|
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
|