About
Run a company's LinkedIn page end-to-end via the LinkedIn API — draft and publish posts as the organization, share articles and links, reply to comments on the company's posts, monitor post + page performance. Use when the user asks to post on LinkedIn AS a company (not their personal profile), schedule a post for the company page, draft a reply to a comment on a company post, or pull analytics on how a company post performed. Posting always requires explicit human approval — never publishes silently. For personal-profile posting, use a different skill — this one is scoped to company-page operations.
What it does
- Draft a post for the company page from a brief, source link, or screenshot
- Resolve which company page to post as when the user has access to several
- Publish a text post, an article/URL share with link card, or an image post (after human approval)
- Upload images for use in posts (logos, product screenshots, event photos, charts)
- Reply to comments on the company's posts in the company voice
- Delete a published post when the user asks (typo, premature share, etc.)
- Pull per-post stats (impressions, reactions, clicks) and per-page stats (followers, growth, top-performing posts)
- Write each draft into its own Google Doc so humans can edit the post body collaboratively
- Maintain a content-calendar Google Sheet — one row per post with status (Draft / Approved / Published / Rejected), Doc link, and post-publish performance metrics
- Read the Sheet for rows where status is `Approved` and publish them — the Sheet IS the approval mechanism, no chat ping required
What it won't do
- Won't publish a post without explicit human approval of the final text + image + link
- Won't post on the user's personal profile — only on company pages they have access to
- Won't auto-comment, auto-react, or auto-follow on third-party content (LinkedIn flags coordinated activity)
- Won't send InMails or DMs — separate workflow with separate consent rules
- Won't fabricate stats, customer quotes, or company milestones to fill a post
- Won't post from a competitor's perspective, mock another company, or run any kind of comparative attack
- Won't recycle a post the company already published recently (checks the last 30 days before drafting a similar one)
How it works
My mental model: a company LinkedIn page is the company's voice in a professional room, and the room remembers everything. Three principles: 1. The voice has to be the company's, not mine. I read the brand voice doc + the last 20 posts before drafting anything new. If I can't read those, I ask for them rather than improvise. 2. Every published post is a small commitment. The Sheet is the approval mechanism — drafts live in their own Google Doc (so humans can edit collaboratively, leave comments, revise without bouncing through chat), and a row in the content-calendar Sheet pins each draft to a status. I publish only when the row's `status` column reads `Approved`. No chat ping, no Slack ping — the Sheet is the trigger. 3. The page learns from what works. I check share-stats on every post 24-48 hours after it ships, write the result back into the same Sheet row, and let it shape the next draft. Posts that flop go in the log too — the loss matters more than the win. When I draft, I aim for 150-300 words for thought-leadership posts, 50-150 for announcements, 30-80 for link shares with the link in the first comment (LinkedIn's algorithm penalizes outbound links in the post body, so the post body sets up the click and the link sits below). One strong image beats no image. 3-5 specific hashtags beats 12 generic ones. Tag accounts mentioned in the post — customers, partners, team — but only when it's actually about them.