Authentische LinkedIn-Automatisierung mit n8n: Täglich posten ohne Authentizitätsverlust

Haupterkenntnis: Ein hybrider Ansatz aus manuellen Post-Ideen und KI-Automatisierung ermöglicht tägliches LinkedIn-Posting ohne Zeitaufwand und ohne die persönliche Stimme zu verlieren.

Creator: Germanaicreator
Branche: Marketing
Bereich: Automation

Tags: linkedin, n8n, social-media-automation, content-automation, telegram-bot, replicate, flask, b2b-marketing

Kurzbeschreibung

Day 13 der „30 Day AI Automation Pro Challenge”: Dominic zeigt, wie er sein LinkedIn-Posting mit n8n vollständig automatisiert hat – inklusive KI-Bildgenerierung, Flask-App und Posting auf Personal- und Company-Page.

Langbeschreibung

Der Creator erklärt sein persönliches System, mit dem er täglich auf LinkedIn postet, ohne stundenlang Content zu erstellen. Die Ideen kommen weiterhin von ihm selbst (via Telegram-Bot in ein Google Sheet), aber alles danach – Sprachpolitur durch ein LLM, Bildgenerierung via Replicate, Bildaufbereitung via Flask/Pillow, sowie das eigentliche Posting auf Personal- und Company-Page – übernimmt ein n8n-Workflow vollautomatisch. Zusätzlich gibt es einen Reminder-Workflow, der warnt, wenn der Post-Vorrat zur Neige geht.

Stichpunkte

  • Hybrider Ansatz: Idee vom Menschen, Ausführung durch KI – verhindert generischen Content
  • Telegram → Google Sheet → n8n-Workflow als Eingabekanal für Post-Ideen
  • LLM 1: Sprachpolitur + CTA + Bildprompt (Corporate Colors: dunkelblau)
  • LLM 2: Titel (max. 5-6 Wörter) + 3 Bulletpoints (max. 7-8 Wörter) für das Post-Bild
  • Replicate für KI-Bildgenerierung, Flask/Pillow für Bild-Compositing
  • Posting auf Personal-Page (type: person) UND Company-Page (type: organization) in einem Workflow
  • Google Sheet-Update nach Posting: posted wird auf yes gesetzt → kein Doppelposting
  • Reminder-Workflow: Telegram-Alert bei weniger als 2 verbleibenden Posts
  • Keine M-Dashes, kein Markdown im Post-Text – explizit im System-Prompt verboten
  • Alle Workflows als JSON downloadbar unter challenge.germanaicreator.com

Zitate

“Posts 100% on autopilot don’t work. I already tested this out. You lose authenticity.” “All I have to do is sit down in a café with a nice coffee and a piece of cake, think of good post ideas, post them to my Telegram bot – and every day on LinkedIn there’s a nice post.” “Never use em dashes – it indicates right away that it is done by ChatGPT.”

Action Items

  1. Google Sheet anlegen: Spalten post, post_number, posted; Tab umbenennen in post pipeline
  2. n8n Scheduled Trigger auf 08:00 Uhr täglich konfigurieren
  3. Google Sheets Node: Filter auf Spalte posted = no setzen
  4. JavaScript-Code-Node (von ChatGPT generiert): ältesten ungeposteten Eintrag aus der Queue selektieren
  5. LLM-Node 1 (System Prompt): Sprachpolitur + CTA + Bildprompt in Corporate Colors, JSON-Output {new_post_text, image_prompt}, M-Dashes und Markdown verbieten
  6. Replicate-Node: API-Token eintragen, image_prompt aus LLM-Output übergeben
  7. LLM-Node 2: Titel + 3 Bulletpoints generieren, JSON-Output {post_title, bullet_1, bullet_2, bullet_3}
  8. Flask-App (Pillow): Endpoint generate_post mit image_url, title, bullet_1-3 aufrufen; Download-URL zurückerhalten
  9. HTTP GET: finales Bild herunterladen (Output-Feldname: data)
  10. LinkedIn-Node (Personal): Post-Type = Person, Text aus LLM-1-Output, Image = data
  11. LinkedIn-Node (Company): Post-Type = Organization, URN aus Browser-URL der Company-Page, gleiche Text- und Bild-Felder
  12. Google Sheets Update-Node: Row auf posted = yes setzen, Row Number aus Code-Node ziehen
  13. Optional: Telegram-Bot-Workflow importieren für bequeme Post-Eingabe unterwegs
  14. Optional: Reminder-Workflow importieren (täglich 12:00 Uhr, Alert bei < 2 Posts)

