{"product_id":"n8n-turn-telegram-work-photos-into-grounded-linkedin-posts","title":"n8n: Turn Telegram Work Photos into Grounded LinkedIn Posts","description":"\u003ch3\u003eTurn Telegram Work Photos into Grounded LinkedIn Posts—With Human Approval\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow automatically converts a photo and caption from your Telegram bot into a professional, \u003cstrong\u003egrounded English LinkedIn post\u003c\/strong\u003e using \u003cstrong\u003eOpenRouter (vision + text)\u003c\/strong\u003e, then sends you a draft in Telegram for approval before publishing to LinkedIn.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eTriggers on Telegram messages\u003c\/strong\u003e when your bot receives a new message.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eValidates your input\u003c\/strong\u003e: checks that the message includes a photo and a caption of at least \u003cstrong\u003e20 characters\u003c\/strong\u003e. If incomplete, it prompts the sender in Telegram to provide what’s missing.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDownloads the photo\u003c\/strong\u003e and converts it into a \u003cstrong\u003ebase64 data URL\u003c\/strong\u003e for an OpenRouter vision request.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eExtracts photo-grounded details\u003c\/strong\u003e via OpenRouter (Gemini vision): produces structured JSON including owner-reported facts, visible details, uncertainties, and possible post angles.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWrites the LinkedIn draft\u003c\/strong\u003e via OpenRouter (GPT-4.1-mini): generates a professional English LinkedIn post in structured JSON, using the caption as the primary source and only photo details that directly support it (plus \u003cstrong\u003e3–5 hashtags\u003c\/strong\u003e).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSends a formatted preview to Telegram\u003c\/strong\u003e and \u003cstrong\u003ewaits for approval\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePublishes to LinkedIn only after approval\u003c\/strong\u003e as a public personal image post; if rejected, the workflow stops without publishing.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eShare daily work updates from a Telegram workflow inbox and publish them to LinkedIn with accurate, photo-backed wording.\u003c\/li\u003e\n  \u003cli\u003eTurn field photos (site work, prototypes, events) into consistent LinkedIn posts while keeping a manual approval step.\u003c\/li\u003e\n  \u003cli\u003eSaaS teams streamline “shareable wins” reporting without losing control of what gets posted.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eIntegrations:\u003c\/strong\u003e Telegram bot, LinkedIn (OAuth2), OpenRouter API (\u003ccode\u003ehttps:\/\/openrouter.ai\/api\/v1\/chat\/completions\u003c\/code\u003e).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOpenRouter steps:\u003c\/strong\u003e vision extraction with Gemini, then text generation with \u003cstrong\u003eGPT-4.1-mini\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n nodes mentioned:\u003c\/strong\u003e \u003cem\u003eif, set, code, merge, Telegram, LinkedIn\u003c\/em\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCore data handling:\u003c\/strong\u003e photo → base64 data URL → vision request → structured JSON → grounded LinkedIn post draft.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46105982402739,"sku":"N8N-19971","price":57.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/KaG2Gl4wfD912MzsB8G7h_LLYu02w3.png?v=1790499909","url":"https:\/\/buyflowscripts.com\/products\/n8n-turn-telegram-work-photos-into-grounded-linkedin-posts","provider":"N8N Commerce","version":"1.0","type":"link"}