<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mathias Eberlein</title>
    <description>The latest articles on DEV Community by Mathias Eberlein (@mathias_eberlein_765a17dc).</description>
    <link>https://dev.to/mathias_eberlein_765a17dc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1986542%2Fb4b8bc3a-f5db-4b8d-9bce-ba063f0bee35.png</url>
      <title>DEV Community: Mathias Eberlein</title>
      <link>https://dev.to/mathias_eberlein_765a17dc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mathias_eberlein_765a17dc"/>
    <language>en</language>
    <item>
      <title>A Fact A Day, an autonomous Podcast as my entry 4 Hermes Agent Challenge</title>
      <dc:creator>Mathias Eberlein</dc:creator>
      <pubDate>Wed, 20 May 2026 14:12:34 +0000</pubDate>
      <link>https://dev.to/mathias_eberlein_765a17dc/a-fact-a-day-an-autonomous-podcast-as-my-entry-4-hermes-agent-challenge-4h6a</link>
      <guid>https://dev.to/mathias_eberlein_765a17dc/a-fact-a-day-an-autonomous-podcast-as-my-entry-4-hermes-agent-challenge-4h6a</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;"A Fact A Day" is an autonomous, daily educational podcast that summarizes current scientific and technological breakthroughs in approximately 60 seconds.&lt;/p&gt;

&lt;p&gt;The project solves a concrete problem: knowledge is everywhere, but hard to consume. People who want to stay up-to-date don't have time to read long articles or listen to hour-long podcasts. A Fact A Day delivers exactly one piece of information per day — well-researched, well-told, in one minute.&lt;/p&gt;

