GitHub Action (signed release webhook) · X

Announce GitHub releases on X, after review

Release announcements are the posts maintainers forget most often, and the ones users look for. The socialhandoff-announce-action action sends each published GitHub release to SocialHandoff, which drafts X posts from your release rule and cites the release in the audit log. You approve from your phone, and the thread goes out while the release is still fresh. No X token lives in your repository secrets.

Prompt

(Release notes written in the GitHub release body) v1.8.0: Adds a --watch flag that rebuilds on file change. Fixes a crash when the config file is empty. Drops Node 18 support.

How to do it

  1. Create a GitHub trigger In https://app.socialhandoff.com > Connections, add a GitHub release trigger, choose X as the network, and copy the trigger id and signing secret.
  2. Store the secrets Add the server URL, trigger id, and webhook secret as repository secrets in GitHub.
  3. Add the workflow Create .github/workflows/announce.yml that runs on release: published and uses socialhandoff-announce-action with those three inputs. Tag, name, and notes default from the release.
  4. Publish a release The action signs the payload and sends it. A draft for X appears in the inbox, with the release linked as its citation.
  5. Approve Edit the wording if needed, then approve. It posts as a thread if the draft has more than one part.

Example draft

1/ v1.8.0 is out. New --watch flag rebuilds on every file change, so you can leave it running while you work.

2/ Fixed a crash when the config file is empty. Heads up: Node 18 is no longer supported. Notes: https://example.com/releases/v1.8.0

Gotchas

  • Pre-releases also fire the release event if your workflow listens for them. Filter in the workflow if you only want stable versions announced.
  • Long release notes will not fit in 280 characters. The draft is a starting point; trim it in the inbox or turn it into a thread before approving.
  • The webhook is signed. If the secret in GitHub and in Connections differ, the request is rejected and no draft appears.
X
  • Character limit: 280 weighted characters for standard accounts. Most CJK characters and many emoji count as 2. Premium accounts can post longer, but SocialHandoff checks against 280.
  • Links: Every URL is wrapped by t.co and counts as 23 characters, whatever its real length.
  • Media per post: Up to 4 images, or 1 GIF, or 1 video.
  • File sizes: Images up to 5 MB, GIFs up to 15 MB, video up to 512 MB (uploaded in chunks).
Schedule tweets and X threads with a human approval step

Frequently asked questions

Can releases publish to X automatically?
Only after you promote the trigger's agent on the trust ladder for X. Until then, every release waits for approval.
Does this need a hosted account?
No. The action works with the hosted app or a self-hosted server that GitHub can reach.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial