{"id":"16f79da9-6b05-482d-a19d-9cfb8b0fc907","shortId":"urs6ED","kind":"skill","title":"linkedin-automation","tagline":"Automate LinkedIn tasks via Rube MCP (Composio): create posts, manage profile, company info, comments, and image uploads. Always search tools first for current schemas.","description":"# LinkedIn Automation via Rube MCP\n\nAutomate LinkedIn operations through Composio's LinkedIn toolkit via Rube MCP.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active LinkedIn connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `linkedin`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `linkedin`\n3. If connection is not ACTIVE, follow the returned auth link to complete LinkedIn OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Create a LinkedIn Post\n\n**When to use**: User wants to publish a text post on LinkedIn\n\n**Tool sequence**:\n1. `LINKEDIN_GET_MY_INFO` - Get authenticated user's profile info [Prerequisite]\n2. `LINKEDIN_REGISTER_IMAGE_UPLOAD` - Register image upload if post includes an image [Optional]\n3. `LINKEDIN_CREATE_LINKED_IN_POST` - Publish the post [Required]\n\n**Key parameters**:\n- `text`: Post content text\n- `visibility`: 'PUBLIC' or 'CONNECTIONS'\n- `media_title`: Title for attached media\n- `media_description`: Description for attached media\n\n**Pitfalls**:\n- Must retrieve user profile URN via GET_MY_INFO before creating a post\n- Image uploads require a two-step process: register upload first, then include the asset in the post\n- Post text has character limits enforced by LinkedIn API\n- Visibility defaults may vary; always specify explicitly\n\n### 2. Get Profile Information\n\n**When to use**: User wants to retrieve their LinkedIn profile or company details\n\n**Tool sequence**:\n1. `LINKEDIN_GET_MY_INFO` - Get authenticated user's profile [Required]\n2. `LINKEDIN_GET_COMPANY_INFO` - Get company page details [Optional]\n\n**Key parameters**:\n- No parameters needed for GET_MY_INFO (uses authenticated user)\n- `organization_id`: Company/organization ID for GET_COMPANY_INFO\n\n**Pitfalls**:\n- GET_MY_INFO returns the authenticated user only; cannot look up other users\n- Company info requires the numeric organization ID, not the company name or vanity URL\n- Some profile fields may be restricted based on OAuth scopes granted\n\n### 3. Manage Post Images\n\n**When to use**: User wants to upload and attach images to LinkedIn posts\n\n**Tool sequence**:\n1. `LINKEDIN_REGISTER_IMAGE_UPLOAD` - Register an image upload with LinkedIn [Required]\n2. Upload the image binary to the returned upload URL [Required]\n3. `LINKEDIN_GET_IMAGES` - Verify uploaded image status [Optional]\n4. `LINKEDIN_CREATE_LINKED_IN_POST` - Create post with the image asset [Required]\n\n**Key parameters**:\n- `owner`: URN of the image owner (user or organization)\n- `image_id`: ID of the uploaded image for GET_IMAGES\n\n**Pitfalls**:\n- The upload is a two-phase process: register then upload binary\n- Image asset URN from registration must be used when creating the post\n- Supported formats typically include JPG, PNG, and GIF\n- Large images may take time to process before they are available\n\n### 4. Comment on Posts\n\n**When to use**: User wants to comment on an existing LinkedIn post\n\n**Tool sequence**:\n1. `LINKEDIN_CREATE_COMMENT_ON_POST` - Add a comment to a post [Required]\n\n**Key parameters**:\n- `post_id`: The URN or ID of the post to comment on\n- `text`: Comment content\n- `actor`: URN of the commenter (user or organization)\n\n**Pitfalls**:\n- Post ID must be a valid LinkedIn URN format\n- The actor URN must match the authenticated user or a managed organization\n- Rate limits apply to comment creation; avoid rapid-fire comments\n\n### 5. Delete a Post\n\n**When to use**: User wants to remove a previously published LinkedIn post\n\n**Tool sequence**:\n1. `LINKEDIN_DELETE_LINKED_IN_POST` - Delete the specified post [Required]\n\n**Key parameters**:\n- `post_id`: The URN or ID of the post to delete\n\n**Pitfalls**:\n- Deletion is permanent and cannot be undone\n- Only the post author or organization admin can delete a post\n- The post_id must be the exact URN returned when the post was created\n\n## Common Patterns\n\n### ID Resolution\n\n**User URN from profile**:\n```\n1. Call LINKEDIN_GET_MY_INFO\n2. Extract user URN (e.g., 'urn:li:person:XXXXXXXXXX')\n3. Use URN as actor/owner in subsequent calls\n```\n\n**Organization ID from company**:\n```\n1. Call LINKEDIN_GET_COMPANY_INFO with organization_id\n2. Extract organization URN for posting as a company page\n```\n\n### Image Upload Flow\n\n- Call REGISTER_IMAGE_UPLOAD to get upload URL and asset URN\n- Upload the binary image to the provided URL\n- Use the asset URN when creating a post with media\n- Verify with GET_IMAGES if upload status is uncertain\n\n## Known Pitfalls\n\n**Authentication**:\n- LinkedIn OAuth tokens have limited scopes; ensure required permissions are granted\n- Tokens expire; re-authenticate if API calls return 401 errors\n\n**URN Formats**:\n- LinkedIn uses URN identifiers (e.g., 'urn:li:person:ABC123')\n- Always use the full URN format, not just the alphanumeric ID portion\n- Organization URNs differ from person URNs\n\n**Rate Limits**:\n- LinkedIn API has strict daily rate limits on post creation and comments\n- Implement backoff strategies for bulk operations\n- Monitor 429 responses and respect Retry-After headers\n\n**Content Restrictions**:\n- Posts have character limits enforced by the API\n- Some content types (polls, documents) may require additional API features\n- HTML markup in post text is not supported\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Get my profile | LINKEDIN_GET_MY_INFO | (none) |\n| Create post | LINKEDIN_CREATE_LINKED_IN_POST | text, visibility |\n| Get company info | LINKEDIN_GET_COMPANY_INFO | organization_id |\n| Register image upload | LINKEDIN_REGISTER_IMAGE_UPLOAD | owner |\n| Get uploaded images | LINKEDIN_GET_IMAGES | image_id |\n| Delete post | LINKEDIN_DELETE_LINKED_IN_POST | post_id |\n| Comment on post | LINKEDIN_CREATE_COMMENT_ON_POST | post_id, text, actor |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["linkedin","automation","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-linkedin-automation","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/linkedin-automation","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34726 github stars · SKILL.md body (6,518 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T12:51:10.111Z","embedding":null,"createdAt":"2026-04-18T21:39:57.451Z","updatedAt":"2026-04-23T12:51:10.111Z","lastSeenAt":"2026-04-23T12:51:10.111Z","tsv":"'/mcp':82 '1':102,149,168,293,392,520,609,674,701 '2':114,180,274,304,404,680,710 '3':122,194,373,415,689 '4':137,424,502 '401':784 '429':836 '5':591 'abc123':796 'action':954 'activ':54,127,142 'actor':550,569,941 'actor/owner':693 'add':79,96,526 'addit':861 'admin':647 'alphanumer':806 'alway':21,64,271,797 'api':92,266,781,818,853,862 'appli':582 'applic':948 'ask':992 'asset':254,435,472,732,744 'attach':218,224,385 'auth':131 'authent':174,299,324,340,574,763,779 'author':644 'autom':3,4,29,33 'avail':53,107,501 'avoid':586 'backoff':830 'base':368 'binari':408,470,736 'boundari':1000 'bulk':833 'call':65,115,675,696,702,723,782 'cannot':343,638 'charact':261,848 'clarif':994 'clear':967 'client':89 'comment':17,503,512,523,528,545,548,554,584,590,828,930,935 'common':666 'compani':15,289,307,310,332,348,357,700,705,718,897,901 'company/organization':328 'complet':134 'composio':10,37 'configur':90 'confirm':109,138 'connect':49,56,60,118,124,139,213 'content':208,549,844,855 'core':147 'creat':11,150,196,237,426,430,480,522,665,747,887,890,934 'creation':585,826 'criteria':1003 'current':26,72 'daili':821 'default':268 'delet':592,611,615,632,634,649,921,924 'describ':955,971 'descript':221,222 'detail':290,312 'differ':811 'document':858 'e.g':684,792 'endpoint':98 'enforc':263,850 'ensur':770 'environ':983 'environment-specif':982 'error':785 'exact':658 'execut':950 'exist':515 'expert':988 'expir':776 'explicit':273 'extract':681,711 'featur':863 'field':364 'fire':589 'first':24,69,250 'flow':722 'follow':128 'format':484,567,787,802 'full':800 'get':71,76,170,173,233,275,295,298,306,309,320,331,335,417,456,677,704,728,754,879,883,896,900,913,917 'gif':490 'grant':372,774 'header':843 'html':864 'id':327,329,354,449,450,536,540,560,623,627,654,668,698,709,807,904,920,929,939 'identifi':791 'imag':19,183,186,192,240,376,386,395,399,407,418,421,434,443,448,454,457,471,492,720,725,737,755,906,910,915,918,919 'implement':829 'includ':190,252,486 'info':16,172,178,235,297,308,322,333,337,349,679,706,885,898,902 'inform':277 'input':997 'jpg':487 'key':93,204,314,437,533,620,877 'known':761 'larg':491 'li':686,794 'limit':262,581,768,816,823,849,959 'link':132,197,427,612,891,925 'linkedin':2,5,28,34,39,55,63,121,135,152,165,169,181,195,265,286,294,305,388,393,402,416,425,516,521,565,605,610,676,703,764,788,817,882,889,899,908,916,923,933 'linkedin-autom':1 'look':344 'manag':13,59,117,374,578 'markup':865 'match':572,968 'may':269,365,493,859 'mcp':9,32,43,46,78,85,105 'media':214,219,220,225,751 'miss':1005 'monitor':835 'must':47,227,476,561,571,655 'name':358 'need':94,318 'none':886 'numer':352 'oauth':136,370,765 'oper':35,834 'option':193,313,423 'organ':326,353,447,557,579,646,697,708,712,809,903 'output':977 'overview':958 'owner':439,444,912 'page':311,719 'param':878 'paramet':205,315,317,438,534,621 'pattern':667 'perman':636 'permiss':772,998 'person':687,795,813 'phase':465 'pitfal':226,334,458,558,633,762 'png':488 'poll':857 'portion':808 'post':12,153,163,189,199,202,207,239,257,258,375,389,429,431,482,505,517,525,531,535,543,559,594,606,614,618,622,630,643,651,653,663,715,749,825,846,867,888,893,922,927,928,932,937,938 'prerequisit':44,179 'previous':603 'process':247,466,497 'profil':14,177,230,276,287,302,363,673,881 'provid':740 'public':211 'publish':160,200,604 'quick':872 'rapid':588 'rapid-fir':587 'rate':580,815,822 're':778 're-authent':777 'refer':873 'regist':182,185,248,394,397,467,724,905,909 'registr':475 'remov':601 'requir':203,242,303,350,403,414,436,532,619,771,860,996 'resolut':669 'respect':839 'respond':113 'respons':837 'restrict':367,845 'retri':841 'retriev':228,284 'retry-aft':840 'return':130,338,411,660,783 'review':989 'rube':8,31,42,45,50,58,66,77,104,110,116 'rube.app':81 'rube.app/mcp':80 'run':144 'safeti':999 'schema':27,74 'scope':371,769,970 'search':22,51,67,111 'sequenc':167,292,391,519,608 'server':86 'setup':75 'show':141 'skill':946,962 'skill-linkedin-automation' 'slug':876 'source-sickn33' 'specif':984 'specifi':272,617 'status':140,422,758 'step':246 'stop':990 'strategi':831 'strict':820 'subsequ':695 'substitut':980 'success':1002 'support':483,871 'take':494 'task':6,874,966 'test':986 'text':162,206,209,259,547,868,894,940 'time':495 'titl':215,216 'token':766,775 'tool':23,52,68,73,112,166,291,390,518,607,875 'toolkit':40,62,120 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':975 'two':245,464 'two-phas':463 'two-step':244 'type':856 'typic':485 'uncertain':760 'undon':640 'upload':20,184,187,241,249,383,396,400,405,412,420,453,460,469,721,726,729,734,757,907,911,914 'url':361,413,730,741 'urn':231,440,473,538,551,566,570,625,659,671,683,685,691,713,733,745,786,790,793,801,810,814 'use':156,280,323,379,478,508,597,690,742,789,798,944,960 'user':157,175,229,281,300,325,341,347,380,445,509,555,575,598,670,682 'valid':564,985 'vaniti':360 'vari':270 'verifi':103,419,752 'via':7,30,41,57,232 'visibl':210,267,895 'want':158,282,381,510,599 'work':101 'workflow':146,148,952 'xxxxxxxxxx':688","prices":[{"id":"4222f2a6-0192-49e9-bc70-044a56d291fb","listingId":"16f79da9-6b05-482d-a19d-9cfb8b0fc907","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:39:57.451Z"}],"sources":[{"listingId":"16f79da9-6b05-482d-a19d-9cfb8b0fc907","source":"github","sourceId":"sickn33/antigravity-awesome-skills/linkedin-automation","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/linkedin-automation","isPrimary":false,"firstSeenAt":"2026-04-18T21:39:57.451Z","lastSeenAt":"2026-04-23T12:51:10.111Z"}],"details":{"listingId":"16f79da9-6b05-482d-a19d-9cfb8b0fc907","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"linkedin-automation","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34726,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"fbf0ec6db956750e999e4104e4e1fcc1057b3f4a","skill_md_path":"skills/linkedin-automation/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/linkedin-automation"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"linkedin-automation","description":"Automate LinkedIn tasks via Rube MCP (Composio): create posts, manage profile, company info, comments, and image uploads. Always search tools first for current schemas."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/linkedin-automation"},"updatedAt":"2026-04-23T12:51:10.111Z"}}