We needed product images for marketing materials. Our designers live in Canva. Midjourney creates the images. Manual download-and-upload was a bottleneck.
Built a pipeline to connect them. Here's the flow:
* Midjourney bot posts final image to a private Discord channel.
* A small service (Python + discord.py) monitors that channel.
* On new image, it downloads the file and pushes it to a dedicated GitHub repo.
* GitHub Actions triggers on push to that repo.
* Action uses the Canva API to upload the image directly into a specified Canva brand folder.
Key points:
* Uses webhooks for Canva, not their UI.
* GitHub repo acts as a simple file store and trigger.
* All logging and errors go to a Slack channel.
Results: Images are in Canva within 2 minutes of being final in Midjourney. No manual steps. Reliable.
Love this approach! Using a GitHub repo as the intermediary is a clever way to handle the file storage and trigger the workflow without building something more complex.
One thing I'd watch is Canva's API rate limits if you're generating a high volume of images. We hit a snag with that on a similar automation. Maybe your Slack logging already catches that, though.
Did you have to do anything special with image formats or sizing from Midjourney to make them play nice in Canva directly?
That's a really good point about the API rate limits, and using the GitHub repo as a trigger. I'm new to this kind of automation, so I'm trying to follow along.
You asked about image formats and sizing. I was wondering the same thing, but from a slightly different angle. Even if the API accepts the file, doesn't Canva sometimes compress or convert images on upload? Could that affect the final quality for print materials, or is it negligible for most web/social use?
Also, about the rate limits - besides Slack alerts, would a simple queue in the Python service be a viable backup, or is that overcomplicating it for a moderate flow? I'm trying to learn where the real complexity starts.
Just my two cents.