CLI command
content queue
The content queue of social and video posts: list what waits, queue a post as a draft or scheduled, edit one or move it back to draft, schedule a queued one at a time or in its account's best measured posting slot, remove one, and publish one to several accounts with each account's outcome.
Invocation#
echo-cli content queue list [--status <status>] [--platform <p>] [--from <time>] [--to <time>] [--limit <n>]
echo-cli content queue add --account <social-account-id> --platform <p> --type <content type> [--caption <text>] [--media <url>] [--thumbnail <url>] [--at <time>]
echo-cli content queue edit --id <post-id> [--caption <text>] [--media <url>] [--thumbnail <url>] [--status draft]
echo-cli content queue schedule --id <post-id> (--at <time> | --days <n> --time-zone <zone>)
echo-cli content queue remove --id <post-id>
echo-cli content queue publish --id <post-id> --accounts <account-id,...> --by <who>
echo-cli content queue publications --id <post-id>Inputs and output#
list writes the queued posts newest first, with their account and metrics; --from and --to bound when they are scheduled. add and edit write the post: id, social_account_id, platform, content_type, caption, media_url, thumbnail_url, scheduled_at, status (draft, or scheduled when --at is given) and the rest of its row. schedule writes { post, slot }: the post, and with --days and --time-zone the slot it was placed in (scheduled_at, weekday, hour, engagement, posts, days, time_zone), null when --at was given. remove writes { removed: <post-id> }. publish writes one publication per account: id, post_id, social_account_id, platform, action, run_id (the Weles run started) or refusal (why none was), requested_by and requested_at; publications writes them newest first, each with run — status, result (the trajectory's answer, carrying the platform's post id when it reports one), error and completed_at — once the action history has it, else null.
State effect#
The verbs call Echo Web's authenticated /api/content-queue and /api/content-queue/<id>, and publish and publications /api/analytics/publications, with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the content queue page of the dashboard (its edit form takes the best-slot days and time zone, and its Publish to several accounts section publishes) and the Content queue and Publish to several accounts sections of Echo Desktop's GEO screen do the same, and echo-mcp runs them as echo_content_queue, echo_content_queue_add, echo_content_queue_edit, echo_content_queue_schedule, echo_content_queue_remove, echo_content_queue_publish and echo_content_queue_publications. Posts are stored in content_posts and publications in post_publications. schedule with --days and --time-zone reads the slots echo-cli social slots prints for the post's account over the last --days, in that time zone, and schedules the post at the first whole hour from now that falls in the best slot with a measured engagement, or the next best when a time-zone change skips it this week. Before a post goes out — queued scheduled, moved to scheduled or published, edited while scheduled, or published to accounts — Echo Web checks the content it will hold: its caption against the tagging consents (content consent), its media against the people it shows, its media_url and thumbnail_url against the asset rights register (content rights), and, on an account requiring review (content social-review), that its latest review approves that content; an account requiring review refuses a post queued straight as scheduled. A post failing any check is not stored, changed or published; edit --status draft takes it off the schedule so it can be changed and reviewed again. publish turns the post into each account's platform post action — tiktok video as post_video, instagram image as post_image and video as post_reel, twitter text, image and video as post_tweet, linkedin text as post_text — and dispatches it through Echo's action path (the account's maturity, brand, community rate and approval policy); an account whose platform and content type have no adapter, or whose action needs media or a caption the post lacks, or whose dispatch is refused, is answered with the refusal and gets nothing. Threads and Bluesky have no Weles post action yet.
Refusals#
- A wrong invocation is refused before anything is sent: "content queue takes …; got <word>", "content queue <verb> does not take <flag>; …", "<flag> needs a value", "content queue <verb> needs <flag>", "content queue edit needs --caption, --media or --thumbnail: what to change", "content queue schedule needs --at <time>, or --days <n> and --time-zone <zone> to place the post in its account's best measured slot" and "content queue schedule takes --at <time> or --days <n> --time-zone <zone>, not both".
- Echo Web answers a bad request with "content_type, social_account_id, and platform are required", "queued post <id> names no social account, so it has no posting slots", "days must be a positive whole number: …" or "time_zone must be an IANA time zone, such as Europe/Warsaw; got <zone>"; not found with "no queued post has id <id>", "account <id> published no post in the last <n> days, so it has no slots to read" or "no slot of account <id> in the last <n> days has a measured engagement, so none is best; echo-cli social slots shows what was measured"; and a conflict starting "not scheduled:" ("not published:", or "not changed:" for an edit of a scheduled post) with "<handle> …" for a tag with no consent in force, "<asset>: <kind> <reference> expired at <time>" (or "revoked by <who> at <time>") for media whose recorded rights all lapsed, "account <id> requires approval before its posts go out; …" for a post queued straight as scheduled, or "post <id> is <never reviewed | requested by … | rejected by … | changed since it was approved by …>, and account <id> requires approval; …".