In short: Every Friday at 2 pm (Berlin time), my YouTube channel publishes a video with the week's most important Shopware news, plus a blog post and posts on LinkedIn and Facebook. Almost all of it runs automatically: a script collects the facts from GitHub, a local AI rates and writes, and an AI avatar presents the video. I only approve. Links, version numbers and dates are always set by the script, never by the AI.

What comes out of it

Every week the workflow produces:

  • a YouTube video with chapters
  • the German blog post with the embedded video
  • an English text version in the Shopware News category
  • one post each on LinkedIn and Facebook

There are also separate videos for new Shopware versions, for example Shopware 6.7.15.1. Critical security advisories reach me immediately via Telegram, without any AI, just facts and links.

The sources: only what Shopware publishes itself

To keep speculation out of the videos, the weekly video only uses public data that Shopware maintains on GitHub:

  • new versions released that week
  • security advisories of the week
  • bugs confirmed by Shopware with high or critical priority
  • bugs fixed during the week
  • a look ahead: what is already finished for the next version

Release videos also use the release notes, the changelog and Shopware's German release article. For smaller versions, the system waits up to 72 hours for these sources to appear.

What the AI does

The texts are written by Gemma 4 31B, a Google language model running locally on my AI server. It has two jobs:

  1. Rating: every item is rated on whether it matters to shop owners. Only relevant topics make it into the video.
  2. Writing: the relevant topics become the article and the narration script with chapters, written for merchants, not developers.

Why this model? In my tests, the smaller Gemma 4 26B missed contradictions in the fact check, the 31B did not. More on that in my test of local AI models. ChatGPT is only a fallback in case the local server is unavailable.

What the AI deliberately does not do

  • Links, source titles, timestamps and contact details are set by the script. Language models mangle links and invent dates, a lesson I learned with my Hermes agent.
  • Whether and with which version a bug is fixed is also determined by the script from the GitHub data: shipped with which version, already merged for the next version or fixed in an extension.
  • The tone is checked by a fixed rule: always the informal German "du", no developer jargon. If it finds the formal "Sie" or code terms, the text is regenerated.

Video with an AI avatar

The video is presented by my digital twin at HeyGen, an AI avatar service, with my cloned voice in front of a studio background. The script uploads the finished narration, waits for the video and then adds a lower third, thumbnail and chapter markers.

A single approval

The finished video lands as a draft in Postiz, the social media scheduler I host myself. I watch it and approve it, from my phone via Telegram if I like. That is the only step I do by hand.

I also offer social media post creation and scheduled publishing through Postiz for businesses. You can have me create posts or schedule content you already have. We agree on topics, channels, scope and dates, and content is approved before publication. Discuss social media support.

After that, everything else happens on its own:

  1. YouTube publishes the video at the scheduled time, Fridays at 2 pm for the weekly video.
  2. As soon as the video URL is known, the LinkedIn and Facebook posts go out.
  3. The blog post is written to my website's repository. An automated check verifies it and uploads it.

For approval via Telegram, I first wrote an instruction for the agent. But the language model ignored it and answered a completely different question. Now approval is a fixed command that starts a script directly. Same rule again: anything that must be reliable is not left to a language model.

What went wrong and what I learned

  • Version numbers mixed up. An early AI draft said a bug was fixed in a specific version. In fact, that was the affected version. Since then, the script determines the status itself, and I check version numbers against the release notes.
  • Inaccuracies in the video. The first weekly video had three imprecise statements. I corrected the article and the social media texts, the video stayed. A text is quickly corrected, a new video is not.
  • Archive everything. For every video, sources, ratings, article and script are archived on my NAS. That way every statement can be traced later.

Frequently asked questions

How much time does a video still take me?

Normally just watching and approving. If I don't like a statement, I correct the text and have the video regenerated.

Why not fully automatic?

Because a video with my face and voice should not go online without me looking at it. Approval is deliberately the only manual step.

Does this work for other topics?

Yes, as long as there are reliable, structured sources. For Shopware that is the GitHub data; for an online shop it could be new products or stock data.

You can find all videos on my YouTube channel @shopwarefreelancer.