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

GitHub till Google Sheets: logga bounty-leads snabbt

Rickard Andersson Partner, Nodenordic.se

Att manuellt leta igenom GitHub efter bounty-ärenden ser enkelt ut tills du gör det varje dag. Flikarna blir fler, du glömmer vad du redan har kollat, och de bästa “💎 Bounty”-ärendena hinner bli tagna medan du fortfarande kopierar länkar till ett kalkylark.

Den här GitHub bounty tracker-automationen hjälper frilansare först (för att hastighet spelar roll), men utvecklingsansvariga på byrå och community managers känner av samma kaos. Du får ett strukturerat Google-kalkylark med alla bounty-ärenden som hittas, plus ett e-postlarm när något nytt är värt att hoppa på.

Du ser exakt hur arbetsflödet hittar ärenden med bounty-etikett, förhindrar dubbletter, loggar dem till två ark och håller statusar uppdaterade så att din “leadlista” förblir korrekt.

Så fungerar automationen

Hela n8n-arbetsflödet, från trigger till slutresultat:

n8n Workflow Template: GitHub till Google Sheets: logga bounty-leads snabbt

Problemet: GitHub bounty-leads faller mellan stolarna

GitHubs sök är kraftfull, men den är inget system. Du kör en sökning, öppnar tio ärenden och när du har läst dem minns du inte vilka du redan har loggat, vilka som är inaktuella och vilka som är helt nya. Än värre: “bounty”-ärenden förändras snabbt. De stängs, redigeras eller löses av någon som är snabbare. Om du spårar möjligheter för dig själv eller ditt team blir manuell uppföljning ett märkligt deltidsjobb som stjäl fokus från arbetet som faktiskt drar in pengar.

Det summerar sig snabbt. Och det fallerar oftast på samma få ställen.

  • Du spårar samma bounty-ärende två gånger eftersom förra veckans anteckningar ligger utspridda i bokmärken, DM:ar och halvfärdiga kalkylark.
  • Kontroller varje timme blir inte kontroller varje timme när de bygger på “jag gör det efter lunch”. Det glider, och då missar du de bästa leadsen.
  • Statusändringar (stängda ärenden, nya kommentarer, uppdaterade bounty-detaljer) missas, så du slösar tid på att jaga döda möjligheter.
  • Notiser blir brusiga när de inte filtreras, vilket gör att du till slut ignorerar dem.

Lösningen: Logga bounty-ärenden automatiskt och larma snabbt

Det här arbetsflödet gör GitHub bounty-discovery till en repeterbar pipeline. Varje timme söker det på GitHub efter öppna ärenden med etiketten “💎 Bounty”, jämför resultatet mot det du redan har i Google Sheets och lägger till allt nytt i din huvudtracker (Sheet1) med nyckeldetaljer och direkta länkar, så att du kan skanna möjligheter på ett ställe. Därefter filtrerar det ner till det som faktiskt är färskt (skapat inom de senaste 5 dagarna) och skickar ett formaterat HTML-e-postlarm. Som tillval kan det även pinga WhatsApp via WhatsApp Business API, men den delen är avstängd som standard så att du kan börja enkelt.

Sedan gör det något som de flesta “lead-insamlare” missar. Var 6:e timme kontrollerar arbetsflödet dina redan loggade ärenden, hämtar uppdaterade ärendedetaljer och uppdaterar statusfält (öppen/stängd, kommentarsändringar) så att du inte jagar spöken. Dina ark hålls aktuella utan att du behöver passa dem.

Det du får: automation vs. resultat

Exempel: så här ser det ut

Säg att du kollar GitHub bounty-ärenden 3 gånger om dagen via ett par sökningar och repos. Om varje genomgång tar cirka 15 minuter (sök, öppna ärenden, kopiera detaljer till ett ark) blir det ungefär 45 minuter per dag, eller cirka 4 timmar per vecka. Med det här arbetsflödet är “kollen” automatiserad varje timme och loggningen sker också automatiskt. Du lägger kanske 10 minuter om dagen på att granska Sheet1 och svara på de bästa leadsen, eftersom grovjobbet redan är gjort.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
  • GitHub för att söka och läsa ärendedata
  • Google Sheets för att lagra loggar i Sheet1 och Sheet2
  • Gmail för att skicka HTML-e-postlarm
  • GitHub personal access token (skapa den i GitHub Developer Settings)

