@datatamer.ai/agentdev 1.0.6 → 1.0.8

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.
@@ -0,0 +1,425 @@
1
+ # agentdev linkedin — LinkedIn CLI
2
+
3
+ Use `agentdev linkedin` for ALL LinkedIn operations. Do NOT attempt to use LinkedIn APIs directly.
4
+
5
+ ## Prerequisites
6
+
7
+ User must connect their LinkedIn account first:
8
+ 1. Visit /profile page on AgentDev
9
+ 2. Click "Connect LinkedIn"
10
+ 3. Complete OAuth authorization flow
11
+
12
+ If LinkedIn is not connected, all commands will fail with instructions to connect.
13
+
14
+ **IMPORTANT:** After new scopes are added, users must reconnect their LinkedIn account at /profile to grant new permissions.
15
+
16
+ ## Post Commands
17
+
18
+ ### Create Posts
19
+
20
+ #### Text-only post
21
+
22
+ ```bash
23
+ agentdev linkedin post create --text "Your message here"
24
+ ```
25
+
26
+ #### Share article/URL
27
+
28
+ ```bash
29
+ agentdev linkedin post create \
30
+ --text "Check out this article about AI agents" \
31
+ --url "https://example.com/article" \
32
+ --url-title "AI Agents in 2026" \
33
+ --url-description "A comprehensive guide to AI agents"
34
+ ```
35
+
36
+ **Note:** `--url-title` is required when using `--url`
37
+
38
+ #### Post with image
39
+
40
+ ```bash
41
+ agentdev linkedin post create \
42
+ --text "Great photo from the conference" \
43
+ --image /path/to/image.png \
44
+ --image-title "Conference 2026"
45
+ ```
46
+
47
+ **Note:** Only PNG and JPG images are supported
48
+
49
+ #### Post with video
50
+
51
+ ```bash
52
+ agentdev linkedin post create \
53
+ --text "Check out this video!" \
54
+ --video /path/to/video.mp4 \
55
+ --thumbnail /path/to/thumbnail.jpg
56
+ ```
57
+
58
+ **Video Requirements:**
59
+ - Format: MP4 only
60
+ - Size: 75KB - 5GB (organic posts)
61
+ - Duration: 3 seconds to 30 minutes
62
+ - Thumbnail: Optional, JPG format
63
+
64
+ #### Visibility options
65
+
66
+ ```bash
67
+ # Public post (default)
68
+ agentdev linkedin post create --text "Hello LinkedIn!" --visibility PUBLIC
69
+
70
+ # Connections only
71
+ agentdev linkedin post create --text "Hello connections!" --visibility CONNECTIONS
72
+ ```
73
+
74
+ ### Manage Posts
75
+
76
+ #### List your posts
77
+
78
+ ```bash
79
+ agentdev linkedin post list --count 20 --sort LAST_MODIFIED
80
+ ```
81
+
82
+ **Options:**
83
+ - `--count` - Number of posts to retrieve (default: 10)
84
+ - `--sort` - Sort order: LAST_MODIFIED or CREATED (default: LAST_MODIFIED)
85
+
86
+ #### View post details
87
+
88
+ ```bash
89
+ agentdev linkedin post view "urn:li:share:123456"
90
+ ```
91
+
92
+ Returns full post details including text, visibility, and lifecycle state.
93
+
94
+ #### Edit a post
95
+
96
+ ```bash
97
+ agentdev linkedin post edit "urn:li:share:123456" --text "Updated text content"
98
+ ```
99
+
100
+ **Note:** Only commentary/text can be edited. Media cannot be changed after posting.
101
+
102
+ #### Delete a post
103
+
104
+ ```bash
105
+ agentdev linkedin post delete "urn:li:share:123456" --confirm
106
+ ```
107
+
108
+ **Important:** Requires `--confirm` flag to prevent accidental deletions.
109
+
110
+ ## Analytics & Engagement
111
+
112
+ ### Post analytics
113
+
114
+ ```bash
115
+ agentdev linkedin analytics post "urn:li:share:123456"
116
+ ```
117
+
118
+ Returns:
119
+ - Total reactions by type (LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION)
120
+ - Total comments
121
+ - Comments state (OPEN, CLOSED, etc.)
122
+
123
+ ### Reactions breakdown
124
+
125
+ ```bash
126
+ # All reactions
127
+ agentdev linkedin analytics reactions "urn:li:share:123456"
128
+
129
+ # Filter by type
130
+ agentdev linkedin analytics reactions "urn:li:share:123456" --type LIKE
131
+ ```
132
+
133
+ **Reaction Types:**
134
+ - LIKE 👍
135
+ - PRAISE 👏
136
+ - MAYBE 💡
137
+ - EMPATHY ❤️
138
+ - INTEREST 💭
139
+ - APPRECIATION 🙌
140
+
141
+ ### Post comments
142
+
143
+ ```bash
144
+ agentdev linkedin analytics comments "urn:li:share:123456" --count 20
145
+ ```
146
+
147
+ Returns comment text, authors, and metadata.
148
+
149
+ ## Connections Management
150
+
151
+ ### List connections
152
+
153
+ ```bash
154
+ agentdev linkedin connections list --count 50
155
+ ```
156
+
157
+ **Note:** Maximum 50 connections per request (LinkedIn limit)
158
+
159
+ ### Send connection request
160
+
161
+ ```bash
162
+ # By person URN
163
+ agentdev linkedin connections send \
164
+ --person "urn:li:person:ABC123" \
165
+ --message "Let's connect!"
166
+
167
+ # By email
168
+ agentdev linkedin connections send \
169
+ --email "user@example.com" \
170
+ --message "Great meeting you at the conference!"
171
+ ```
172
+
173
+ ### Accept connection request
174
+
175
+ ```bash
176
+ agentdev linkedin connections accept <invitation-id> --token <validation-token>
177
+ ```
178
+
179
+ **Note:** Validation token is provided in the invitation notification.
180
+
181
+ ### Reject connection request
182
+
183
+ ```bash
184
+ agentdev linkedin connections reject <invitation-id> --token <validation-token>
185
+ ```
186
+
187
+ ### View person profile
188
+
189
+ ```bash
190
+ agentdev linkedin person ABC123
191
+ ```
192
+
193
+ Returns name, headline, and person ID.
194
+
195
+ ## Organization/Company Pages
196
+
197
+ **Requirements:**
198
+ - User must have ADMINISTRATOR, CONTENT_ADMIN, or DIRECT_SPONSORED_CONTENT_POSTER role
199
+ - Organization ID must be valid and accessible by the user
200
+
201
+ ### Post as organization
202
+
203
+ ```bash
204
+ agentdev linkedin org post \
205
+ --id 12345 \
206
+ --text "Company announcement: New product launch!" \
207
+ --visibility PUBLIC
208
+ ```
209
+
210
+ ### View organization profile
211
+
212
+ ```bash
213
+ agentdev linkedin org view 12345
214
+ ```
215
+
216
+ Returns organization name, vanity name, website, and ID.
217
+
218
+ ### Organization analytics
219
+
220
+ ```bash
221
+ agentdev linkedin org analytics "urn:li:organization:12345" --days 30
222
+ ```
223
+
224
+ Returns:
225
+ - Total followers (organic + paid)
226
+ - Follower gains/losses
227
+ - Demographics (by country, industry, function)
228
+
229
+ **Note:** Requires `rw_organization_admin` scope and ADMINISTRATOR role.
230
+
231
+ ### List organization posts
232
+
233
+ ```bash
234
+ agentdev linkedin org posts "urn:li:organization:12345" --count 20
235
+ ```
236
+
237
+ ## Profile Commands
238
+
239
+ ### View your profile
240
+
241
+ ```bash
242
+ agentdev linkedin profile
243
+ ```
244
+
245
+ Returns: Name, email, person ID, and profile picture URL
246
+
247
+ ## Authentication Commands
248
+
249
+ ### Check auth status
250
+
251
+ ```bash
252
+ agentdev linkedin auth
253
+ ```
254
+
255
+ Verifies that LinkedIn is connected and token is valid.
256
+
257
+ ## Rate Limits
258
+
259
+ - **150 posts per day** per user (LinkedIn limit)
260
+ - **100,000 API requests per day** per application
261
+ - **Comment creation:** 1-minute cooldown between comments
262
+ - **Connection requests:** LinkedIn may throttle excessive sending
263
+
264
+ If rate limit is exceeded, you'll receive a clear error message with retry-after information.
265
+
266
+ ## Error Handling
267
+
268
+ | Error | Meaning | Action |
269
+ |-------|---------|--------|
270
+ | "LinkedIn not connected" | User hasn't connected LinkedIn | Direct user to /profile to connect |
271
+ | "Token expired" | OAuth token expired | User must reconnect at /profile |
272
+ | "Missing required scope" | New permissions needed | User must reconnect at /profile |
273
+ | "Rate limit exceeded" | Hit API rate limits | Wait for retry-after period |
274
+ | "Permission denied" | Insufficient org permissions | User needs ADMINISTRATOR or CONTENT_ADMIN role |
275
+ | "Image/Video file not found" | Invalid file path | Check file path and permissions |
276
+ | "Video file too large" | Video exceeds 5GB | Reduce video size |
277
+
278
+ ## Required OAuth Scopes
279
+
280
+ The following scopes are automatically requested during OAuth flow:
281
+ - `openid` - User authentication
282
+ - `profile` - Access to profile information
283
+ - `email` - Access to user email
284
+ - `w_member_social` - Create posts and share content
285
+ - `r_member_social` - Read posts, analytics, engagement data
286
+ - `r_1st_connections` - View connections list
287
+ - `r_liteprofile` - View person profiles
288
+ - `w_organization_social` - Post as organization
289
+ - `r_organization_social` - Read organization posts
290
+ - `rw_organization_admin` - Manage organization, view analytics
291
+
292
+ ## Agent Task Examples
293
+
294
+ ### Example 1: Post completion update
295
+
296
+ When asked to "post to LinkedIn about completing ticket #123":
297
+
298
+ ```bash
299
+ agentdev linkedin post create --text "✅ Completed ticket #123: Fixed authentication bug in the login flow"
300
+ ```
301
+
302
+ ### Example 2: Share blog post
303
+
304
+ When asked to "share this blog post on LinkedIn":
305
+
306
+ ```bash
307
+ agentdev linkedin post create \
308
+ --text "New blog post about our latest features! 🚀" \
309
+ --url "https://blog.example.com/new-features" \
310
+ --url-title "Latest Features Update - February 2026"
311
+ ```
312
+
313
+ ### Example 3: Post with video
314
+
315
+ When asked to "share the demo video on LinkedIn":
316
+
317
+ ```bash
318
+ agentdev linkedin post create \
319
+ --text "Check out our new feature demo!" \
320
+ --video ./demos/feature-demo.mp4 \
321
+ --thumbnail ./demos/thumbnail.jpg
322
+ ```
323
+
324
+ ### Example 4: Check post performance
325
+
326
+ When asked to "how is my latest LinkedIn post performing?":
327
+
328
+ ```bash
329
+ # First, get the post URN
330
+ agentdev linkedin post list --count 1
331
+
332
+ # Then get analytics
333
+ agentdev linkedin analytics post "urn:li:share:123456"
334
+ ```
335
+
336
+ ### Example 5: Post as company
337
+
338
+ When asked to "post this announcement on the company LinkedIn page":
339
+
340
+ ```bash
341
+ agentdev linkedin org post \
342
+ --id 12345 \
343
+ --text "We're hiring! Join our amazing team of engineers."
344
+ ```
345
+
346
+ ### Example 6: Grow network
347
+
348
+ When asked to "send a connection request to john@example.com":
349
+
350
+ ```bash
351
+ agentdev linkedin connections send \
352
+ --email "john@example.com" \
353
+ --message "I enjoyed our conversation at the conference. Let's stay in touch!"
354
+ ```
355
+
356
+ ### Example 7: Clean up old posts
357
+
358
+ When asked to "delete my LinkedIn post from last week":
359
+
360
+ ```bash
361
+ # First, find the post
362
+ agentdev linkedin post list --count 10
363
+
364
+ # Then delete it (with confirmation)
365
+ agentdev linkedin post delete "urn:li:share:123456" --confirm
366
+ ```
367
+
368
+ ### Example 8: Monitor engagement
369
+
370
+ When asked to "show me who reacted to my latest post":
371
+
372
+ ```bash
373
+ # Get the latest post
374
+ agentdev linkedin post list --count 1
375
+
376
+ # Check reactions breakdown
377
+ agentdev linkedin analytics reactions "urn:li:share:123456"
378
+
379
+ # Check comments
380
+ agentdev linkedin analytics comments "urn:li:share:123456"
381
+ ```
382
+
383
+ ## Notes
384
+
385
+ - All posts are created as the authenticated user (unless using org commands)
386
+ - Image uploads use a 2-step process (register → upload → attach to post)
387
+ - Video uploads use multi-part chunked upload (4MB chunks)
388
+ - Post IDs are returned on successful creation
389
+ - Token refresh is handled automatically when tokens expire
390
+ - Organization features require appropriate roles and permissions
391
+ - Analytics data may take time to populate after posting
392
+ - Deleted posts cannot be recovered
393
+ - Edited posts show as "Edited" on LinkedIn
394
+
395
+ ## Troubleshooting
396
+
397
+ ### "Missing required scope: r_member_social"
398
+
399
+ User needs to reconnect LinkedIn at /profile to grant new permissions. The OAuth scopes were recently expanded to support analytics and advanced features.
400
+
401
+ ### "You don't have permission to post as this organization"
402
+
403
+ User must have one of these roles on the organization:
404
+ - ADMINISTRATOR
405
+ - CONTENT_ADMIN
406
+ - DIRECT_SPONSORED_CONTENT_POSTER
407
+
408
+ Ask the organization admin to grant appropriate permissions.
409
+
410
+ ### Video upload fails
411
+
412
+ Check:
413
+ 1. File format is MP4
414
+ 2. File size is between 75KB and 5GB
415
+ 3. File path is correct and accessible
416
+ 4. Video duration is between 3 seconds and 30 minutes
417
+
418
+ ### Connection request fails
419
+
420
+ LinkedIn may throttle connection requests if:
421
+ - Too many requests sent in a short period
422
+ - Recipient has blocked connection requests
423
+ - Account is flagged for suspicious activity
424
+
425
+ Wait before sending more requests and ensure requests are personalized.