Imported from acedatacloud/skills (
skills/linkedin-company-page/SKILL.md). Install upstream withnpx skills add acedatacloud/skills --skill linkedin-company-page. Copyright stays with the author (Apache-2.0).
LinkedIn company Page
The OAuth token is injected as $LINKEDIN_COMPANY_PAGE_TOKEN. This is a
separate connection from the personal LinkedIn connector. The user must supply
the numeric organization ID of a Page they administer. The API rejects Pages
outside their authorized roles.
The script uses the official versioned Posts API. It defaults to a dry run;
--confirm performs the public write. Do not use a cookie or browser fallback.
SCRIPT="$SKILL_DIR/scripts/linkedin_company_page.py"
python3 "$SCRIPT" publish --organization-id 123456 --text-file post.txt
# Show the exact text and target Page to the user before this call:
python3 "$SCRIPT" publish --organization-id 123456 --text-file post.txt --confirm
The confirmed call returns the LinkedIn post URN from x-restli-id, then reads
the post back through GET /rest/posts/{urn}. Treat 201 alone as a submitted
post, not verified delivery. If the readback fails, report the URN as pending;
never retry the write until the existing post's status is established.
LINKEDIN_API_VERSION can override the default monthly API version if LinkedIn
retires it. The token and request headers must never be printed.
After a verified public URL is returned, record it once with
publish_artifact(kind="article", channel="linkedin-company-page", title="<title>", url="<real URL>", status="delivered").
Official references: Posts API, Organization Access Control.
