Skip to content

v1.2.0 — best time to post

Latest

Choose a tag to compare

@waqasasif9292 waqasasif9292 released this 17 Aug 07:14
The scheduling optimiser is now part of the ContentStudio public API, so
the CLI and the agent skill cover it. One new command,
`scheduling:best-times`, wrapping
POST /workspaces/{w}/scheduling/optimal-times.

It analyses the historical performance of the workspace's connected
accounts and returns ranked posting slots — a weekday and an hour,
best-first — pooled across accounts (`global`) and per account
(`individual`).

- `--account <platform>:<account_id>` (repeatable) restricts the
  analysis; both halves come from one accounts:list row, because the API
  needs the platform as the entity `type`. Omit it to analyse everything
  connected.
- `--entities '<json>'` is the escape hatch for a different slot count
  per account; mutually exclusive with --account.
- `--global-slots` / `--per-account-slots` size the returned ranking
  (1-24; API defaults 5 and 3). They never change the analysis.

Notes:

- Times are always in the workspace timezone (echoed as
  `meta.timezone`); the endpoint takes no timezone parameter. That is
  the same clock `posts:create --scheduled-at` writes against, so a slot
  is scheduled as-is.
- The response is not the usual {status, message, data} envelope, so the
  API wrapper normalises {meta, global, individual} into the CLI's
  standard {ok, data} shape.
- A thin workspace still returns 200: unanalysable accounts come back in
  `meta.missing_entities` and `global` may be null. That is a successful
  read, not an error. `meta.ai_fallback_entities` are estimates, and the
  human output labels them as such.
- Slot counts and the <platform>:<account_id> form are validated
  client-side, so a bad call fails immediately rather than round-tripping.
- Read-only, so no --dry-run — matching inbox:list, the CLI's other
  POST-with-a-body read.

Also corrects the `-s / --scheduled-at` documentation: it was described
as UTC, but the API reads the timestamp as workspace-local wall-clock
time. No behaviour change — only the help text, SKILL.md and README were
wrong, and following them would have put best-times slots on the wrong
hour.

Local agent artifacts (.agents/, .claude/skills, .claude/settings.local.json,
skills-lock.json) are gitignored so they cannot reach this public repo.