Quick overview
This workflow runs weekly to generate, research, write, illustrate, and publish a new blog post by combining Supabase (content + storage), Perplexity (topic + research), Anthropic Claude (writing), Google Gemini (cover image), and Gmail (notification).
How it works
- Runs every Friday at 10:00 (cron: 0 0 10 * * 5).
- Fetches titles of already published posts from Supabase and builds a rotating topic focus that avoids repeating prior angles.
- Uses Perplexity to propose one fresh, SEO-relevant blog topic and then research it with trends, examples, and SMB-focused insights.
- Sends the topic and research notes to Anthropic Claude to write a complete post with title, excerpt, meta description, category, read time, and HTML body.
- Parses the generated text into structured fields, generates a slug, and prepares a published blog post record.
- Uses Google Gemini to generate a 16:9 cover image, uploads it to Supabase Storage, and attaches the public cover image URL to the post.
- Inserts the finished post into the Supabase blog_posts table with status set to published and emails the team via Gmail with the publication details.
Setup
- Create a Supabase project with a blog_posts table and a Storage bucket/path for covers (social-images/blog-covers), then replace YOUR-PROJECT.supabase.co in both Supabase HTTP requests.
- Add credentials for Supabase, Perplexity, Anthropic (Claude), Google Gemini (Google PaLM/Gemini), and Gmail OAuth2.
- Update the notification recipients (To/CC) in the Gmail message node.
- (Optional) Replace YOUR-COST-LOG-SUBWORKFLOW-ID with your cost-logging workflow ID or delete the cost-logging sub-workflow calls.
- Adjust the schedule cron expression if you want a different publish cadence.
Requirements
- Supabase project: a blog_posts table plus a public Storage bucket for cover images
- Perplexity API key (topic + research)
- Anthropic Claude API key (writing)
- Google Gemini key (cover image)
- Gmail OAuth, or any email node, for the notification
Customization
- Rewrite the Claude prompt to match your brand voice, tone, and post length
- Change the schedule cron to publish daily, weekly, or on demand
- Swap Gmail for Slack, Telegram, or Outlook to get notified your way
- Publish to your own CMS or WordPress instead of Supabase by editing the publish node
- Tweak the Gemini cover prompt and aspect ratio for your brand look
- Add a human approval step before publishing if you want a person in the loop
Additional info
The topic picker reads your already-published titles before choosing the next one, so your blog keeps a varied, non-repetitive editorial calendar on autopilot. The cost-logging nodes are optional and safe to delete.