Skip to content

Posting tech stories to X on autopilot

The Post 5 tech stories to X a day template runs every morning. It reads Show HN and GitHub, picks 3 Show HN stories and 2 GitHub repos, writes an X post for each and schedules the posts for 8am, 10am, 12pm, 4pm and 8pm. Nobody reviews them first.

It needs three things:

  1. An X channel. On the Schedule X posts node, pick it as the destination. Full automation takes exactly one destination.
  2. An LLM channel. One is needed to choose the stories and write the posts.
  3. The Publish scheduled posts workflow, active. A scheduled post is published by whichever publish pass runs after its time. That template runs one every 15 minutes, so a post can go out up to 15 minutes late. If it is not running, the posts wait on the board in Reviewed until something publishes them.

On Best of tech:

SettingMeaning
Picks per boardshowhn:3, github:2. Each board is judged against its own shortlist, so a board with lower numbers is not crowded out. If the model returns the wrong mix, the rest of that board is picked on score and the digest card says the picks were not all editorial. At most 10 in total. Blank picks 2 from any board, as before.
BoardsLeave blank: with a quota, only the boards the quota names are read. A quota naming a board this field leaves out stops the run.

On Write somewhere (dispatch):

SettingMeaning
Auto publishOn: each new post is scheduled instead of left a draft. Only for post destinations; any other destination stops the run.
Publishing timesComma-separated: 8am, 8:30pm or 20:00. 12pm is noon, 12am is midnight. A time that cannot be read stops the run and names it.
TimezoneAn IANA name such as Europe/Paris. Blank means UTC. Set the same zone on the morning trigger, or the run and the times drift apart by the offset.

A story can stay near the top of a board for days. Before picking, the node reads your 500 most recently updated posts and removes any story one of them is already about. That covers drafts, scheduled posts, published posts and archived ones, whether the post came from this workflow or not. Its place in the quota goes to the next fresh story, so a repeat costs nothing.

URLs are compared as stories, not strings: www., a trailing slash, #anchors and tracking parameters (utm_*, ref, …) are ignored, and a GitHub link is reduced to its owner and repo. The same repo on Show HN and on GitHub in one run is also one story. The board listed first in the quota keeps it, and the other board picks its next story.

Archive a post to reject its story for good. Delete the post if you want the story to be picked again.

The times become the next occurrence of each one after the run, sorted. The first new post takes the earliest, the second the next, and so on. Stories arrive Show HN first, so with the defaults the 3 Show HN posts go out in the morning and the 2 GitHub posts in the afternoon.

  • A time already past today means tomorrow. A manual run at 11:00 schedules 12pm, 4pm and 8pm today, then 8am and 10am tomorrow, earliest first. Nothing is ever scheduled in the past, which would publish at once.
  • A story already posted never reaches this step (see above). As a last guard, an exact repeat of a URL is still skipped here, and it does not use up a time.
  • A post that breaks X’s rules (too long, say) stays a draft and gives its time to the next post. The same rules apply as when you move a card to Reviewed yourself.
  • More posts than times: the extra posts stay drafts.

Scheduled posts are ordinary cards in Reviewed with a due date. To stop one, move it back to Draft before its time.