Install
openclaw skills install @beatra-ai/wechat-moments-poster-makerCreate WeChat Moments posters and campaign graphics from a product photo, event brief, promotion, recruitment message, seasonal greeting, brand assets, or accepted draft. Produce square or vertical social visuals with a clear focal point and headline-safe space for WeChat Moments, customer-community updates, launches, invitations, and marketing campaigns; refine the selected image while preserving the brand direction.
openclaw skills install @beatra-ai/wechat-moments-poster-makerCreate one share-ready WeChat Moments campaign graphic from an offer, event, product, recruitment message, seasonal greeting, photo, brand asset, visual reference, or accepted draft. Keep one message and one recognizable focal point at the center of the work.
beatra.images.generate for a stated
message, product, offer, event, or activity when no source image is needed.beatra.images.transform.beatra.images.edit with the accepted draft
as images[0]; use no more than two normalized local edit regions.This is a single WeChat Moments share graphic, not a general print campaign.
Use poster-design-studio for a broad poster system or print-led campaign,
and use wechat-cover-maker for one Official Account article cover.
Reuse the campaign message, audience, timing, product, offer, brand colors,
assets, and required details already supplied. Ask only for a missing choice
that would change the output. Start a standard Moments share graphic at a 2K
1:1 canvas; honor a user-selected vertical or square destination and freeze
the final canvas in the paid confirmation.
Set one message, one hero subject, one visual tone, a headline-safe area, and any ordered image roles. Default to a text-safe area rather than guaranteeing exact in-image copy, typeface, wrap, or logo rendering. If exact short copy is required, put it in the confirmation and verify it only from a visible result.
Use only the bundled scripts/mcp_client.py for every remote Beatra operation.
Do not configure or call a host Beatra Connector and do not use REST/OpenAPI as
a fallback. Upload local images through the bundled client, preserve their
declared order, and label their roles in the prompt. Uploading makes bytes
available but does not inspect them.
Keep model: "auto" and count: 1 unless the user selects other values. Call
beatra.models.list only for a real availability, compatibility, control, or
price decision. Before generating, present one confirmation that freezes the
prompt, canvas, ordered reference roles, message treatment, model, controls,
and count. Planning is free; execution consumes credits.
After approval, create one opaque stable client_request_id without user
content and submit exactly one request. Any prompt, image or order, canvas,
model, count, or control change is new paid work requiring a new confirmation
and request ID. Use workflow for payload shapes.
Record the returned task_id and poll only it through beatra.tasks.get. If
the ID is lost, find candidates through beatra.tasks.list and verify the
chosen one through tasks.get. Only a genuinely unknown creation response may
be recovered by replaying the byte-equivalent payload with the same request ID.
Slow polling, connection, update, or authorization failure cannot create a
replacement paid poster.
Cancel only on the user's request. A 409 cancellation response means the
original task still runs and must be tracked. When visible, review message
focus, small-size recognition, safe-area contrast, final canvas, crop risk,
and must-keep assets. Deliver artifact links, observed dimensions, task ID,
resolved model, and returned billing.net_charged_credits, then offer at most
one focused unexecuted refinement.
This Skill runs only the files installed with it and leaves them unchanged while it runs; it never downloads or executes other code. It talks to Beatra's official services over HTTPS, and a file you choose to upload goes only to the one-time upload address Beatra issues for it.
Once a day at most, the bundled client reads Beatra's public version list. When the store or tool you installed from has a newer version, it prints one line with the command that updates it there. Updating stays your choice, through that store or tool. See updates and security.