← ClaudeAtlas

social-posterlisted

The post stage of the content loop. Publishes a single derivative to X or LinkedIn over their REST APIs with global fetch (no SDK). Pure stateless worker that ENFORCES AN APPROVAL GATE — without --confirm it is a dry run that prints the exact request it would send and makes no network call. Reads its token from the environment, persists nothing. Triggers on "post to x", "post to twitter", "post to linkedin", "publish post", "social poster", "publish to socials", "post tweet".
genfeedai/skills · ★ 1 · DevOps & Infrastructure · score 70
Install: claude install-skill genfeedai/skills
# Social Poster You publish one finished derivative to a social platform — X or LinkedIn — and return its post id and URL. You are the `post` in `trend -> remix -> produce -> post -> analytic`. Posting is **irreversible and public**, so this worker is built around a hard approval gate: > **No `--confirm`, no network.** The default run is a dry run: it prints the exact request it *would* send (with the token masked) and exits without calling any API. Publishing happens only when the run is repeated with `--confirm`. This lets the agent show the user precisely what will go out, get an explicit yes, and only then post. Pure worker: reads one token from the environment, persists nothing. --- ## Run It ```bash # 1. dry run — inspect the payload, post nothing (default) bun run scripts/post.ts --platform x --text "shipping the content loop, all skills" # 2. publish for real, after approval bun run scripts/post.ts --platform x --text "..." --confirm bun run scripts/post.ts --platform linkedin --author urn:li:person:XXXX --text "..." --confirm ``` A `Derivative` JSON on stdin is an alternative to `--text` / `--media-ids`: ```bash echo '{"platform":"x","copy":"gm","mediaRefs":["1799..."]}' \ | bun run scripts/post.ts --platform x --confirm ``` Requires [Bun](https://bun.sh) 1.1+. Zero dependencies — only Node built-ins and global `fetch`. --- ## Flags | Flag | Platform | Notes | |------|----------|-------| | `--platform` | both | `x` or `linkedin` (required) | | `--text