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

Telegram + PostgreSQL: börsinläggsutkast du godkänner

Rickard Andersson Partner, Nodenordic.se

Att skriva ”dagliga marknadsuppdateringar” låter enkelt tills du sitter och stirrar på grafer, dubbelkollar indikatorer, skriver om samma disclaimers och ändå missar ditt publiceringsfönster.

Det är här Telegram Postgres-utkast hjälper. En content lead som försöker hålla produktionen konsekvent märker det först, men investeringsanalytiker och solooperatörer av nyhetsbrev fastnar i samma loop också. Du vill ha utkast du kan godkänna på några sekunder, inte ännu ett system du måste passa.

Det här arbetsflödet skapar utkast till marknadsinlägg två gånger om dagen, skickar dem till Telegram med ”Publicera” och ”Försök igen”, och sparar varje version i PostgreSQL så att du kan söka, återanvända och granska i efterhand.

Så fungerar den här automatiseringen

Se hur detta löser problemet:

n8n Workflow Template: Telegram + PostgreSQL: börsinläggsutkast du godkänner

Utmaningen: dagliga marknadsinlägg som inte slukar din dag

Marknadsinnehåll har ett brutalt krav: du måste dyka upp konsekvent, även när du är upptagen, även när data är stökig, även när ditt första utkast är… ärligt talat inte publicerbart. Om du skapar inlägg manuellt slutar det med att du hoppar mellan datakällor, räknar indikatorer, skriver en sammanfattning och sedan kopierar in den i Telegram (eller där du publicerar). Ett litet misstag kan tvinga fram en omtagning. Ännu värre: du kan inte enkelt svara på enkla frågor senare som ”Vad skrev vi om SBER förra månaden?” eftersom historiken är utspridd över chattar, dokument och halvfärdiga utkast.

Det blir snabbt mycket. Här är var det oftast faller isär.

  • Du lägger cirka 30–60 minuter per publiceringscykel på att hämta candles, kontrollera RSI/MACD och omvandla det till begriplig text.
  • Utkast publiceras utan en andra granskning, vilket gör att ett felaktigt påstående eller ett skrivfel blir en offentlig rättelse.
  • När du vill återanvända en tidigare inläggsstruktur hittar du den inte snabbt, så du skriver om från noll.
  • Att försöka igen efter ett data-/API-hack är manuellt, och det händer nästan alltid vid sämsta möjliga tidpunkt.

Lösningen: AI-utkast i Telegram, publicering på ditt godkännande

Det här n8n-arbetsflödet körs enligt schema två gånger om dagen och förbereder en fördefinierad uppsättning tickers (tänk GAZP, SBER, LKOH eller din egen lista). För varje ticker hämtar det historiska marknadscandles från ett broker-API, beräknar tekniska indikatorer (RSI, glidande medelvärden, MACD, Bollinger Bands, ADX) och lämnar datan till en AI-agent som skriver ett strukturerat inläggsutkast (rubrik plus sammanfattning). Utkastet lagras i PostgreSQL med en unik identifierare och levereras sedan till Telegram med inline-knappar så att du kan godkänna det. Tryck ”Publicera” så publicerar arbetsflödet via en HTTP-förfrågan till din målfeed och bekräftar att det lyckades. Tryck ”Försök igen” så kör den om genereringen, vilket är användbart när datan är tunn eller när första utkastet inte sitter.

Arbetsflödet börjar med en schemalagd trigger och ett steg som förbereder tickers. Därefter hämtar HTTP-förfrågningar marknadsdata och ett kodsteg beräknar TA-måtten innan AI:n skriver inlägget. Till sist blir Telegram ditt modereringslager, medan PostgreSQL blir ditt långsiktiga minne.

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

Effekt i verkligheten

Säg att du bevakar 5 tickers, två gånger om dagen. Manuellt, om det tar cirka 10 minuter per ticker att hämta data, kolla indikatorer och skriva ett kort inlägg, blir det ungefär 100 minuter per dag, plus publiceringspåslag. Med det här arbetsflödet blir ”arbetet” granskningstid: kanske 2 minuter per ticker för att läsa och godkänna i Telegram (cirka 20 minuter totalt), medan genereringen sker i bakgrunden. Det är ungefär en timme tillbaka varje dag, och du får dessutom ett korrekt formaterat PostgreSQL-arkiv som du kan söka i senare.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
  • Telegram för granskning av utkast och godkännandeknappar
  • PostgreSQL för att lagra utkast och publiceringshistorik
  • OpenRouter- eller OpenAI-API-nyckel (hämta den från din OpenRouter- eller OpenAI-dashboard)

