SOCIAL(1)General Commands ManualSOCIAL(1)
social
InstallL1

Let your agent run LinkedIn & X for you

$ social linkedin sql "SELECT sender_name, text FROM li_messages ORDER BY created_at DESC LIMIT 20"$ social x sql "SELECT sender_username, text FROM x_messages ORDER BY created_at DESC LIMIT 20"

Paste the install prompt into Claude or Codex—no terminal required. Prefer the shell? The terminal installer is still available.

Use Casesscale presence · outreach & B2B pipeline · run programs · audience insightsL24
Scale your presence
post · cadence
Draft and ship across X and LinkedIn on a steady cadence — the agent keeps it warm even the weeks you'd have dropped it.
$ echo "shipped today ..." | social x post
Outreach & B2B pipeline
reactions · connect · message
See who's engaging your posts, then connect and reach the ten people worth a message this week.
$ echo "loved your post on ..." | social linkedin requests send "<profile>"
Run programs
json · pipe · schedule
Every command speaks JSON, so the agent can wire posting, follow-ups, and replies into scripts it runs on a schedule.
$ social linkedin reactions "$id" --limit 100 --offset 0 | jq '.items[]'
Audience insights
posts · comments · report
Read your posts and the people engaging them, learn what lands, and get the takeaways back — not raw rows, but what to do next.
$ social linkedin posts <user-id> --limit 25 --offset 0 | jq '.items[]'
LinkedInsocial linkedin · profiles • connections • posts · companies · sync + sqlL42
content
postCreate a post (text via stdin).✎ write
comment <target>Comment on a post (text via stdin).✎ write
react <target> [type=like]React to a post or comment.✎ write
posts <target>List a user's or company's live posts; costs usage.
comments <target>List a post's comments; pages by offset.
reactions <target>List a post's reactions; pages by offset.
people
profile [target]Fetch a profile.
connections [target]List live connections; omit target for self.
requests send <target>Send a connection request (optional note via stdin).✎ write
requests accept request_id:<id>Accept a received connection request.✎ write
requests cancel request_id:<id>Cancel or refuse a connection request.✎ write
messages
message <target>Send to a person or conversation (text via stdin).✎ write
messages <target> mark readMark a conversation read.✎ write
messages <target> mark unreadMark a conversation unread.✎ write
mirror
sync [collection]Pull your own data into the local mirror.
sql [query]Query local LinkedIn tables for free.
companies
company <target>Fetch a company profile.
jobs <target>List a company's job postings; pages by offset.

Accountssocial account connect linkedin · social account reconnect linkedin <account> · social account disconnect linkedin <account> · social account billing · social account. Connect, re-auth, inspect billing, and list the accounts on this network.

Xsocial x · profiles • followers · sync + sqlL70
content
postCreate a post (text via stdin).✎ write
repost <target>Repost a post.✎ write
unrepost <target>Undo a repost.✎ write
like <target>Like a post.✎ write
unlike <target>Unlike a post.✎ write
tweet <target>Fetch a single post.
tweets <target>List a user's live recent posts; costs usage.
discovery
bookmark <target>Add a bookmark.✎ write
unbookmark <target>Remove a bookmark.✎ write
people
profile [target]Fetch a profile.
followers [target]List live followers; omit target for self.
following [target]List live following; omit target for self.
follow <target>Follow a user.✎ write
unfollow <target>Unfollow a user.✎ write
mirror
sync [collection]Pull your own data into the local mirror.
sql [query]Query local X tables for free.
messages
message <recipients>Send a DM; comma-separate recipients to start a group (text via stdin).✎ write

Accountssocial account connect x · social account reconnect x <account> · social account disconnect x <account> · social account billing · social account. Connect, re-auth, inspect billing, and list the accounts on this network.

ScriptingL92
warm-contacts.sh
Composable with the tools you already use. Every command speaks JSON. Pipe through jq, fzf, your agent's planner — anything that reads stdin.
Shared command patterns across both networks. --limit bounds pages, LinkedIn list reads use --offset, and offset responses can expose .meta.totalCount. Cursor-based reads use --cursor and .meta.cursor; cacheable reads also take -H "Cache-Control: no-cache" for fresh upstream reads.
Repeated exploration can get cheaper. Allowlisted GET reads can hit cache when your agent asks the same question again, so those repeat hits cost $0.
Designed for agents first. Deterministic exit codes, structured errors, and a SKILL.md you drop straight into Claude, Codex, or any other agent.
Cachingcache hits are free · default TTL 15mL108

Agents tend to ask the same read questions while exploring. social has two read layers: live proxy reads, where selected repeats can hit cache, and the local mirror, where synced data can be queried for free with SQL.

proxy
Live read commands go through the proxy cache. Repeated allowlisted GET reads can return before upstream billing because they do not call LinkedIn or X.
mirror
sync pulls your own data into the local mirror and can spend usage. sql queries that mirror read-only, returns the standard envelope, and omits meta.cost.
ttl
The default TTL is 15 minutes. Change it with social account config cache ttl {total_in_seconds}.
fresh
Pass -H "Cache-Control: no-cache" on cacheable read commands when freshness matters. It skips the cached read and refreshes the stored response after a successful upstream call.
directives
no-store bypasses cache read and write; max-age=<seconds> overrides the TTL for one request.
validators
Cached responses may preserve ETag and Last-Modified. The request cache surface is still Cache-Control; use no-cache for a fresh upstream read.
freshness
Proxy reads expose cache status from headers. Local mirror reads expose table freshness in meta.cache.tables, including last sync time and age.
Environmentaccount · scope · billing · configL124
~/.social/credentials.json
Your session token, scope, and capabilities — written mode 0600. Stored in your OS keyring when one is available; this file is the fallback.
scope
Chosen at social account login: read,write (default) or read. Carried in the token and revocable with social account logout — there is no ambient write access.
--account <username>
Pick which connected account a command runs as when more than one is connected.
-H, --header <name: value>
Set a cache header on a read command. Use Cache-Control: no-cache, no-store, or max-age=<seconds> when the command lists --header.
Account Safetybuilt so your accounts outlive your prototypeL140
scope
read,write by default
Login defaults to read,write. Clear Write in the prompt for a session that can't post, invite, or follow.
proxy
residential, per account
Every account runs over a dedicated residential IP with smart rate-limiting, so the platform sees a normal human session — not a datacenter.
spend
metered & auditable
Every upstream proxy call is metered; cache hits are logged at $0. Audit it any time with social account billing, social account usage, and social account logs — nothing happens on your accounts you can't see.
For the operational model behind LinkedIn sessions, rate limits, and write-surface rules, read LinkedIn Account Safety.
See AlsoL172
AuthorsL178

Built by @CyrusNewDay because it's a tool he needed.