Jeg taler meget om at AI skal løse rigtige forretningsproblemer, ikke bare imponere i en demo. Så lad mig vise et eksempel fra min egen hverdag.
Hver gang jeg skriver en artikel til docujai.com, skal den igennem den samme kæde af småopgaver: post teksten til Drupal via JSON:API, generér et illustrativt billede, giv billedet det rigtige visuelle udtryk med mit logo i hjørnet, upload det til artiklen, sæt alt-tekst, patch relationen mellem node og file. Det tager ikke lang tid at gøre manuelt. Det tager lang tid at gøre det hver gang.
Så jeg automatiserede det. Hele flowet er én Nushell-kommando.
Hele pipelinen på 26 linjer
use ../llms/gemllm.nu
use ./post.nu
use ../llms/gemima.nu
use ./image.nu
export def main [title] {
let start = $in
let res = $start | post $title
$start
| gemllm "Simplificer så det passer til en image output model
og fokuser på kun et koncept men klart og godt"
| gemima
( ^magick output.png -background white -gravity South -splice 0x64
~/solon/deliverables/Logo/mascot-logotype-mini.png
-gravity southeast -geometry +10+2 -composite composite.png )
image composite.png --id $res.id --alt $title
}
Det er det. Jeg skriver teksten, piper den ind, giver en titel. Tredive sekunder senere er artiklen publiceret med billede.
Hvad der egentlig sker
Første skridt poster markdown-teksten til Drupals JSON:API som en ny artikel-node. Jeg får node-id'et retur — det skal jeg bruge senere.
Andet skridt bruger Gemini som tekstmodel til at omskrive min artikel til en billedprompt. Det er vigtigt: en god artikelbeskrivelse er ikke en god billedprompt. LLM'en destillerer teksten til ét konkret visuelt koncept. Så pipes det resultat direkte ind i Gemini's billedmodel, som spytter en output.png ud.
Tredje skridt er det jeg vil dvæle lidt ved — ImageMagick.
Fjerde skridt uploader billedet som binary til Drupal, knytter det til artikel-noden via en JSON:API PATCH og sætter alt-tekst.
Hvorfor ImageMagick, ikke en AI-editor?
Den AI-genererede billedmodel laver et smukt billede. Men den ved ikke at docujAI har et logo, der skal stå i hjørnet. Og den ved ikke at jeg vil have en ren hvid stribe i bunden til at bære logoet, så det ikke ligger oven på motivet.
Jeg kunne bede LLM'en om det. Det ville koste mig tokens, tid og reproducerbarhed — og resultatet ville variere fra gang til gang. Logoet ville være tegnet en smule anderledes hver gang. Det er fint til en demo. Det er ikke fint til en brand-identitet.
Derfor ImageMagick. Et 35 år gammelt værktøj, gratis, deterministisk, og stadig uovertruffent til den type opgave.
Kommandoen, linje for linje
magick output.png \
-background white \
-gravity South \
-splice 0x64 \
~/solon/deliverables/Logo/mascot-logotype-mini.png \
-gravity southeast \
-geometry +10+2 \
-composite composite.png
output.png— input: det AI-genererede billede.-background white— den farve jeg vil fylde nye pixels med.-gravity South— fortæller ImageMagick at næste operation skal forankre sig i bunden.-splice 0x64— indsætter 64 pixels tom højde. Læg mærke til: splice er ikke et crop eller et resize. Det skubber billedet op og tilføjer 64 pixels ren hvid i bunden. Det betyder at motivet bevares intakt — jeg ødelægger ikke billedet for at gøre plads til logoet.- Så skifter jeg gravity til
southeast(nederste højre hjørne) og composite'er logoet ind med en offset på 10 pixels fra højre kant og 2 pixels op fra bunden. -composite composite.png— det færdige billede gemmes.
Resultatet: originalbilledet i fuld opløsning, en ren hvid stribe i bunden, og mit logo diskret placeret til højre. Hver gang, pixel-præcist, på under et sekund.
Pointen er ikke ImageMagick
Pointen er at god AI-automatisering ikke er "lad AI gøre det hele". Det er at vide hvor man skal bruge AI, og hvor man skal bruge et deterministisk værktøj.
LLM'en er god til at oversætte en artikel til en billedprompt — det er en kreativ, sproglig opgave.
Billedmodellen er god til at generere illustrationer — det er en kreativ, visuel opgave.
ImageMagick er god til at stanse et logo ind i nøjagtig samme position hver gang — det er en mekanisk, regelbaseret opgave.
Hvis jeg lod AI stå for det hele, ville jeg betale mere, vente længere og få et mindre konsistent resultat. Ved at bruge hvert værktøj til det det er godt til, får jeg et flow der er hurtigt, billigt og forudsigeligt.
Hvad I kan tage med hjem
Når I kigger på AI-automatisering i jeres egen virksomhed, så stil det her spørgsmål for hvert skridt i processen:
Er dette skridt kreativt eller mekanisk?
Kreative skridt — oversættelse, omformulering, klassificering, ide-generering — er hvor AI tjener sine penge. Mekaniske skridt — filhåndtering, API-kald, billedmanipulation efter faste regler — skal ikke have AI. De skal have et script.
Jeg bygger ikke et produkt her. Jeg bygger mit eget arbejdsflow. Men princippet skalerer: hver gang I sætter AI til at gøre noget ImageMagick, et regneark, eller en 20-linjers Python-funktion kunne gøre billigere og mere pålideligt, så har I valgt det dyre værktøj af de forkerte grunde.
Og når nogen pitcher jer en AI-løsning der også skal placere logoet, gemme filen, og sende en bekræftelsesmail — så spørg dem hvad der er AI, og hvad der er script. Hvis de ikke kan svare klart, ved de det ikke selv.