Kunskapsnivå: Medel. Du kopplar konton, lägger in tokens och säkerställer att dina kolumner i Sheets matchar det som arbetsflödet skriver.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Trigger för timsökning. Enligt schema startar n8n arbetsflödet och kör en GitHub-sökfråga som riktar in sig på öppna ärenden med etiketten “💎 Bounty”. Parallellt laddar det befintliga rader från din Sheet1-tracker så att arbetsflödet vet vad du redan har fångat upp.

Filtrering och deduplicering. Resultaten bryts ut till enskilda ärenden, slås ihop med din befintliga arkdata och filtreras så att bara genuint nya ärenden går vidare. Det är den här delen som håller din tracker felfri – ärligt talat skillnaden mellan “automation” och “spam”.

Loggning och larm. Nya ärenden läggs till i Sheet1, sedan håller ett filter för “senaste bounties” notiser begränsade till objekt skapade de senaste 5 dagarna. Arbetsflödet bygger ett GitHub-stylat HTML-mejl och skickar det via Gmail; WhatsApp-larm finns om du väljer att aktivera den noden senare.

Löpande statusuppdateringar. Ett separat schema kör var 6:e timme, hämtar ärendedetaljer på nytt för poster som redan finns i Sheet1 och Sheet2 och uppdaterar rader när något har ändrats (stängd status, kommentarsaktivitet). Din lista förblir pålitlig utan extra arbete.

Du kan enkelt ändra GitHub-sökfrågan för att fokusera på ett specifikt repo, en org eller en etikettmix utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera schematriggrarna

Konfigurera de två schematriggrarna som kör den timvisa bounty-skanningen och statusuppdateringen var sjätte timme.

  1. Öppna Hourly Schedule Kickoff och bekräfta att regelintervallet är inställt på timvis (rule → interval → field: hours).
  2. Öppna Six-Hour Update Trigger och ställ in regelintervallet till var sjätte timme (rule → interval → field: hours, hoursInterval: 6).
  3. Notera parallellbeteendet: Hourly Schedule Kickoff skickar utdata till Search GitHub Issues, Retrieve Sheet1 Rows och Retrieve Recent Sheet Rows parallellt.
  4. Notera även: Six-Hour Update Trigger skickar utdata till Fetch Sheet2 Entries och Fetch Sheet1 Entries parallellt.

Om ni vill ha snabbare notifieringar vid testning kan ni tillfälligt förkorta intervallet och sedan växla tillbaka till timvis/sex timmar när allt är verifierat.

Steg 2: anslut Google Sheets

Det här arbetsflödet använder flera Google Sheets-noder för att lagra ärenden och uppdatera status i Sheet1 och Sheet2.

  1. Anslut autentiseringsuppgifter för alla Google Sheets-noder (Retrieve Sheet1 Rows, Append New Issues, Retrieve Recent Sheet Rows, Log Recent Bounties, Fetch Sheet2 Entries, Update Sheet2 Status, Fetch Sheet1 Entries, Update Sheet1 Status). Credential Required: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter.
  2. I Retrieve Sheet1 Rows, ställ in Document till public-open-source-bounty och Sheet till Sheet1.
  3. I Retrieve Recent Sheet Rows, ställ in Document till public-open-source-bounty och Sheet till Sheet2.
  4. I Append New Issues, behåll Operation inställt på append och säkerställ att kolumnmappningarna använder befintliga uttryck, till exempel {{ $('Exclude Existing Issues').item.json.html_url }} för Issue URL.
  5. I Log Recent Bounties, behåll Operation inställt på append och behåll befintliga mappningar som {{ $('Filter Recent Bounties').item.json['Issue URL'] }}.
  6. I Update Sheet1 Status och Update Sheet2 Status, behåll Operation inställt på update och behåll matchingColumns som row_number.

⚠️ Vanlig fallgrop: Säkerställ att Sheet1 och Sheet2 har förväntade kolumnrubriker (Issue URL, Issue Name, Issue state, etc.), annars misslyckas mappningen.

Steg 3: konfigurera hämtning av GitHub-ärenden och merge-logik

Konfigurera GitHub-sökningen, splitta ut ärendeobjekt, slå ihop med befintliga rader i arket och filtrera bort dubbletter.

  1. Öppna Search GitHub Issues och bekräfta att query-parametrarna är inställda på q=is:issue label:"💎 Bounty" state:open och per_page=100. Credential Required: Anslut era httpBearerAuth-autentiseringsuppgifter.
  2. Verifiera att paginering i Search GitHub Issues använder {{ $pageCount + 1 }} och stoppar när {{ $response.body.items.length < 100 }}.
  3. I Expand Issue Items, ställ in Field To Split Out till items.
  4. I Combine Issue Streams, behåll Mode inställt på combine, Join ModekeepNonMatches, och matcha html_url (input1) mot Issue URL (input2).
  5. I Exclude Existing Issues, behåll filtervillkoret som använder {{ $('Retrieve Sheet1 Rows').all().map(item => item.json['Issue Name']) }} som inte innehåller {{ $json.title }}.

Det här avsnittet bygger på att Retrieve Sheet1 Rows matar in i Combine Issue Streams; säkerställ att anslutningen ligger på input 2 enligt konfigurationen.

Steg 4: konfigurera aviseringar och e-postformatering

Konfigurera WhatsApp-aviseringar, bygg HTML-mejlet och skicka e-postnotisen för nya bounties.

  1. I Dispatch WhatsApp Alert, ställ in Operation till send och ersätt Phone Number ID och Recipient Phone Number med era ID:n. Credential Required: Anslut era whatsAppApi-autentiseringsuppgifter.
  2. Behåll WhatsApp-meddelandets body-uttryck som det är, till exempel {{ $('Expand Issue Items').item.json.title }} och {{ $json.created_at }}.
  3. I Build HTML Template, behåll den angivna HTML:en och uttryck som {{ $('Exclude Existing Issues').item.json.title }} och {{ $json.state === 'open' ? 'status-open' : 'status-closed' }}.
  4. I Send Email Notice, ställ in Send To till er adress och Message till {{ $json.html }}. Credential Required: Anslut era gmailOAuth2-autentiseringsuppgifter.
  5. Bekräfta körordningen: Dispatch WhatsApp AlertBuild HTML TemplateSend Email NoticeLog Recent Bounties.

⚠️ Vanlig fallgrop: Dispatch WhatsApp Alert är inaktiverad som standard. Aktivera den först efter testning för att undvika oavsiktliga meddelanden.

Steg 5: konfigurera statusuppdatering och uppdateringar i arken

Den här grenen uppdaterar ärendestatus och antal kommentarer var sjätte timme för både Sheet1 och Sheet2.

  1. I Fetch Issue Details A och Fetch Issue Details B, behåll URL-uttrycket {{ $json['Issue Repo URL'].replace('https://github.com/', 'https://api.github.com/repos/') + '/issues/' + $json['Issue Number'] }}. Credential Required: Anslut era httpBearerAuth-autentiseringsuppgifter.
  2. I Detect Sheet2 Changes, behåll OR-villkoret som kontrollerar state-/comment-ändringar med {{ $json.state }} och {{ $json.comments }}.
  3. I Update Sheet2 Status, verifiera att de mappade värdena använder {{ $('Fetch Sheet2 Entries').item.json.row_number }}, {{ $('Fetch Issue Details A').item.json.state }} och {{ $('Fetch Issue Details A').item.json.comments }}.
  4. I Detect Sheet1 Changes, behåll OR-villkoret som jämför {{ $json.state }} och {{ $json.updated_at }} mot värden i Sheet1.
  5. I Update Sheet1 Status, verifiera att de mappade värdena använder {{ $('Fetch Sheet1 Entries').item.json.row_number }}, {{ $('Fetch Issue Details B').item.json.state }} och {{ $('Fetch Issue Details B').item.json.updated_at }}.

Om ni inte ser några uppdateringar, kontrollera att kolumnerna i Sheet1/Sheet2 matchar exakt de fältnamn som används i uttrycken.

Steg 6: testa och aktivera ert arbetsflöde

Verifiera end-to-end-körningen och aktivera sedan arbetsflödet för produktion.

  1. Klicka Execute Workflow och bekräfta att Hourly Schedule Kickoff triggar den parallella grenen till Search GitHub Issues, Retrieve Sheet1 Rows och Retrieve Recent Sheet Rows.
  2. Verifiera att nya ärenden passerar genom Exclude Existing Issues och skrivs av Append New Issues.
  3. Bekräfta att Build HTML Template ger ut HTML och att Send Email Notice skickar ett mejl till [YOUR_EMAIL].
  4. Kontrollera Sheet2 för att säkerställa att Log Recent Bounties lade till en ny rad efter att mejlet levererats.
  5. Aktivera arbetsflödets toggle för att aktivera båda schematriggrarna för kontinuerlig övervakning.

⚠️ Vanlig fallgrop: Om mejl eller skrivningar till arket misslyckas, kontrollera igen att alla nödvändiga autentiseringsuppgifter är anslutna och att kalkylblads-ID:n är korrekta.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • GitHub-inloggningar kan löpa ut eller sakna rätt scopes. Om sökningar plötsligt inte ger något, kontrollera din personal access token i n8n först och bekräfta sedan att den kan läsa de repos du riktar in dig på.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här GitHub bounty tracker-automationen?

Cirka 30–60 minuter om ditt Google-ark och din GitHub-token är redo.

Behöver jag kunna koda för att automatisera GitHub bounty-tracking?

Nej. Du klistrar in en GitHub-token, kopplar Google Sheets och Gmail och bekräftar sedan att kolumnerna mappas korrekt.

Är n8n gratis att använda för det här GitHub bounty tracker-arbetsflödet?

Ja. n8n har ett gratis självhostat alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med kostnader för WhatsApp Business API om du aktiverar WhatsApp-larm.

Var kan jag hosta n8n för att köra den här automationslösningen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärt och klarar n8n bra. Självhosting ger obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här GitHub bounty tracker-arbetsflödet för specifika repositories i stället för hela GitHub?

Ja, och det är en av de bästa justeringarna du kan göra. Uppdatera queryn i HTTP Request-noden “Search GitHub Issues” för att rikta in dig på en org, ett repo eller till och med flera etiketter. Många team justerar också logiken i “Filter Recent Bounties” för att bredda eller snäva in 5-dagarsfönstret, och lägger till en enkel regel som hoppar över ärenden utan ett tydligt bounty-belopp.

Varför fallerar min Google Sheets-anslutning i det här arbetsflödet?

Oftast är det en utgången Google OAuth-anslutning i n8n, så återanslut dina Google Sheets-uppgifter och välj kalkylarket igen. Kontrollera också att arknamnen matchar det som arbetsflödet förväntar sig (Sheet1 och Sheet2) och att ditt konto har redigeringsåtkomst. Om arbetsflödet kan läsa men inte skriva är det nästan alltid behörigheter.

Hur många ärenden kan den här GitHub bounty tracker-automationen hantera?

Många, eftersom den stödjer paginering och bearbetar resultat i batchar.

Är den här GitHub bounty tracker-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet kör två schemalagda processer (timsvis discovery och 6-timmars uppdateringar), plus dubblettkontroll mot ett ark och villkorade notifieringar – vilket är där Zapier och Make kan bli pilligt eller dyrt. n8n ger dig också möjligheten att självhosta, vilket spelar roll om du kör sökningar ofta. Om du bara vill ha ett grundflöde av typen “nytt GitHub-ärende → lägg till rad” kan Zapier gå snabbare att klicka ihop. Prata med en automationsexpert om du vill ha en ärlig rekommendation utifrån din volym och budget.

När detta väl rullar håller sig din bounty-leadlista uppdaterad utan konstant kontroll. Arbetsflödet tar hand om de repetitiva delarna så att du kan fokusera på att svara och leverera.

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