New to Kestra?
Use blueprints to kickstart your first workflows.
Automate brand-consistent blog creation with Kestra and OpenAI GPT-4o. Extract your writing style, generate an on-brand post, and publish to WordPress as a draft.
Generate publication-ready blog posts that match your existing brand voice and land in WordPress as a draft, all from a single topic input. This AI blog post generator solves the biggest problem with automated content: generic, off-brand writing. Instead of feeding the model abstract style rules, it learns from your real published articles via your RSS feed, builds a structured brand voice profile with OpenAI GPT-4o, writes a full Markdown article calibrated to your target audience, converts it to clean HTML, and posts it to WordPress for human review and one-click publishing. It is a complete content automation pipeline combining AI text generation, CMS publishing, and Slack notifications in declarative YAML.
fetch_reference_articles (io.kestra.plugin.core.http.Request) pulls your existing blog content from the RSS feed at the brand_url input.extract_brand_voice (io.kestra.plugin.openai.ChatCompletion) analyzes the sample content with gpt-4o and a jsonResponseSchema, returning structured tone, vocabulary, structure pattern, example opening, and content guidelines.generate_blog_post (io.kestra.plugin.openai.ChatCompletion) writes a full Markdown article (H1 title, intro, 3-4 H2 sections, conclusion) using the voice profile and the target_audience input as generation constraints.prepare_wp_payload (io.kestra.plugin.scripts.python.Script) uses the markdown2 dependency to convert Markdown to HTML, split out the title, build an excerpt, count words, and emit a WordPress payload.publish_to_cms (io.kestra.plugin.core.http.Request) POSTs the draft to the WordPress REST API at cms_api_url using Basic authentication.notify_slack (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) sends the title, word count, status, and a review link to your content channel.brand_url inputsOpenAI and WordPress have no shared scheduler or workflow engine that can chain a model call into a CMS publish, add a script step in between, and notify a team. Kestra fills that gap. You get event triggers, automatic retries on flaky HTTP or API calls, full execution lineage across every task, and a declarative YAML definition you can version control. The brand voice profile, generation, payload prep, publish, and notification run as one observable pipeline instead of glue scripts.
OPENAI_API_KEY: API key for the OpenAI GPT-4o callsWP_AUTH_TOKEN: base64 Basic auth token for the WordPress REST APISLACK_WEBHOOK_URL: Slack incoming webhook URL for notificationsOPENAI_API_KEY, WP_AUTH_TOKEN, and SLACK_WEBHOOK_URL secrets to your Kestra instance.brand_url, cms_api_url, and target_audience input defaults for your site.post_topic.io.kestra.plugin.core.flow.Pause task before publish_to_cms for a human-approval gate.