&lt;p&gt;The special feature: The entire production process is automated and runs once daily via cron job:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Research current breakthroughs from trusted sources (MIT Tech Review, Ars Technica, Wired, NYT Tech)&lt;/li&gt;
&lt;li&gt;AI-assisted script creation with strict structure (strong hook → information → open question)&lt;/li&gt;
&lt;li&gt;Speech synthesis with Stepfun TTS (female voice, excited emotion)&lt;/li&gt;
&lt;li&gt;Automatic audio editing and merging into a finished MP3&lt;/li&gt;
&lt;li&gt;Publication on the archive page&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.redpandamonium.de/afactaday/" rel="noopener noreferrer"&gt;https://www.redpandamonium.de/afactaday/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/tkdmatze/afactaday/" rel="noopener noreferrer"&gt;https://github.com/tkdmatze/afactaday/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hermes Agent – orchestration, cron job, skill system, Telegram integration&lt;/li&gt;
&lt;li&gt;Stepfun API – LLM (step) for script creation, TTS (stepaudio-2.5-tts) for speech synthesis&lt;/li&gt;
&lt;li&gt;Python – main script (generate_lecture.py) with requests, pydub, feedparser&lt;/li&gt;
&lt;li&gt;defuddle-cli – token-efficient HTML extraction from news sources&lt;/li&gt;
&lt;li&gt;ffmpeg – merging TTS audio snippets into a seamless MP3&lt;/li&gt;
&lt;li&gt;Astro – archive page (&lt;a href="https://www.redpandamonium.de/afactaday/" rel="noopener noreferrer"&gt;https://www.redpandamonium.de/afactaday/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;nginx + rsync – deployment to my own servers &lt;/li&gt;
&lt;li&gt;Telegram Bot API – delivery of the finished episode&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Used Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is the backbone of the entire system — without it, the podcast wouldn't work.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Skill System as Reusable Building Blocks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The entire production process is implemented as a Skill (aura-lectures) that can be easily called and configured:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;hermes run /aura-lectures --topic "quantum computing"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The skill encapsulates all dependencies: RSS feeds, HTML extraction, LLM prompting, TTS synthesis, audio merging. This makes the code maintainable and extensible.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cron Job for Full Automation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Via cronjob(action='create'), the skill is automatically executed every weekday at 08:30 UTC — without human intervention:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Registered in Hermes Cron&lt;br&gt;
 ID: XXXXXX&lt;br&gt;
 Schedule: 30 8 * * 1-5 (weekdays)&lt;br&gt;
 Command: hermes run /aura-lectures&lt;br&gt;
 Delivery: Telegram channel&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Terminal Tools for the Processing Chain&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Python script uses subprocess calls for external tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feedparser to collect RSS feeds&lt;/li&gt;
&lt;li&gt;defuddle-cli to clean HTML (retains only actual article content)&lt;/li&gt;
&lt;li&gt;ffmpeg to merge TTS audio snippets&lt;/li&gt;
&lt;li&gt;requests for all API calls (Stepfun Chat + TTS)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  noteworthy
&lt;/h2&gt;

&lt;p&gt;What makes this experiment/project special for me is how much Hermes Agent handles completely autonomously in the background — things that typically require explicit setup, configuration, or manual steps. May that was, because i did experiments before, and so hermes knows exactly where to store files, which are my preferred libraries and which design to use. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skill scaffolding: Hermes created the complete skill structure (SKILL.md, scripts/generate_lecture.py) — no manual file creation needed.&lt;/li&gt;
&lt;li&gt;RSS feed management: The skill automatically discovers and parses multiple RSS feeds (MIT Tech Review, Ars Technica, Wired, NYT Tech), extracts article URLs, and fetches full content — all without any external RSS-to-email service.&lt;/li&gt;
&lt;li&gt;HTML cleaning: Using defuddle-cli, Hermes automatically strips headers, footers, and navigation from article pages, reducing token consumption by 5–10× before sending to the LLM — a step most podcast automations skip entirely.&lt;/li&gt;
&lt;li&gt;Script quality enforcement: The LLM prompt is automatically structured to guarantee the exact format: strong hook → information → open-ended question, with strict word count (120 ± 15 words). No post-processing or manual editing required.&lt;/li&gt;
&lt;li&gt;TTS chunking: When the generated script exceeds Stepfun's 1000-character limit per request, Hermes automatically splits it at sentence boundaries, synthesizes each chunk separately, and merges them back together — transparently.&lt;/li&gt;
&lt;li&gt;Audio normalization: The tts_synthesize function handles rate limiting, retries, and temp file cleanup automatically. The final MP3 is produced with optimal bitrate (-q:a 2) via ffmpeg without manual ffmpeg command crafting.&lt;/li&gt;
&lt;li&gt;Telegram delivery: The finished MP3 is sent as a native voice message.
— Hermes detects the file path and handles the upload automatically, no bot token management or manual API calls needed.&lt;/li&gt;
&lt;li&gt;Archive page generation: After each episode, Hermes can automatically copy the MP3 to the server's audio folder and update the Astro page's episode list — the entire "publish to website" step is fully automatable.&lt;/li&gt;
&lt;li&gt;Cron job registration: The recurring job is created with a single cronjob(action='create') call, complete with natural-language description, weekday schedule, and Telegram delivery target — no crontab editing or systemd service files.&lt;/li&gt;
&lt;li&gt;Memory persistence: All decisions are stored in MEMORY.md and USER.md, so the skill works immediately on any new Hermes instance without re-running setup steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short: from "run the skill" to "episode delivered and published" — zero manual intervention. The entire pipeline is self-contained, robust, and fully documented within the skill system.&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>The Cognoscenti Collective[Google AI Badge Submission]</title>
      <dc:creator>Mathias Eberlein</dc:creator>
      <pubDate>Thu, 07 Aug 2025 14:16:12 +0000</pubDate>
      <link>https://dev.to/mathias_eberlein_765a17dc/the-cognoscenti-collectivegoogle-ai-badge-submission-22j2</link>
      <guid>https://dev.to/mathias_eberlein_765a17dc/the-cognoscenti-collectivegoogle-ai-badge-submission-22j2</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://the-cognoscenti-collective-932343582662.us-west1.run.app/" rel="noopener noreferrer"&gt;https://the-cognoscenti-collective-932343582662.us-west1.run.app/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxe4ntkvm6i0zpa00833.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxe4ntkvm6i0zpa00833.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just wanted to show some psychological Effects in UI development. &lt;br&gt;
So i created a mockup of a social network. And i added a ret dot. Beginning with that interuption the small user journey through 8 effects is started.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;This gemini thingy makes a lot of fun. You can see progress fast. I do not care about the code, when doing this.&lt;/p&gt;

&lt;p&gt;But it makes mistakes. May be it had a bad day, as it didn't make the changes it supposed and more then once i had to say "make the changes".&lt;/p&gt;

&lt;p&gt;And it self-fixed itself a lot of times.&lt;/p&gt;

&lt;p&gt;Takeaway &lt;br&gt;
I will get a badge by telling people the psychologicy of getting badges. &lt;br&gt;
I think this is an approach, an AI would not have taken. &lt;/p&gt;

&lt;p&gt;i started with 3 effects and asked Gemini what effects else we could add. And it made good suggestions, not only about the effect, but about how we could implement it in the context of the small social media mockup. This was kinda easy, funny and scary as hell at the same time. &lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
