Linkedin Pipedream
by @g9pedro
Post to LinkedIn, comment, like, search organizations, and manage profiles via Pipedream OAuth integration.
clawhub install linkedin-pipedreamπ About This Skill
name: linkedin-pipedream description: Post to LinkedIn, comment, like, search organizations, and manage profiles via Pipedream OAuth integration. homepage: https://mcp.pipedream.com metadata: { "openclaw": { "emoji": "πΌ", "requires": { "bins": ["pdauth"], "skills": ["pdauth"] }, "install": [ { "id": "pdauth-dep", "kind": "skill", "skill": "pdauth", "label": "Install pdauth skill first", }, ], }, }
LinkedIn via Pipedream β Post, Comment & Engage
Full LinkedIn automation using Pipedream's OAuth infrastructure. Post as yourself or your organization, comment on posts, search companies, and more.
Prerequisites
1. pdauth CLI installed and configured β see pdauth skill 2. LinkedIn account connected via OAuth
Quick Start
# 1. Connect LinkedIn (generates OAuth link for user to click)
pdauth connect linkedin --user telegram:54396890352. After user authorizes, verify connection
pdauth status --user telegram:54396890353. Post to LinkedIn
pdauth call linkedin.linkedin-create-text-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create a post: Excited to announce our new product launch! π"}'
OAuth Flow
# Generate OAuth link
pdauth connect linkedin --user USER_IDShare with user: "Click to authorize LinkedIn: "
User clicks β authorizes via LinkedIn β done
Verify connection
pdauth status --user USER_ID
User ID convention: Use telegram: format for Telegram users.
Available Tools (19 total)
β Working via MCP (pdauth call)
| Tool | Purpose |
|------|---------|
| linkedin-create-text-post-user | Post as personal account |
| linkedin-create-image-post-user | Post with image (personal) |
| linkedin-create-comment | Comment on any post |
| linkedin-create-like-on-share | Like a post |
| linkedin-search-organization | Search for companies |
| linkedin-get-current-member-profile | Get your own profile |
| linkedin-get-member-profile | Get any member's profile |
| linkedin-get-org-member-access | Check org admin status |
| linkedin-retrieve-comments-shares | Get comments on a post |
| linkedin-delete-post | Delete your post |
β οΈ Broken via MCP (requires workaround)
| Tool | Issue | Workaround |
|------|-------|------------|
| linkedin-create-text-post-organization | "tool name too long" bug | Use direct SDK call |
| linkedin-create-image-post-organization | Same bug | Use direct SDK call |
Tool Reference
1. Create Personal Post
pdauth call linkedin.linkedin-create-text-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create a post: Your post content here. Use emojis π and hashtags #AI #Tech"}'
Tips:
2. Create Image Post (Personal)
pdauth call linkedin.linkedin-create-image-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create image post with text: Check out our new office! Image URL: https://example.com/image.jpg"}'
3. Comment on a Post
# Comment using post URN
pdauth call linkedin.linkedin-create-comment \
--user telegram:5439689035 \
--args '{"instruction": "Comment on urn:li:share:7293123456789012480 with text: Great insights! Thanks for sharing."}'
Finding post URNs:
linkedin.com/posts/username_activity-7293123456789012480 β URN is urn:li:share:7293123456789012480linkedin-retrieve-comments-shares on known posts4. Like a Post
pdauth call linkedin.linkedin-create-like-on-share \
--user telegram:5439689035 \
--args '{"instruction": "Like the post urn:li:share:7293123456789012480"}'
5. Search Organizations
pdauth call linkedin.linkedin-search-organization \
--user telegram:5439689035 \
--args '{"instruction": "Search for companies matching: artificial intelligence startups"}'
6. Get Your Profile
pdauth call linkedin.linkedin-get-current-member-profile \
--user telegram:5439689035 \
--args '{"instruction": "Get my LinkedIn profile"}'
Returns: name, headline, URN, vanity name, etc.
7. Get Member Profile
pdauth call linkedin.linkedin-get-member-profile \
--user telegram:5439689035 \
--args '{"instruction": "Get profile for member URN urn:li:person:30_5n7bx7f"}'
8. Check Organization Admin Access
pdauth call linkedin.linkedin-get-org-member-access \
--user telegram:5439689035 \
--args '{"instruction": "Check my access level for organization 105382747"}'
Returns: ADMINISTRATOR, MEMBER, or NONE
9. Get Comments on a Post
pdauth call linkedin.linkedin-retrieve-comments-shares \
--user telegram:5439689035 \
--args '{"instruction": "Get comments for post urn:li:share:7293123456789012480"}'
10. Delete a Post
pdauth call linkedin.linkedin-delete-post \
--user telegram:5439689035 \
--args '{"instruction": "Delete post urn:li:share:7293123456789012480"}'
Organization Posting (Workaround Required)
The Bug
linkedin-create-text-post-organization fails via MCP with:
Error: tool name too long
This is a Pipedream MCP bug, not a LinkedIn API issue.
Workaround: Direct SDK Call
Create a Node.js script to post as organization:
// org-post.mjs
import { PipedreamClient } from '@pipedream/sdk';const client = new PipedreamClient({
projectEnvironment: 'development',
clientId: 'YOUR_CLIENT_ID', // from ~/.config/pdauth/config.json
clientSecret: 'YOUR_CLIENT_SECRET',
projectId: 'YOUR_PROJECT_ID',
});
async function postAsOrg(orgId, text) {
const result = await client.actions.run({
id: 'linkedin-create-text-post-organization',
externalUserId: 'telegram:5439689035',
configuredProps: {
linkedin: { authProvisionId: 'apn_4vhLGx4' }, // LinkedIn account ID
organizationId: orgId,
text: text,
},
});
console.log('Posted!', result);
}
// Example usage
postAsOrg('105382747', 'Hello from Versatly! π');
Run with:
node org-post.mjs
Known Organization IDs
| Organization | ID | URN | |--------------|-----|-----| | Versatly | 105382747 | urn:li:organization:105382747 |
Key Reference Values
Pedro's LinkedIn Info
| Item | Value |
|------|-------|
| Member URN | urn:li:person:30_5n7bx7f |
| User ID (Pipedream) | telegram:5439689035 |
| Auth Provision ID | apn_4vhLGx4 |
| Admin of | Versatly (org 105382747) |
URN Formats
| Type | Format | Example |
|------|--------|---------|
| Person | urn:li:person:ID | urn:li:person:30_5n7bx7f |
| Organization | urn:li:organization:ID | urn:li:organization:105382747 |
| Post/Share | urn:li:share:ID | urn:li:share:7293123456789012480 |
| Comment | urn:li:comment:(urn:li:share:ID,ID) | Complex nested URN |
Common Patterns
Pattern 1: Post and Verify
# Post
pdauth call linkedin.linkedin-create-text-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create post: Just shipped a new feature! π"}'The response includes the post URN - save it for later
Pattern 2: Engage with Content
# Find posts to engage with (manual: get URN from LinkedIn URL)
Like the post
pdauth call linkedin.linkedin-create-like-on-share \
--user telegram:5439689035 \
--args '{"instruction": "Like post urn:li:share:7293123456789012480"}'Comment
pdauth call linkedin.linkedin-create-comment \
--user telegram:5439689035 \
--args '{"instruction": "Comment on urn:li:share:7293123456789012480: Congrats on the launch!"}'
Pattern 3: Research a Company
# Search for the company
pdauth call linkedin.linkedin-search-organization \
--user telegram:5439689035 \
--args '{"instruction": "Search for OpenAI"}'Check if you have admin access (for orgs you manage)
pdauth call linkedin.linkedin-get-org-member-access \
--user telegram:5439689035 \
--args '{"instruction": "Check access for organization 12345678"}'
Error Handling
Common Errors
| Error | Cause | Solution |
|-------|-------|----------|
| App not connected | No LinkedIn OAuth | Run pdauth connect linkedin --user USER_ID |
| tool name too long | MCP bug for org tools | Use direct SDK workaround |
| 403 Forbidden | No permission for action | Check org admin status |
| Invalid URN | Malformed URN format | Use correct format: urn:li:type:id |
| Rate limited | Too many API calls | Wait and retry (LinkedIn limits ~100 calls/day) |
Checking Connection Status
# Quick status check
pdauth status --user telegram:5439689035JSON output for parsing
pdauth status --user telegram:5439689035 --json
Reconnecting
If OAuth expires or breaks:
pdauth disconnect linkedin --user telegram:5439689035
pdauth connect linkedin --user telegram:5439689035
Share new link with user
Best Practices
1. Rate Limits: LinkedIn is strict. Space out bulk operations. 2. Content Quality: LinkedIn penalizes spammy content. Write thoughtfully. 3. Org Posting: Always verify admin access before attempting org posts. 4. URN Handling: Always validate URN format before API calls. 5. Error Recovery: If a post fails, check status before retrying (may have succeeded).
Example Workflow: Complete LinkedIn Campaign
# 1. Verify connection
pdauth status --user telegram:54396890352. Check org admin status
pdauth call linkedin.linkedin-get-org-member-access \
--user telegram:5439689035 \
--args '{"instruction": "Check access for organization 105382747"}'3. Post personal announcement
pdauth call linkedin.linkedin-create-text-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create post: Thrilled to share that Versatly just launched our new AI assistant! π€ #AI #Startup"}'4. Post as organization (use SDK workaround)
β Run org-post.mjs script
5. Engage with relevant industry posts
pdauth call linkedin.linkedin-create-comment \
--user telegram:5439689035 \
--args '{"instruction": "Comment on urn:li:share:XXXXX: Great perspective on AI safety!"}'
Files & Configuration
| File | Purpose |
|------|---------|
| ~/.config/pdauth/config.json | Pipedream credentials |
| ~/.openclaw/workspace/pdauth/ | pdauth CLI source |
| ~/.openclaw/workspace/skills/pdauth/SKILL.md | pdauth skill reference |
See Also
π‘ Examples
# 1. Connect LinkedIn (generates OAuth link for user to click)
pdauth connect linkedin --user telegram:54396890352. After user authorizes, verify connection
pdauth status --user telegram:54396890353. Post to LinkedIn
pdauth call linkedin.linkedin-create-text-post-user \
--user telegram:5439689035 \
--args '{"instruction": "Create a post: Excited to announce our new product launch! π"}'
βοΈ Configuration
1. pdauth CLI installed and configured β see pdauth skill 2. LinkedIn account connected via OAuth
π Tips & Best Practices
1. Rate Limits: LinkedIn is strict. Space out bulk operations. 2. Content Quality: LinkedIn penalizes spammy content. Write thoughtfully. 3. Org Posting: Always verify admin access before attempting org posts. 4. URN Handling: Always validate URN format before API calls. 5. Error Recovery: If a post fails, check status before retrying (may have succeeded).