Svårighetsgrad: Medel. Du kopplar konton, lägger till credentials och klistrar in ett par API-värden i rätt noder.

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

Flödet i arbetsflödet

En schemalagd körning drar igång allt. Två gånger om dagen startar arbetsflödet och förbereder din tickerlista så att en körning kan täcka flera symboler utan att du behöver röra något.

Marknadsdata hämtas och struktureras. En HTTP-förfrågan hämtar historiska candles från ditt broker-API, sedan beräknar ett kodsteg de tekniska indikatorerna (RSI, EMA/SMA, MACD, Bollinger Bands, ADX) så att AI:n får konsekventa indata.

AI:n skriver ett strukturerat utkast. En AI-agent som använder en OpenRouter/OpenAI-chatmodell tar fram en rubrik och sammanfattning i ett förutsägbart JSON-format, och en strukturerad parser validerar det. Om parsningen misslyckas får Telegram en felvarning i stället för att tyst producera skräp.

Telegram blir godkännandespärren. Utkastet lagras i PostgreSQL med ett unikt ID och skickas sedan till Telegram med inline-knappar. När du trycker ”Publicera” hämtar arbetsflödet det sparade utkastet via ID och skickar det till publicerings-endpointen. Om du trycker ”Försök igen” slussas det tillbaka in i genereringen för ett nytt försök.

Du kan enkelt ändra tickerlistan för att täcka nya symboler utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera triggern för schemalagd körning

Det här arbetsflödet körs enligt ett schema och reagerar även på Telegram-callback-åtgärder för manuell publicering.

  1. Öppna Scheduled Run Trigger och ställ in schemaregeln så att den körs kl. 11:15 och 18:15 med hjälp av de visade tidsinställningarna för Interval.
  2. Öppna Telegram Callback Trigger och säkerställ att Updates inkluderar callback_query.
  3. Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Telegram Callback Trigger.
  4. Notera parallellbeteendet: Telegram Callback Trigger skickar utdata till både Extract Callback Action och Acknowledge Callback parallellt.

Om ni vill köra enbart manuellt under testning, inaktivera Scheduled Run Trigger och använd en manuell körning med indata för Prepare Ticker Inputs.

Steg 2: Anslut Postgres och subarbetsflöden

Arbetsflödet lagrar utkast och hämtar dem vid publiceringsåtgärder, medan subarbetsflöden tillhandahåller autentiseringstokens.

  1. Öppna Store Post Record och välj tabellen analytics_history i schemat public; säkerställ att kolumnerna mappas till id, title, ticker, summary och classCode med hjälp av de uttryck som redan är definierade.
  2. Autentiseringsuppgifter krävs: Anslut era postgres-autentiseringsuppgifter i Store Post Record.
  3. Öppna Fetch Post by Identifier och bekräfta att Operation är select med Limit satt till 1 och Where-värdet satt till ={{ $json.id }}.
  4. Autentiseringsuppgifter krävs: Anslut era postgres-autentiseringsuppgifter i Fetch Post by Identifier.
  5. Öppna Run Sub-Workflow (Configure Required) och välj arbetsflödet som returnerar åtkomsttokens för publicering till Publish to Broker Feed.
  6. Öppna Run Sub-Workflow (Configure Required) 2 och välj arbetsflödet som returnerar åtkomsttokens för marknadsdata; bekräfta att indata använder ={{ $json.ticker }} och ={{ $json.classCode }}.

⚠️ Vanlig fallgrop: Om ni lämnar arbetsflödesväljaren tom i antingen Run Sub-Workflow (Configure Required) eller Run Sub-Workflow (Configure Required) 2 kommer alla efterföljande steg att misslyckas utan tydlig felindikering.

Steg 3: Konfigurera hämtning av marknadsdata och TA-bearbetning