Full Transcript

Welcome to day 13 of the 30 day AI Automation Pro Challenge, the challenge where you become an AI Automation Pro in just 30 days, even if you start as a complete beginner. As I already announced yesterday today, it will be all about automating LinkedIn. LinkedIn is super important, especially if you want to offer a B2B service, so selling to companies as you will, if you want to make AI automation your business. And because of that, I want to show you how I personally automated my LinkedIn posts and that without losing authenticity because this is super important as you learned yesterday. First, we will have a quick look at a presentation that I prepared to show you what is the overall concept, how did I do it, and what was the idea, and then I will show you the exact workflow that does the work. And of course, as always, I will provide you just everything in the resources. So if you just want to download the workflows and decodes and the prompts and so on, just head over to challenge. germanyicreator.com and download everything for free. All right, with that being said, let’s jump right to my screen. Let’s have a quick look at the agenda. First, we will talk about the problem that I actually wanted to solve. Then I show you the system that I created and then of course, the N8 and workflows that make it happen. So let’s begin with the actual problem that I wanted to solve. I knew I had to start posting on LinkedIn daily because there are basically my new clients might be to be clients. I couldn’t afford spending several hours per day creating posts. So this was the main problem that I had. I knew I had to post, but I’m just lagging the time as I have my own client projects I have. Social media content that I have to produce. So there’s not a lot of extra time. But on top of that, I also knew that posts 100% on autopilot don’t work either. I already tested this out a while ago. So I knew I had to come up with a solution. And the solution for me was a hybrid approach between AI automation and manual written ideas. Basically automating everything but the post idea and the style of the post. How did I do that? So let’s have a look at the actual flow. So everything in my new system starts with sending and post idea to my telegram bot. I do that with my phone. After words, the posts get stored in a Google sheet. Then in step number three, a edit and workflow gives them a slight polish and creates an image prompt. This is very similar to what we already did with the art configurator as you will see later. The main thing here is that my written English and my spoken English is just not like a native speaker. And because of that, I just want the LM to give the post a slight polish because I just want the post to sound more professional. But I also don’t want the LM to just make up entire new posts. I want the LM to keep the original post pretty, pretty close as you will see later when we look inside the actual workflow. Then in step number four, a python app, a flask app uses pillow to assemble a post image. And this is what you already learned with the first project, the art configuration. So we use actually pretty much of what we already applied for the art calculator also for that workflow. And then in the last step, the edit and workflow posts the new posts on LinkedIn, on my personal LinkedIn page, but also on my LinkedIn business page of my company, limitless AI solutions. So this is the overall system that I created and now I want to show you how it works. So basically, I just send out any post idea like that via Telegram to my Telegram bot. And then this gets stored in the Google sheet and in the end, something like that is posted on LinkedIn. And you can imagine that this is a big help because all I have to do is sit down in a cafe with a nice coffee and a piece of cake. Think of good post ideas, post them to my Telegram bot. It stores it in a Google sheet. And every day on LinkedIn, there’s a nice post with a suitable image also having my colors and also these nice bullet points. And so on. Now I want to show you the three workflows that this system consists of. So basically, there are three. We have the post creation workflow. And this is of course the workflow that I will show you step by step in a second so that you also can copy that for yourself. Then we have the Telegram bot. I don’t want to include the Telegram bot in that tutorial to don’t make it too big. But if you’re interested in the Telegram bot, I can also provide you the JSON so you can just import it to your NAN. And then the third workflow involved is a no more posts warning. So this is just a tiny workflow that just reminds me every day if there are no more posts because this is also a problem for myself. You know, I just forget about it. And then I get a little reminder of Telegram. Hey, you just have two more posts left. Please provide more posts. As I said, today I just want to show you that workflow. Okay, because this is the main part. This is just a nice feature that I can provide the posts via Telegram and that I get a warning. I also provide you these workflows in the resources so you can just import them. But I want to show you that one because this is actually the real challenge. And this is where the actual posting happens. All right. So now we had over to NAN and we check out how this works. So this is the workflow that you just saw in the presentation. And as you see, everything starts with a scheduled trigger. So once per day, this executes. And as you see in the end, it posts on my personal LinkedIn and also on my LinkedIn business page. More about that in a second. I also show you the Google sheet involved. You see here are the posts stored. And every post has the post itself. It has a number and it has a state if it is posted. Yes, or no, this is important. And then at the top, we have the header post post number and posted. So when you want to use the workflow that I provide you, just set up a Google sheet. You also call it LinkedIn posts. Make sure you have these columns with exactly these names and call the sheet post on the square pipeline. Then everything will work for you. And then there’s of course my LinkedIn. So this is my personal LinkedIn. You see here are exactly these kinds of posts that are going out with the workflow. But I also have a company page. So this is my LinkedIn company page of limitless AI solutions. And you see that also here, the same posts are posted. And this is of course important because I want them on my personal LinkedIn, but also for my company page, so that the page over time doesn’t look so empty. All right. And in the first step, we just test this out so that you see how it works. And then I show you how the workflow actually is built. So once again, you see I have one post here in the Google sheet that is not posted yet. And when we now execute that workflow, you will see how this gets posted on my LinkedIn page. So I just fire it up. And you see now that in first step, it pulls out the Google sheet. Then it extracts the latest post that is not posted yet. Then it creates an image prompt. It reaches out to replicate. It creates a suitable image. Then it downloads the image. Now it creates the bullet points. It also uses a flask app. How we did it for the yacht calculator to create such a nice overview with image and bullet points. Then it posts on my personal account and also on the business page. And in the end, it updates the Google sheet and it marks the post as posted. So when we go to the Google sheet now, you see that now the last post is also here set to yes posted. Okay, so this won’t be posted again. And when we go now to my LinkedIn business page, I will just refresh that. We should see the new post. And here it is. You see, this is the latest post. Avoid AI complacency in business. Challenge AI results critically treat AI outputs like a new intern race standards for better results. And of course, my company logo and everything looks nice and clean. This is exactly how it should be done. And when I go to my personal account, let’s just go back real quick. Also here, we see that the post is posted. So everything worked fine. And now I want to show you what actually happened here within the workflow. I say it again, I provide you exactly that workflow. And also the other is the telegram bot and the post reminder in the resources. So you can just download them. And whenever you want to import these workflows to your end, and you just go to these three dots, you go here to import from file, then you select the dot Jason file of the corresponding workflow. And boom, you have the entire workflow imported. All you have to do is of course, connecting it with your credentials. For example, for open AI, switch out the replicate API key. And of course, set up the linked in credential. So this is a crucial part, but I will also cover that here in the tutorial. All right. So let’s begin with the very first step, the scheduled trigger. As you see, I set that up to fire every day at 8am. And that’s it. So every day at 8am, this workflow executes. Then in the next step, I set up such a element get rows in sheet. And this is of course the Google sheet element. You see, I connected it to my Google sheets account and you already set that up so you can also use that. And then I just selected the Google sheet that I just presented you exactly that one. And down here, where you can select the filters, I selected the column posted. And I set as a filter criteria, the value no. So what does this mean? It means that whenever this element executes, it goes to the Google sheet. It looks at the column posted and it will only put out any row that has in the column posted the value no. So right now, you see, it is all yes because they are all already posted. So it wouldn’t put out anything. This is all that is happening here. You see, just a second ago, when we tested it out, it pulled out just one item exactly the latest post. Then we have a little code element. And this is JavaScript that ChatchyBT wrote for me. And all that this JavaScript is doing is basically looking at the entire content provided by the Google sheet element. So if there are, let’s say, four posts, it is just looking at these posts. And it’s just putting out the very first post that is not posted yet. Because I don’t want to post all posts, I just want to post the oldest that is not posted yet. So I want to have a queue basically. And this is happening within that code. As I said, this is also done by ChatchyBT. I just told it that this is how my input looks like and what kind of result I want to see. It is also chasing output. All right. So this was the third element. And then we come to the LLM. And if you watch the tutorial series until here, you already know exactly how such a LLM should be structured. So we have here again three different prompts, the user prompt, the system prompt and the assistant prompt. In the user prompt, I just tell it, this is the post provided. And then we just drag the post over so that it has access to the actual post. Then comes the system prompt. And this is the most important prompt. I make this a little bit bigger so that you can read everything. Row, you are an expert for writing interesting and valuable LinkedIn post task. You have to task. Your first task is to look at the post provided and to just give it a slight polish and correct English writing errors. Because I’m not the English native person. This happens a lot. And it is important to keep the wording and storyline close to the original and only change that if it is bad English or hard to understand what I mean. If you only get some bullet points or a rough idea, provided turn it into a full LinkedIn post. At the end of each post at a suitable slide CTA, like that, if you want to see how AI automation could work in your business, DM me. Two, your second task is to create an image prompt for an image perfectly representing the idea and story of the post. Aim for create photorealistic images that catch attention, perfectly represent what is expressed in the post and also are nice to look at. If anyhow possible, try to keep the colors in the blue and dark blue spectrum as these are my corporate colors. And you see when we look at the post that this is actually working pretty, pretty fine. Because all my posts are in this dark blue color exactly how my corporate design looks like. So I really like that output format, always output the same valid chasing structure and always use the same chasing key names as shown below. And then I have the chasing structure here, new post text and image prompt. Important, never make up information, just use what is provided in the original post, never change the chasing structure and key names, never use M dashes, use commas or normal, minus instead don’t use markdown formatting as it doesn’t work on LinkedIn. So what does this mean? The M dashes are just these typical long dashes that chat GPT is using. And I don’t want that included in my post because it indicates right away that it is done by chat GPT. And I also don’t want it to put out markdown formatting. This would just mean putting some words or link in certain, let’s say, signs, for example, hashtags to make them appear as bold or something. But this doesn’t work on LinkedIn because of that I just mentioned it here. And then down here we have the system prompt, you know, just making sure that we always get the same chasing structure. And of course, I also ticked these two things, simplify output and output content as chasing so that we always get the same chasing output. So this is all, this is everything I did here. And afterwards I reached out to replicate. And if you watch the 30 day challenge until now, I can already tell you this is exactly the same step how we used it in the yacht calculator. You see, you just enter here your personal API token and down in the payload, we just include here the image prompt that is written by the LLM step before. Okay, so this is all. And if you haven’t watched the videos before, make sure to also watch these videos. And again, I provide also all these work rules just as download so you can just import them and then you have everything like that. And you just have to customize it to your account, for example, by exchanging the API key of replicate. All right. Then in the next step, we downloaded the image. You see also this works super simple. You see here is the original image that was created. And then we use the LLM again. This is the post provided. Now we provided the post that the LLM wrote in the first step. And we go with that system prompt down here. You are an expert for writing interesting titles for LinkedIn posts and summarizing it into three bullet points task. You have two tasks. First, your first task is to look at the post provided and to create a matching title for it. The title can have maximum five to six words. The title must represent the entire post pretty well. Two, your second task is to create three bullet points that together with the title pretty well summarized entire post. The bullet points can have maximum seven to eight words. Shorter is better output format. And then I just wrote here the exact output format that I want. Post title, bullet one, bullet two, bullet three. Important never make up information. Just use what is provided in the original post. Never change the JSON structure and key names. Okay. And by that, we again get such a nice JSON output. And at that point of the challenge, you already know why this is so important because we can easily just access all the information stored in the JSON. And remember when we built the art calculator, we basically already included that step in the first LLM. So we just used it one time. In that workflow, I just split it off into two different LLM steps. No big deal. Then we come to the flask app. And at that point, you know exactly how that works because you already set it up in the art configurator. If you have no idea yet about that, I recommend you to watch day nine, 10 and 11 of the 30 day AI automation pro challenge because there I show exactly how you set up a flask app, how you get it running and how you integrate it to any then because this is what is happening here. So when we go inside, you see that we reach out here to my personal server where a flask app is running, having exactly that API endpoint, generate post. And then down here, we send a body, we send the body as JSON. And you see that we send exactly the same parameters as we also used it for the art configurator, image URL, title, bullet one, bullet two, bullet three. So this is what we send to the flask app. Anti-flask app is returning a download URL. And in the next step, we use a HTTP request, get to download the final image. You see, as an output, we get here the image now with all that. So once again, here at replicate, we got back just the image, you could also just post that. Okay, if you don’t want to work with the flask app and you just want to make it quick and dirty, no worries, you could just use that image, skip this entire part and just connect that to LinkedIn posting. But if you want to have that, you need to work with a flask app as I showed it in day 9, 10 and 11 of the challenge. All right. And when this is done, we post that on LinkedIn. And as you see, also that is pretty simple. We already have such LinkedIn elements here at any end. You have to set up such a credential. You see, I already have several of them. You select your post operation, create, so you don’t have to touch that. This is important. Post as person or organization. You know, if you want to post to your personal LinkedIn account, you go here with person. If you want to post to your business page, you have to select here organization, as you will see in a second. So this is for my personal account. Then you select your number here or your account ID. And then where it says text, you just select, let me see where it is here, create posts and image. We basically just used that one new post text. You see, this is what I basically just pulled in here. And then down here, you select image. And this is also important where it says input, binary, field, you write data. Why data? Very simple. When you go back, the output of the very last element where we downloaded the image is always called data. Okay, so this was our post. And because of that, you have to write down here also data. You see, this is the output of the last element. So this was posting on my personal LinkedIn page. And down here, I did exactly the same, but this time for organization. And then I selected my organization, URN. Where do you find this number? Very simple. You go to your business page and then up here, you find that number. Exactly. That number in the browser is your URN of your business page. Okay, you put that in here. Then same principle for text. I went with the post output of the LLM with exactly where is it? That one. And then we selected image and down here also data. Why? Because I show you again, this is called data. Okay, we want the image here. So that it gets posted. All right, this is it regarding the post creation workflow. But now I want to show you the most critical part as well. This is how to set up the so-called credentials, the LinkedIn connection, what you see up here. Because this can be a little bit tricky. And here you have to be crystal clear what you want. Do you want to post on your personal LinkedIn or do you want to post on your LinkedIn business page or of course on those? How I did it here. Depending on your selection, you have to set up either one credential or two credentials. And as I already created videos, exactly how to do that, I don’t want to repeat it again in that tutorial. I will just provide you here the links to exactly the right video where I explain how to set up the LinkedIn credential either for yourself, for your personal account or your LinkedIn business page. And I will also mention the exact minute where you have to start watching. So that you already start the video at the exact right point to see how you set up the LinkedIn credential. It is not super difficult, but you have to pay a little bit of attention. And I don’t want to make this video too long because of that I just include the other links. And you can just decide which credential you want to set up and watch the corresponding video. All right. And then when it is posted, you see there’s just one step. This is again, Google Sheet. And now we use here Update Row in Sheet. I selected again the same Google Sheet, exactly that one. Then I went here with map each column manually, column to match on, I selected row number. So what does this mean? This is just which column should the element use to match what you want to update. And we select here just the row number. Then we provide it the row number that should be updated. How do we do that? Very simple. We go to the code element. And here I just told it to also put out the row number. You see row number 12. And then I just pull that in like that. Okay. So I delete this again because we don’t need it twice. And then we also want to write into the column posted. Yes. Remember when the post is not posted yet? Here it says no. And then when the entire workflow is done and we reach that point, we wanted to write into that cell. Yes. So that the post isn’t considered again. So I just delete that again. And this is it. This is the entire workflow. How I post in an automated way on LinkedIn without losing my authenticity because the original post idea is for myself. I wrote it. The workflow is just giving it a slight polish and the workflow is doing the actual work of putting it out and posting it without me having to take my phone and do it myself. And this already saves me a lot of time and allows me to post daily on LinkedIn and this super quick and easy. I also want to show you real quick the order to workflows, the telegram bot and also the post reminder. So this is my personal telegram bot. You see it has also a trigger. This time a telegram trigger and exactly at that point we add new posts to the Google sheet. Exactly that Google sheet with my posts. Okay. So this is how the telegram bot works. I don’t want to talk about the bot in that tutorial, but I will also provide it in the resources so that you can just import it and play around with it if you want. And the last workflow that I also want to show you real quick that I will also provide in resources is exactly that one. The LinkedIn post pipeline alert. This is also a workflow that runs every day at noon. It also just looks at my posts and whenever there is less than two posts, it just sends me a message on telegram. Hey, Dominic heads up. You just have two posts left and then I know that I have to provide more posts. So this all together just makes my life a little bit easier and it just allows me to post daily on LinkedIn without having me to actually do it. All right, guys. This is it for day number 13 of the 30 day AI automation pro challenge. Today you learned how to automate your LinkedIn without losing your authenticity. And I also highly recommend you to work like that and do not just let AI do everything. Write the ideas yourself. Trust me. It will pay off because the post will just feel way more connected to you and what is important to you. Again, I provide all the resources at challenge.germanaicreator.com. So if you just want to import them without building it yourself, just do that. I actually recommend you to try and build it yourself. And whenever you are stuck, you just import the workflows. You double check what I actually did. And by that, you learn quite a lot in a short period of time. This is it for today for day number 13. We see us tomorrow and tomorrow. We will have a look at automated company and paper research using N8. And this is also super useful, super powerful. You need it if you want to become an AI automation pro because of that. Stay tuned. Speak tomorrow. Cheers. Dominic.