Post new WordPress articles to LinkedIn as branded Canva images

By General Input

Every hour, turn each newly published blog post into an on-brand Canva graphic and share it on your LinkedIn company page with an AI-written caption.

Integrations

  • Canva
  • WordPress
  • LinkedIn

Type

Agentic Task

Categories

  • Marketing

Every hour, find newly published articles on my WordPress site and turn each one into a branded Canva social image that gets posted to my LinkedIn company page.

Trigger: cron every hour.

Step 1 — Find new posts. Use WordPress List Posts with status=publish and after=<last successful run timestamp> to pull only articles published since the workflow last ran. Order by date ascending so older posts publish first. If no new posts are found, exit cleanly.

Step 2 — For each new post, generate the graphic in Canva:

2a. Pull the featured image into Canva with Canva Upload Asset from URL, passing the post's featured_media source URL. Poll the returned asset upload job until status is success and capture the asset ID.

2b. If the user configured a Canva brand template, call Canva Autofill Brand Template with the brand template ID and a data payload mapping the template's text fields to the post title and excerpt, and its image field to the uploaded asset ID. Poll the autofill job until it terminates. Note: Autofill Brand Template requires a Canva Enterprise plan.

2c. Fallback for Free and Pro plans (or when no brand template is configured): call Canva Create Design with a preset design type (e.g. InstagramPost or LinkedInPost) and the uploaded asset ID as the inserted image. This produces a plain design without the branded overlay text, so surface a note to the user in the workflow inputs that Enterprise unlocks the fully branded output.

2d. Export the design as PNG with Canva Export Design and poll the export job until it returns a download URL. Important: Canva job download URLs expire after 24 hours, so the LinkedIn post must be created in the same workflow run — do not persist the URL for later use.

Step 3 — Draft the LinkedIn caption. Take the post title, excerpt, and public URL and write a company-page caption: open with a short hook (one line), give a two or three sentence takeaway drawn from the excerpt, close with a call to read the full article and include the post URL. Respect the caption style guidance the user provided at setup (voice, tone, hashtag rules). Do not use em dashes.

Step 4 — Publish to LinkedIn. Call LinkedIn Create Post as an image post: author = the LinkedIn organization URN the user configured, media = the exported PNG (fetch the Canva download URL bytes and upload through LinkedIn's image flow inside Create Post), commentary = the drafted caption. Confirm the post URN returned in the x-restli-id header.

Step 5 — Record the published-post ID and its timestamp so the next hourly run can filter to posts newer than the last one processed.

Author should let the user pick, at setup:

- the WordPress site (credential)

- the Canva brand template ID (Enterprise) OR a preset design type for the fallback path

- the LinkedIn organization URN (the company page to post from)

- optional caption style guidance (voice, tone, hashtag rules, whether to tag anyone)

Nuance to bake in: Canva async jobs (asset upload, autofill, export) return a job envelope with status=in_progress and transition to success or failed — poll each one before using the result. Job-level failures come back as 2xx with status=failed, not HTTP errors, so check both layers. Skip posts that have no featured image if the fallback preset requires one, or use a solid-color background variant. Do not re-share posts from before the workflow was first turned on — seed the last-run timestamp to now at first launch.

Related prompts

Explore more prompts
Shoppable link console for your WordPress recipe archiveContent decay review board for your WordPress pagesTranslation coverage grid for your published WordPress postsContent audit and refresh desk for your marketing siteTurn every WordPress post into a narrated audio versionLet your content team refresh live pages without a Cloudflare loginBulk-generate Canva campaign assets from a Google SheetOne screen to find, tidy, and ship every Canva designSales collateral desk: personalized one pagers from your dealsAudio coverage console for your WordPress blog archive