Det här avsnittet bygger tickerlistan, hämtar candlesticks och beräknar tekniska indikatorer.

  1. Öppna Prepare Ticker Inputs och uppdatera standardtickers i kodblocket vid behov (för närvarande GAZP, SBER, LKOH med TQBR-klasskoder).
  2. Öppna Retrieve Market Candles och verifiera att URL är https://be.broker.ru/trade-api-market-data-connector/api/v1/candles-chart.
  3. Bekräfta att frågeparametrarna i Retrieve Market Candles är satta till ticker = {{ $('Prepare Ticker Inputs').item.json.ticker }}, classCode = {{ $('Prepare Ticker Inputs').item.json.classCode }}, timeFrame = H1, startDate = {{new Date(Date.now() - 24 * 60 * 60 * 1000 * 60).toISOString()}} och endDate = {{new Date().toISOString()}}.
  4. Verifiera att headern Authorization i Retrieve Market Candles använder =Bearer {{ $('Run Sub-Workflow (Configure Required) 2').item.json.access_token }}.
  5. Öppna Compute TA Metrics och behåll den tillhandahållna JS-koden intakt för att beräkna RSI, MACD, SMA/EMA, ADX och Bollinger Bands för varje ticker.

Om ni får fel av typen “Недостаточно баров (нужно >= 30)”, utöka startDate-intervallet eller verifiera att broker-endpointen returnerar tillräckligt många candlesticks.

Steg 4: Konfigurera AI Post Composer

AI-pipelinen omvandlar TA-mått till ett strukturerat JSON-utkast.

  1. Öppna AI Post Composer och behåll prompten i Text som den är, inklusive uttryck som {{ $json.context.ticker }}, {{ $json.context.timeFrame }} och {{ JSON.stringify($json, null, 2) }}.
  2. Säkerställ att AI Post Composer har Has Output Parser aktiverat så att den kan skicka resultat till Structured JSON Parser.
  3. Öppna Structured JSON Parser och bekräfta att Schema är satt till { "title": "string", "summary": "string" } med Auto Fix aktiverat.
  4. Öppna OpenRouter Chat Engine och verifiera att Model är openai/gpt-oss-120b.
  5. Autentiseringsuppgifter krävs: Anslut era openRouterApi-autentiseringsuppgifter i OpenRouter Chat Engine. OpenRouter Chat Engine är ansluten som språkmodell för AI Post Composer och Structured JSON Parser, så autentiseringsuppgifter måste läggas till i OpenRouter Chat Engine, inte i undernoderna.

Steg 5: Konfigurera publicering och Telegram-granskningsflöde

Det här flödet lagrar utkast, skickar dem till Telegram för godkännande och publicerar till broker-flödet baserat på callback-åtgärder.

  1. Bekräfta att huvudflödet för generering går enligt Scheduled Run TriggerPrepare Ticker InputsRun Sub-Workflow (Configure Required) 2Retrieve Market CandlesCompute TA MetricsAI Post ComposerCreate Unique IDStore Post RecordSend Draft for Review.
  2. Öppna Send Draft for Review och verifiera att Text använder ={{ $json.title }} och {{ $json.summary }}; behåll inline-keyboard-callbacks =publish::{{ $('Create Unique ID').item.json.data }} och =retry::{{ $('Create Unique ID').item.json.data }}.
  3. Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter för alla Telegram-åtgärdsnoder (totalt 6 noder), inklusive Send Draft for Review, Notify Draft Failure, Publish Success Alert, Publish Error Alert, Generation Error Alert och Acknowledge Callback.
  4. Öppna Extract Callback Action och bekräfta att tilldelningarna tolkar callbacken med ={{ $json.callback_query.data.split('::')[0] }} och ={{ $json.callback_query.data.split('::')[1] }}.
  5. Öppna Validate Action and Id och behåll båda villkoren som använder ={{ $json.action }} och ={{ $json.id }} med operatorn exists.
  6. Öppna Route Action Decision och verifiera att reglerna routar publish och retry med startsWith={{ $('Extract Callback Action').item.json.action }}.
  7. Öppna Assemble Publish Payload och behåll payload-strukturen med content: `${text}\n#Теханализ {$${ticker}}` och taggar ['Теханализ'].
  8. Öppna Publish to Broker Feed och verifiera endpointen https://my.broker.ru/web/api/v2/newsfeed/posts, Method POST, body ={{ $('Assemble Publish Payload').item.json.post.toJsonString() }} och header =Bearer {{ $json.access_token }}.

⚠️ Vanlig fallgrop: Ersätt alla [YOUR_ID]-platshållare i Telegram-noder, annars skickas inga meddelanden.

Steg 6: Testa och aktivera ert arbetsflöde

Validera både den schemalagda genereringsvägen och Telegram-callback-flödet för publicering innan ni går live.

  1. Klicka på Execute Workflow och bekräfta att Retrieve Market Candles returnerar candlestick-data och att Compute TA Metrics ger ett context-objekt med ticker och timeFrame.
  2. Säkerställ att AI Post Composer producerar ett giltigt JSON-objekt med title och summary, och att Store Post Record infogar en ny rad.
  3. Verifiera att Send Draft for Review publicerar utkastet till Telegram med inline-knappar och att ett klick på Опубликовать triggar Telegram Callback Trigger.
  4. Bekräfta att publiceringsvägen slutförs: Fetch Post by IdentifierRoute Action DecisionAssemble Publish PayloadRun Sub-Workflow (Configure Required)Publish to Broker FeedPublish Success Alert.
  5. När ni är nöjda, växla arbetsflödet till Active så att Scheduled Run Trigger körs i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp för

  • Telegram-credentials och botbehörigheter kan blockera callbacks. Om knappar slutar fungera, kontrollera bottoken i n8n och bekräfta att boten kan läsa callback queries i Telegram.
  • Om du använder Wait-liknande fördröjningar eller externa publicerings-endpoints varierar processtiderna. Öka väntetiden (eller lägg till ett omförsök) om nedströms HTTP-noder misslyckas på tomma svar.
  • Standardprompter i AI-agenten är generiska. Lägg in din tonalitet och regler för riskdisclaimer tidigt, annars kommer du att ”justera ton” i varje utkast för alltid.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för Telegram Postgres-utkast?

Cirka en timme om du redan har dina API:er och din Telegram-bot redo.

Kan icke-tekniska team implementera den här automatiseringen för inläggsgodkännande?

Ja, men någon behöver hantera de initiala API-credentials. Efter setup är modereringen bara knapptryck i Telegram.

Är n8n gratis att använda för det här arbetsflödet för Telegram Postgres-utkast?

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 in OpenAI/OpenRouter-användning, som oftast ligger på några cent per batch av utkast beroende på längd.

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

Två alternativ: n8n Cloud (hanterat, enklast setup) eller självhostning på en VPS. För självhostning är Hostinger VPS prisvärd och hanterar n8n bra. Självhostning ger dig obegränsat antal körningar men kräver grundläggande serverhantering.

Hur anpassar jag den här lösningen med Telegram Postgres-utkast till mina specifika utmaningar?

Du kan byta broker-datakälla genom att uppdatera HTTP Request-noderna som hämtar candles och sedan behålla samma ”Compute TA Metrics” och logik för AI-utkast. Vanliga justeringar är att ändra tickerlistan i kodnoden för ticker-förberedelse, justera AI-prompten i AI-agenten så att den matchar din ton och skicka godkännanden till en annan kanal genom att redigera Telegram-noden ”Send Draft for Review”.

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

Oftast är det en utgången eller felaktig bottoken i n8n. Det kan också vara att boten saknar behörigheter i målchatten, eller en callback/query-inställning som gör att inline-knappar inte tas emot, så kontrollera Telegram Trigger och botens åtkomst först.

Vilken kapacitet har den här lösningen med Telegram Postgres-utkast?

På en typisk n8n Cloud-plan kan du köra detta två gånger om dagen för dussintals tickers utan problem, och PostgreSQL lagrar utan ansträngning flera års utkast. Om du självhostar beror kapaciteten mest på din server och broker-API:ets gränser. I praktiken är den långsamma delen AI-anropet och eventuella rate limits vid hämtning av candles. Om du planerar att täcka hundratals tickers per körning, lägg till batchning och backoff så att du inte slår i begränsningarna.

Är den här automatiseringen för Telegram Postgres-utkast bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet använder kod för tekniska indikatorer, strukturerad JSON-parsning, förgrening (”Publicera” vs ”Försök igen”) och databaslagring, och den typen av logik blir lätt klumpig eller dyr i Zapier/Make. n8n låter dig också självhosta för obegränsade körningar, vilket spelar roll när du utökar tickers eller lägger till fler scheman. Om dina behov bara är ”skicka ett meddelande enligt schema” är Zapier helt okej. Men godkännanden, omförsök och ett PostgreSQL-arkiv är där n8n känns som rätt verktyg. Prata med en automationsexpert om du vill ha en snabb rekommendation.

När detta är live slutar du jaga utkast och börjar godkänna dem. PostgreSQL sparar bevisen, Telegram håller dig i kontroll.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal