Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

OpenAI + Google Sheets: bokhyllfoton till boklista

Rickard Andersson Partner, Nodenordic.se

Du tar en snabb bild av bokhyllan, och sen kommer verkligheten ikapp. Suddiga ryggar. Halva titlar. Författarnamn du är säker på att du kan, men som du inte riktigt får rätt när du ska skriva in dem. Och när du väl börjar fastnar du i en loop av copy-paste, googlande och att fixa dubbletter.

Den här OpenAI Sheets-automationen är en räddare i nöden för marknadsförare som bygger läslistor till innehåll, små företagare som katalogiserar lager eller kontorsböcker, och byråteam som gör “böcker vi älskar” till delningsbara tillgångar. Du landar i en felfri, validerad lista som du faktiskt kan lita på.

Nedan ser du hur arbetsflödet förvandlar en enda bilduppladdning till en deduplicerad, kalkylarksredo boklista, med AI för extrahering och Google Books för verifiering.

Så fungerar den här automationen

Se hur detta löser problemet:

n8n Workflow Template: OpenAI + Google Sheets: bokhyllfoton till boklista

Utmaningen: att göra stökiga foton till strukturerad bokdata

Bilder på bokryggar ser enkla ut tills du försöker omvandla dem till strukturerad data. Titlar kapas av kameravinkeln. Serienamn flyter ihop med undertitlar. Och om du jobbar snabbt skriver du “Atomic Habit” i stället för “Atomic Habits”, och undrar senare varför du har dubbletter. Det frustrerande är att jobbet inte är svårt, det är bara oändligt. Några hyllor kan bli en hel eftermiddag av “verifiera detta”, “fixa det där” och “har jag redan lagt till den här?”.

Det drar iväg snabbt. Här är var det fallerar i verkligheten.

  • Manuell avskrift från foton går långsamt, och felen syns inte förrän du ska sortera eller söka.
  • Ofullständiga titlar tvingar dig in i detektivläge, vilket betyder fler flikar och ständig kontextväxling.
  • Dubbletter smyger in eftersom “författare + titel” inte blir konsekvent när man gör snabba inmatningar.
  • En person blir flaskhalsen, eftersom ingen vill “städa listan” i efterhand.

Lösningen: extrahera, validera och returnera en deduplicerad boklista

Det här arbetsflödet börjar med att ta emot en bild-URL via en webhook, oftast från en enkel uppladdare i gränssnittet (i originalfallet låg bilden i Supabase-lagring). n8n normaliserar bildindatan så att AI-steget alltid vet var den ska titta. Sedan läser OpenAI:s bildanalys hyllfotot och plockar ut sannolika boktitlar (och den författartext som syns). Därefter delar arbetsflödet upp resultatet i individuella “bok-kandidater”, eftersom att validera en stökig sträng i taget är det enda sättet att hålla hög precision. Varje kandidat kontrolleras via en HTTP-förfrågan till Google Books API, vilket hjälper till att återställa saknade ord och bekräfta rätt titel/författare. Till sist standardiserar n8n datan, bygger upp en felfri lista, deduplicerar den och skickar tillbaka den till ditt gränssnitt.

Arbetsflödet startar när din app skickar en bild-URL till n8n. OpenAI extraherar text från bokryggarna, och Google Books-uppslag validerar varje post. I slutet får du en konsoliderad lista redo för Google Sheets eller vilken databas du föredrar.

Vad som förändras: före vs. efter

Effekt i verkligheten

Säg att du fotograferar en hylla med runt 30 böcker. Manuellt lägger även en noggrann person cirka 3 minuter per bok på att skriva, söka och rätta misstag, så du landar på ungefär 90 minuter. Med det här arbetsflödet laddar du upp en gång, väntar på att extrahering och validering kör (ofta några minuter) och gör sedan en snabb manuell kontroll för udda specialfall. De flesta team får ner den där 90-minuterssysslan till cirka 10 minuter faktiskt arbete.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • OpenAI för bildförståelse och extrahering.
  • Google Sheets för att lagra och dela den slutliga listan.
  • Åtkomst till Google Books API (skaffas via Google Cloud Console).

Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och är bekväm med att testa webhook-förfrågningar.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Arbetsflödets flöde

En webhook tar emot bild-URL:en. Ditt gränssnitt (eller ett enkelt formulär) skickar en länk till den uppladdade bokhyllbilden så att n8n kan starta körningen direkt.

Bildindatan normaliseras. n8n lagrar bildreferensen i ett konsekvent fält, vilket förhindrar “det funkade igår”-problemet när ditt gränssnitt ändrar payload-struktur.

OpenAI läser bokhyllan och extraherar kandidater. Arbetsflödet analyserar fotot och plockar ut en grov lista med boktitlar (och författare när det syns). Det går snabbt, men det är inte pålitligt ännu.

Varje kandidat valideras med Google Books. Arbetsflödet delar upp posterna, frågar Google Books API via en HTTP-förfrågan och standardiserar samt deduplicerar sedan slutresultatet så att “korrekt formaterad data” förblir korrekt formaterad.

Du kan enkelt byta valideringskälla efter dina behov. Vissa team behåller Google Books, andra lägger till en kontroll mot en intern katalog, beroende på vad “verifierad” betyder för dem. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera webhook-triggern

Det här arbetsflödet startar när ett externt system skickar en POST-begäran med en bild-URL. Konfigurera webhook-endpointen och svarsläget.

  1. Lägg till en nod Incoming Webhook Trigger.
  2. Ställ in HTTP MethodPOST.
  3. Ställ in Path365ea003-fe66-4211-ae03-69f1456d768e.
  4. Ställ in Response ModeresponseNode så att svaret hanteras av Return Webhook Response.

Steg 2: normalisera inkommande bild-URL

Förbered ett konsekvent image-fält så att AI-noden kan analysera rätt URL, oavsett vilken input-nyckel som används.

  1. Lägg till en nod Normalize Image Input och koppla den till Incoming Webhook Trigger.
  2. I Assignments lägger ni till ett fält med namnet image med värdet {{ ($json.body?.imageUrl || $json.body?.image || $json.imageUrl || $json.image || '').trim() }}.

Skicka bild-URL:en som imageUrl eller image i JSON-body för att säkerställa att arbetsflödet läser den korrekt.

Steg 3: konfigurera AI-bildanalysen

AI-noden extraherar boktitlar och författare från bilden och returnerar strikt JSON som nästa nod kan tolka.

  1. Lägg till Image Content Analyzer och koppla den till Normalize Image Input.
  2. Ställ in Resourceimage och Operationanalyze.
  3. Ställ in Image URLs{{$json.image}}.
  4. Ställ in Text till hela instruktionsprompten: =You are a STRICT transformer. Analyze the image of book spines and return only clearly readable titles and authors. Do NOT guess. If the author isn't clearly visible, set "author": null. Normalize capitalization. Deduplicate by title. Output STRICT JSON only: {"books":[{"title":"string","author":"string|null"}]} .
  5. Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter i Image Content Analyzer.

Steg 4: tolka, verifiera och standardisera bokdata

Dela upp AI-JSON:en i enskilda objekt, verifiera varje titel mot Google Books och standardisera de slutliga fälten för titel och författare.

  1. Lägg till Split Book Items efter Image Content Analyzer för att expandera JSON:en till enskilda bokobjekt.
  2. Lägg till Verify Title via API efter Split Book Items och ställ in URL till https://www.googleapis.com/books/v1/volumes.
  3. Aktivera Send Query och ställ in parametern q till {{ 'intitle:"' + $json.title.replace(/"/g,'') + '"' + ($json.searchAuthor ? ' inauthor:"' + $json.searchAuthor.replace(/"/g,'') + '"' : '') }}.
  4. Lägg till query-parametrarna: maxResults = 5, printType = books, orderBy = relevance.
  5. Lägg till Standardize Book Data efter Verify Title via API och ställ in =title till {{ $json.items?.[0]?.volumeInfo?.title || $prevNode('Split Book Items').json.title }}.
  6. Ställ in author till {{ $json.items?.[0]?.volumeInfo?.authors?.[0] || $prevNode('Split Book Items').json.author || null }}.

⚠️ Vanlig fallgrop: Om Google Books API inte returnerar några resultat faller arbetsflödet tillbaka till AI:ns ursprungliga output. Säkerställ att er AI-prompt returnerar strikt JSON för att undvika tolkningsfel i Split Book Items.

Steg 5: bygg den slutliga svarspayloaden

Bygg om en ren lista med unika böcker och returnera den till den som anropar webhooken.

  1. Lägg till Rebuild Book List efter Standardize Book Data för att avduplicera titlar och returnera en enda array.
  2. Lägg till Return Webhook Response efter Rebuild Book List.
  3. Ställ in Respond Withjson och Response Body till {{$json}}.

Steg 6: testa och aktivera ert arbetsflöde

Verifiera arbetsflödet end-to-end med en riktig bild-URL och aktivera det sedan för produktion.

  1. Klicka på Execute Workflow och skicka en POST-begäran till Incoming Webhook Trigger-URL:en med en JSON-body som {"imageUrl":"https://example.com/book-spines.jpg"}.
  2. Bekräfta att output från Return Webhook Response innehåller en books-array med fälten title och author.
  3. Om svaret är tomt, kontrollera att Normalize Image Input extraherar en giltig image-URL och att Image Content Analyzer returnerar giltig JSON.
  4. Växla arbetsflödet till Active för att aktivera webhook-hantering i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp för

  • Google Books API-inloggningsuppgifter kan gå ut eller vara kopplade till fel projekt. Om det skapar fel, kontrollera först API-nyckelns begränsningar och kvotinställningar i Google Cloud Console.
  • Om du lägger till Wait-noder (eller om din bild ligger i ett långsamt lagringslager) varierar bearbetningstiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
  • Standardprompter i OpenAI-noden för bildanalys är generiska. Lägg till regler som “returnera titel och författare separat” tidigt, annars kommer du rensa output för evigt.

Vanliga frågor

Hur snabbt kan jag implementera den här OpenAI Sheets-automationen?

Cirka en timme om du redan har API-nycklar och en enkel uppladdare.

Kan icke-tekniska team implementera den här bokliste-automationen?

Ja, men någon behöver hantera webhooken och API-nycklarna en gång. Efter det är användningen bara “ladda upp foto, få lista”.

Är n8n gratis att använda för det här arbetsflödet för OpenAI Sheets-automation?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna in OpenAI API-användning och Google Books API-kvot (ofta gratis vid låg volym).

Var kan jag hosta n8n för att köra den här OpenAI Sheets-automationen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Hur anpassar jag den här OpenAI Sheets-automationslösningen till mina specifika utmaningar?

Du kan behålla samma struktur och byta ut delar utifrån vad du räknar som “validerat”. Många team ersätter HTTP-förfrågan “Verify Title via API” med en sökning i en intern databas, eller lägger till en If-regel som flaggar matchningar med låg säkerhet för granskning. Om du vill att resultatet ska hamna i Sheets automatiskt lägger du till ett Google Sheets-steg “Append row” direkt efter “Rebuild Book List”. Du kan också justera OpenAI-prompten för bilden för att tvinga format (till exempel alltid returnera JSON med fälten title och author).

Varför misslyckas min OpenAI-anslutning i det här arbetsflödet?

Oftast är det ett API-nyckelproblem eller en saknad behörighet i dina n8n-inloggningsuppgifter. Uppdatera OpenAI-credentials i n8n och bekräfta sedan att noden använder rätt modell för bildanalys. Om bilden är privat (till exempel en signerad URL som har gått ut) kan OpenAI inte hämta den, och då misslyckas körningen även om webhook-payloaden ser korrekt ut.

Vilken kapacitet har den här OpenAI Sheets-automationslösningen?

Om du kör self-hosted beror kapaciteten främst på din server och API-gränser. På n8n Cloud beror din exekveringsgräns på din plan, och det här arbetsflödet använder typiskt en körning per uppladdad bild (plus HTTP-anrop per post inne i körningen). I praktiken kan ett litet team hantera dussintals foton per dag utan att tänka på det, och sedan skala upp genom att lägga till köhantering och bevaka Google Books/OpenAI-kvoter. Om du behöver hög volym är den första flaskhalsen vanligtvis API:ernas rate limits, inte n8n i sig.

Är den här OpenAI Sheets-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet tjänar på kodbaserad uppdelning, valideringsanrop per post och dedupliceringslogik, och n8n hanterar den typen av förgrening utan att din prissättning blir en obehaglig överraskning. Zapier eller Make kan fortfarande fungera om du förenklar processen, men du får oftast fler steg och mindre kontroll över hur poster normaliseras. Ärligt talat beror det “bästa” valet på hur stökiga dina bilder är och hur strikt du vill att valideringen ska vara. Om teamet vill ha hjälp att välja, prata med en automationsexpert så kartlägger vi den enklaste vägen.

När det här väl rullar blir en bild på bokhyllan till användbar data utan baksmällan av efterstädning. Sätt upp det, kör det vid behov och spara tiden till arbete som faktiskt kräver en mänsklig hjärna.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal