Hermes Agent Info / Workflow / Briefing

Personlig lydbriefing

Et workflow der samler dagens vigtigste indhold, oversætter det til almindeligt dansk og sender det som en kort lydfil.

Status: proof of concept virkerGoogle Cloud tale testetSQLite-base oprettetNanoGPT blog-kilde testet

Kilder i testbasen4
Indholdsposter8
Tags oprettet28
Punkter i seneste lyd5

Målet

Målet er at gøre en stor strøm af mails, artikler, videoer og nyheder til en lille personlig morgenbriefing. Den skal være kort nok til at lytte til, men præcis nok til at Lisa kan vælge, hvad der skal foldes ud bagefter.

Vigtig stilregel: Briefingen skal forklare funktionalitet og betydning. Den skal ikke bare nævne ukendte navne, protokoller eller produktnavne.

Hellere: “Det betyder, at en agent kan betale små beløb uden konto” end “L402 understøtter x402-style payments”.

Kort lydvenlig forklaring

Systemet gør seks enkle ting.

  1. Det henter nye ting, for eksempel blogindlæg, nyhedsbreve eller videoer.
  2. Det gemmer originalteksten, så vi altid kan gå tilbage til kilden.
  3. Det vælger få punkter, som virker mest relevante for Lisa.
  4. Det omskriver punkterne til almindeligt dansk, så de forklarer hvad det betyder, ikke bare hvad det hedder.
  5. Det laver teksten om til en lydfil.
  6. Det gemmer feedback, så systemet lærer hvad Lisa vil høre mere eller mindre af.

Kort fortalt: sådan virker det

1. Hent indholdSystemet henter nye indlæg fra en kilde, fx NanoGPT-bloggen. Senere kan det også være nyhedsbreve, YouTube-transkripter og RSS/websider.
2. Gem rå tekstAlt gemmes i en lokal database, så vi kan gå tilbage til originalen, lave “fortæl mere om nummer 3” og undgå at behandle samme indhold igen.
3. Vælg det vigtigsteDubletter fjernes, og punkter scores efter nyhedsværdi, personlig relevans, teknisk støj og om det matcher Lisa’s feedback.
4. Omskriv til lydEn billig omskrivnings-agent laver korte danske forklaringer med fokus på “hvad betyder det?” i stedet for ukendte navne.
5. Lav lydfilDen færdige tekst sendes til Google Cloud Text-to-Speech, som laver en dansk lydfil.
6. Lær af feedbackNår Lisa svarer “mere som nummer 1” eller “mindre teknisk”, gemmes det som præferencer og tag-vægte.

De tre spor vi fortsætter med nu

  1. Bedre udvælgelse. Hvert punkt skal have en grund til at være med: nyhed, praktisk værdi, personlig interesse eller tidligere feedback.
  2. Bedre omskrivning. En billig model omskriver rå tekniske titler til dansk, der forklarer funktionalitet og betydning.
  3. Bedre feedback. Svar som “mere som nummer 1” og “mindre teknisk” bliver gemt som tags og vægte, ikke bare som løse beskeder.
Seneste læring: Artiklen om Fluent + NanoGPT var ikke interessant for Lisa. Systemet skal derfor nedprioritere rene app-integrations- og rabatnyheder, medmindre de tydeligt forklarer en praktisk funktion eller strategisk retning.

Workflowets faser

1

Indsamling

Hver kildetype har sin egen lille indsamler. Blogindlæg hentes via scrape eller sitemap. YouTube skal bruge transcript. Nyhedsbreve skal renses fra mail. Det gør systemet modulært: hvis én kilde ændrer sig, skal kun den indsamler rettes.

2

Fælles database

Rå tekst, titel, link, dato, tags og kilde gemmes lokalt. Det betyder, at indsamlingen kan ske løbende uden at forstyrre Lisa, og at vi senere kan spørge tilbage ind i det samme materiale.

3

Udvælgelse og omskrivning

Systemet vælger få punkter, fjerner dubletter og omskriver tekniske nyheder til korte danske forklaringer. Her bruger vi en billig omskrivnings-agent som førstevalg og OpenRouter som fallback.

4

Lyd og levering

Den færdige tekst bliver til en lydfil. Først bruges Google Cloud tale, fordi den virker nu. Senere kan vi skifte motor uden at ændre hele workflowet.

5

Feedback

Feedback gemmes ikke som “god/dårlig” alene. Den kobles på tags og indholdstyper, så systemet lærer, at Lisa fx vil høre mere om konkrete produktændringer og mindre om lavpraktisk teknik.

Nuværende arkitektur

Det vi bruger nu

  • Hermes Agent styrer workflow, filer, test og senere cron.
  • Python henter, parser og bygger briefingteksten.
  • SQLite gemmer kilder, indhold, tags, briefinger og feedback.
  • Google Cloud Text-to-Speech laver dansk lyd.
  • Telegram bruges til levering og feedback.

Det vi venter med

  • LangGraph giver mening senere, når der er flere kildetyper og mere forgrenet logik.
  • PostgreSQL giver mening senere, hvis datamængden eller relationerne vokser ud af SQLite.
  • Flere special-agenter giver mening, når mail, YouTube, RSS og web har hver sin stabile pipeline.

Database og dataform

Den nuværende proof of concept bruger:

/opt/data/podcast-workflow/briefing.db

Vigtige tabeller:

Kilder og endpoints

NanoGPT-bloggen havde ikke et rigtigt RSS-feed i testen. Derfor bruger vi alternative kilder:

3.POST https://nano-gpt.com/api/v1/data/url/scrape
4.POST https://nano-gpt.com/api/v1/data/web/search

Skills, agenter og notater

Der blev også brugt separat agent-review til at kritisere arkitekturen. Den vigtigste anbefaling var at starte simpelt med Hermes, Python, SQLite og tale, og først tilføje LangGraph når systemet faktisk har brug for det.

LLM, prompt og omskrivning

Rå nyheder skal omskrives, før de bliver til lyd. Den valgte stil er: kort dansk, praktisk betydning, ingen uforklarede navne.

Billig omskrivnings-agent

Promptmønster

Omskriv denne briefing til kort, mundtligt dansk.
Forklar hvad hvert punkt gør muligt eller hvorfor det er relevant.
Undgå uforklarede tekniske navne.
Behold nummereringen.
Gør teksten egnet til oplæsning.

Kvalitetscheck før tale

Seneste test-briefing

Den seneste lydbriefing blev genereret med Google Cloud tale og gemt her:

/opt/data/voice-memos/nanogpt-blog-briefing-2026-06-14-google-tts.ogg

Eksempel på den ønskede stil:

“NanoGPT tester betaling for AI-kald uden konto. Det er relevant, fordi agenter kan betale små beløb direkte, uden login og uden forudbetalt saldo.”

Hvordan kan vi gøre det endnu bedre?

  1. Byg feedback ind fra start. Gem “mere som nummer 1”, “mindre teknisk” og “spring crypto over” som vægte på tags.
  2. Lav en fast relevansscore. Hvert punkt får score for nyhedsværdi, praktisk betydning, personlig interesse og teknisk støj.
  3. Adskil rå data og oplæst tekst. Gem original artikel separat fra den danske lydtekst, så vi altid kan gå tilbage.
  4. Lav on-demand uddybning. Når Lisa siger “fortæl mere om nummer 3”, hentes den fulde kilde og der laves en ny kort lydfil.
  5. Tilføj kilde-køer én ad gangen. Først NanoGPT-blog, derefter RSS/web, derefter YouTube, til sidst e-mail.
  6. Lav to briefing-typer. Morgenbriefing skal være kort. Researchbriefing kan være længere og mere detaljeret.
  7. Test stemmer og tempo. Find den danske stemme, der lyder mindst robotagtig ved 1-3 minutters briefing.
  8. Lav et “forklar uden navne”-filter. Hvis et punkt indeholder et ukendt navn, skal systemet automatisk tilføje “det betyder…” før oplæsning.
  9. Gem hvorfor et punkt blev valgt. Hvert punkt bør have en forklaring som “nyt produkt”, “praktisk for agenter” eller “matcher tidligere feedback”.

Næste anbefalede trin

  1. Gør NanoGPT-bloggen til en stabil daglig kilde.
  2. Tilføj feedbacktabeller og simple feedback-kommandoer.
  3. Lav én manuel briefing mere og vurder stil, tempo og stemme.
  4. Opret cron først, når formatet er godkendt.
  5. Tilføj “fortæl mere om nummer X” som første interaktive funktion.

Sikkerhed og drift