Install
openclaw skills install @canvora/canvora-blog-promo-kitTurn one published article URL into its full visual kit with Canvora — blog header, Open Graph share card, and the social promo set that distributes it. Use when the user publishes a blog post, wants a featured image, an OG image, or asks how to promote an article.
openclaw skills install @canvora/canvora-blog-promo-kitOne URL, one call, the whole distribution set. Canvora extracts the article itself, so every asset carries the same argument and the same look — which is exactly what hand-assembling these one at a time fails to do.
Setup and credits: see the canvora skill.
On-page assets (the post needs these to ship):
| Format | Size | Role |
|---|---|---|
blog_header | 16:9 1200×675 | the in-post header image |
blog_featured | 16:9 1920×1080 | featured/hero image in the CMS |
og_image | 16:9 1200×630 | the social share card — the one everyone forgets |
web_banner | 21:9 1920×550 | category/section banner |
Off-page distribution (the post needs these to travel):
linkedin_post, instagram_carousel_portrait, twitter_post, quote_card,
stat_card.
og_image is the highest-leverage asset here: it is what appears in every
share, every Slack paste, every LinkedIn link preview. If the user asked only
for "a blog image", ask whether they have an OG card — usually they don't.
--brand (+ --logo for the social assets; headers usually
read better without).# Everything the post needs, on-page + distribution, one source (9 outputs — poll)
ID=$(canvora generate --url $POST_URL \
--format blog_header,og_image,linkedin_post,instagram_carousel_portrait \
--slides instagram_carousel_portrait=6 \
--brand $BRAND | head -1)
canvora status "$ID" --json # repeat every ~30s until completed
# On-page only
canvora generate --url $POST_URL --format blog_featured,og_image --brand $BRAND --wait --json
# Distribution only, for a post that's already live (3 outputs — poll)
ID=$(canvora generate --url $POST_URL \
--format linkedin_post,twitter_post,quote_card --brand $BRAND --logo | head -1)
canvora status "$ID" --json
Cost check: the first example is 3 singles (30) + a 6-slide carousel (90) =
120 credits. Say it in the same message as the run — announce it, don't ask
permission; if the slide count was your call rather than the article's, confirm
that number. A kit is usually several sequential calls, so sum the whole plan
and run canvora credits --json once before starting — running dry midway
leaves a half-assembled kit with the earlier calls already paid for.
Anything producing 3+ outputs is fire-and-poll, not --wait: most harnesses
kill a shell command at 120s while the generation carries on server-side, and
re-running generate starts a second, separate job. Poll status instead. See
the canvora skill's "Long runs" section.
--idea —
extraction keeps the structure, the stats and the pull quotes.--slides to it.quote_card / stat_card for the one line worth lifting. If the user
names the quote, --input "the exact line" --exact.--style: match the publication's voice — minimal for technical
writing, bold for opinion, editorial-feeling work → elegant.sortOrder.og_image included unless they explicitly have one