keryx social¶
Compose the copy a piece of an article is announced with, per platform: a
reel's (--workspace <slug>, or --article <dir> --reel <slug>) or a
post's (--article <dir> --post <id>, made with
post new). Both live in the article's
social.json with each outlet's status, due
hour and result.
keryx social set <platform> (--article <dir> (--reel <slug> | --post <id>) | --workspace <slug>) --text "…" [--tags "#a,#b"] [--title …] [--description …] [--link …]
keryx social show (--article <dir> [--reel <slug> | --post <id>] | --workspace <slug>)
keryx social gen (--article <dir> (--reel <slug> | --post <id>) | --workspace <slug>) [--platform <p>]...
keryx social rm <platform> (--article <dir> (--reel <slug> | --post <id>) | --workspace <slug>)
set— the inject path: set a piece's fields on a platform directly. Partial updates preserve untouched fields. Prints constraint warnings (text/title overflow, link clickability).show— list the outlets in scope with per-platform constraint checks (R-SOC-1/2).gen— the LLM path: generate platform-appropriate copy via the configured chat provider (providers.chat.*), one tailored draft per platform (R-SOC-4), not one caption everywhere. A reel is grounded on its storyboard, source and direction as well as the article; a post on the article alone, and a post's image gets alt text if it has none. Without--platformit composes for the piece's own platforms, or, for a piece that targets none yet, for every enabled platform whose publisher can take it (spec 0062 D1).rm— drop a platform from a piece. A piece is for exactly the platforms it has a record on; a posted one cannot be dropped.
Which constraints block, and which only warn¶
Each platform carries a text cap, a title cap, a link-clickability flag and a hashtag
norm. Every field is overridable per platform under
platforms.<name>.constraints.* — see
configuration keys
for the defaults and the key names.
Only text or title overflow blocks: keryx approve refuses that outlet. A title
on a platform with no title field, or a link on a platform where links are not
clickable, is advisory — you get a warning such as
instagram links are not clickable — the URL is kept as the pointer; say "link in bio" and publishing still proceeds.
Status flows draft → approved → posted, per outlet.