Handleidingen · n8n

Automatisch LinkedIn-content genereren met n8n en Claude

Elke werkdag LinkedIn-posts genereren met n8n en Claude. Contentkalender in Airtable, klaar voor publicatie.

🟡 Gevorderd — beetje technisch ⏱ 2-3 uur
Tools: n8nClaude APIAirtableBuffer (optioneel)
Goud-op-zwart illustratie: een AI-pen verbonden met artikel, socialpost, nieuwsbrief en megafoon

✅ Wat je leert in deze handleiding

  • ✓ RSS-feeds en inspiratiebronnen koppelen in n8n
  • ✓ Claude instrueren voor consistente merkstijl
  • ✓ Posts opslaan in Airtable als content calendar
  • ✓ Kwaliteitscontrole automatiseren
  • ✓ Goedgekeurde posts automatisch publiceren via Buffer
  • ✓ Workflow monitoren en optimaliseren

Waarom LinkedIn-content automatiseren?

LinkedIn is in 2026 het belangrijkste B2B-platform voor Nederlandse professionals. Maar consistent posten kost tijd. Drie posts per week, elk met een haakje, een verhaal en een call-to-action? Dat zijn twaalf uur per maand die je misschien niet hebt.

Met n8n en Claude bouw je een workflow die elke werkdag automatisch drie post-concepten genereert, bijhoudt wat je al hebt gepost, en de content klaarlegt voor review en publicatie. Je behoudt controle over wat er online gaat, maar het schrijfwerk doet de AI.

Architectuur van de workflow

De workflow bestaat uit vier onderdelen. Onderdeel 1: Inspiratiebronnen. De workflow haalt dagelijks actuele onderwerpen op uit RSS-feeds, nieuws-API's en een vaste topiclijst. Onderdeel 2: Content generatie. Claude schrijft op basis van elk onderwerp drie post-varianten met verschillende invalshoeken. Onderdeel 3: Content calendar. Alle gegenereerde posts worden opgeslagen in Airtable als content calendar, klaar voor review. Onderdeel 4 (optioneel): Automatische publicatie. Via Buffer of direct via de LinkedIn API worden goedgekeurde posts gepland.

{
  "workflow_overzicht": {
    "trigger": "Cron: elke werkdag om 07:00",
    "stap_1": "Haal nieuws/topics op (RSS + custom topiclijst)",
    "stap_2": "Genereer 3 posts per topic met Claude",
    "stap_3": "Sla op in Airtable als concept",
    "stap_4": "Stuur notificatie naar Slack/Telegram",
    "optioneel_5": "Publiceer goedgekeurde posts via Buffer",
    "verwachte_doorlooptijd": "45-90 seconden per run"
  }
}

Stap 1: Inspiratiebronnen instellen

Je workflow begint met input. Zonder goede input genereert Claude generieke, saaie posts. Zorg voor drie soorten bronnen:

Bron A: RSS-feeds. Voeg RSS-feeds toe van relevante vakblogs, nieuws-sites en LinkedIn-pagina's van thought leaders in jouw sector. In n8n gebruik je de RSS Feed Read-node.

// RSS Feed node configuratie
{
  "url": "https://feeds.feedburner.com/nngroup/all",  // Nielsen Norman Group
  "fields": "title,link,contentSnippet,pubDate",
  "limit": 5,  // Pak de 5 meest recente items
  "filters": {
    "pubDate": {
      "after": "{{ $now.minus(1, 'days').toISO() }}"
    }
  }
}

// Voeg meerdere feeds toe (merge resultaten later):
const feeds = [
  "https://www.frankwatching.com/feed/",
  "https://sproutsocial.com/insights/feed/",
  "https://blog.hootsuite.com/feed/",
  "https://techcrunch.com/feed/"
];

Bron B: Vaste topiclijst. Maak in Airtable een tabel 'Topics' met onderwerpen die altijd relevant zijn voor jouw doelgroep. De workflow kiest willekeurig een topic als het nieuws mager is.

Bron C: Je eigen ervaringen. Houd een Google Sheet bij met notities over klantgesprekken, learnings en projectsucces. De workflow leest dit wekelijks en gebruikt het als basis voor 'behind the scenes' posts die je het beste scoren.

Stap 2: Posts genereren met Claude

De Claude-node is het hart van de workflow. Schrijf een gedetailleerde systeem-prompt die jouw stem en stijl capturert. Dit is het belangrijkste onderdeel om goed te krijgen.

// Systeem-prompt voor LinkedIn content generatie
const systemPrompt = `Je bent een LinkedIn content specialist voor [JOUW NAAM/BEDRIJF].

DOELGROEP:
Directeuren en managers van Nederlandse MKB-bedrijven (10-200 medewerkers) 
die willen groeien via slimmere bedrijfsvoering.

TOON:
- Direct en to-the-point
- Gebaseerd op echte ervaring, niet op theorie
- Nooit pompeus of zelfverheerlijkend
- Licht humoristisch waar het past
- In het Nederlands (geen Engelse termen tenzij gangbaar in de sector)

GEEN em-dashes. Geen buzzwords zoals 'disruptief', 'synergieën', 'paradigmaverschuiving'.

FORMAAT VOOR ELKE POST:
1. Openingszin die nieuwsgierig maakt (GEEN vraag)
2. Kern van het verhaal (3-5 regels)
3. Praktisch inzicht of les
4. Optioneel: call-to-action of vraag aan het einde
5. 3-5 relevante hashtags

BEPERKINGEN:
- Maximaal 1.300 tekens per post
- Geen links in de post zelf
- Niet meer dan 5 emojis
- Geen bullet-lijstjes van meer dan 5 punten

Genereer drie VERSCHILLENDE posts op basis van het aangeboden onderwerp.
Elke post moet een andere invalshoek hebben:
Post 1: Informatief/educatief
Post 2: Storytelling/persoonlijk
Post 3: Prikkelend/controversieel (maar altijd professioneel)`;

return [{ json: { systemPrompt } }];

Verbind de systeem-prompt met de input uit de RSS-feeds of topiclijst:

// Claude API call configuratie
const topic = $input.first().json.selectedTopic;
const userPrompt = `Schrijf drie LinkedIn posts over het volgende onderwerp:

Onderwerp: ${topic.title}
Context: ${topic.description || topic.snippet || ''}
Publicatiedatum: ${new Date().toLocaleDateString('nl-NL')}

Lever de posts in JSON-formaat:
{
  "post_1": { "tekst": "...", "type": "informatief", "hashtags": [] },
  "post_2": { "tekst": "...", "type": "storytelling", "hashtags": [] },
  "post_3": { "tekst": "...", "type": "prikkelend", "hashtags": [] }
}`;

return [{
  json: {
    model: 'claude-sonnet-4-6',
    messages: [{ role: 'user', content: userPrompt }],
    max_tokens: 2000
  }
}];

Stap 3: Posts opslaan in Airtable

Sla alle gegenereerde posts op in Airtable als content calendar. Gebruik de volgende veldstructuur:

{
  "airtable_schema": {
    "table": "LinkedIn Content Calendar",
    "velden": {
      "Titel": "Kort beschrijving van het topic",
      "Post tekst": "De gegenereerde post (lange tekst)",
      "Type": "informatief / storytelling / prikkelend",
      "Hashtags": "Kommagescheiden lijst",
      "Status": "Concept / Goedgekeurd / Gepubliceerd / Afgewezen",
      "Aangemaakt op": "Datum/tijd van generatie",
      "Geplande publicatiedatum": "Gewenste publicatiedatum",
      "Score": "1-5 sterren (handmatig beoordelen)",
      "Brononderwerp": "Welke RSS of topic was de basis",
      "n8n run ID": "Voor traceerbaarheid"
    }
  }
}

Gebruik de Airtable-node in n8n. Zorg dat je de API key en Base ID klaar hebt. Verwerk meerdere posts tegelijk via de loop-functionaliteit om API-calls te beperken.

Stap 4: Notificatie sturen

Stuur een Telegram- of Slack-bericht als er nieuwe posts klaar staan voor review. Zo hoef je niet elke dag in Airtable te kijken, maar word je actief gewaarschuwd.

// Telegram notificatie node
const posts = $('Airtable Save').all();
const count = posts.length;

const message = `
✍️ *${count} nieuwe LinkedIn posts klaar voor review*

Onderwerpen vandaag:
${posts.map((p, i) => `${i+1}. ${p.json.Titel}`).join('\n')}

Bekijk en keur goed: https://airtable.com/JOUW-BASE-LINK

_Gegenereerd op ${new Date().toLocaleDateString('nl-NL')} om ${new Date().toLocaleTimeString('nl-NL')}_
`;

return [{ json: { chatId: 'JOUW-TELEGRAM-CHAT-ID', text: message, parseMode: 'Markdown' } }];

Stap 5: Kwaliteitscontrole inbouwen

Voordat posts in Airtable belanden, voer je een automatische kwaliteitscheck uit. Dit voorkomt dat de AI slechte of ongepaste content produceert.

// Kwaliteitscheck voordat posts worden opgeslagen
function checkPostKwaliteit(post) {
  const tekst = post.tekst;
  const problemen = [];

  // Lengte check
  if (tekst.length > 1300) problemen.push(`Te lang: ${tekst.length} tekens`);
  if (tekst.length < 200) problemen.push(`Te kort: ${tekst.length} tekens`);

  // Verboden woorden (geen em dashes, geen buzzwords)
  const verboden = ['\u2014', 'disruptief', 'synergie', 'paradigma', 'baanbrekend'];
  verboden.forEach(woord => {
    if (tekst.toLowerCase().includes(woord)) {
      problemen.push(`Verboden term: "${woord}"`);
    }
  });

  // Te veel emojis
  const emojiCount = (tekst.match(/\p{Emoji}/gu) || []).length;
  if (emojiCount > 7) problemen.push(`Te veel emojis: ${emojiCount}`);

  // Te veel hashtags
  const hashtagCount = (tekst.match(/#\w+/g) || []).length;
  if (hashtagCount > 6) problemen.push(`Te veel hashtags: ${hashtagCount}`);

  return {
    ...post,
    kwaliteitsScore: problemen.length === 0 ? 'OK' : 'Controleer',
    problemen: problemen.join('; ')
  };
}

const posts = $input.all().map(item => checkPostKwaliteit(item.json));
return posts.map(p => ({ json: p }));

Stap 6: Automatisch publiceren via Buffer (optioneel)

Als je posts automatisch wil publiceren na goedkeuring in Airtable, gebruik je Buffer of de LinkedIn API. Buffer is het eenvoudigst: maak een gratis account op buffer.com en verbind je LinkedIn-profiel.

Bouw een aparte n8n-workflow die elk uur controleert welke posts in Airtable de status 'Goedgekeurd' hebben en waarvan de geplande publicatiedatum aangebroken is. Die posts worden via de Buffer API ingepland.

// Buffer API - post inplannen
const bufferToken = 'JOUW-BUFFER-ACCESS-TOKEN';
const linkedInProfileId = 'JOUW-LINKEDIN-PROFILE-ID-IN-BUFFER';

const post = $input.first().json;
const scheduledTime = new Date(post.GeplendeDatum + 'T09:00:00').getTime() / 1000;

const response = await fetch('https://api.bufferapp.com/1/updates/create.json', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': `Bearer ${bufferToken}`
  },
  body: new URLSearchParams({
    'profile_ids[]': linkedInProfileId,
    text: post['Post tekst'],
    scheduled_at: scheduledTime,
    shorten: 'false'
  })
});

const result = await response.json();
return [{ json: { bufferId: result.updates?.[0]?.id, status: result.success ? 'ingepland' : 'fout' } }];

Troubleshooting

Probleem: Claude genereert steeds dezelfde soort posts. Oplossing: voeg meer variatie toe in de user-prompt. Geef Claude voorbeelden van goede en slechte posts. Verhoog de temperature-instelling (0.9 in plaats van 0.7).

Probleem: Airtable raakt vol met slechte concepten. Oplossing: bouw een automatische opruimroutine die posts ouder dan 30 dagen met status 'Afgewezen' of 'Concept' verwijdert.

Probleem: RSS-feeds geven steeds dezelfde artikelen. Oplossing: bewaar gelezen artikel-URLs in n8n Static Data of een Google Sheet en filter ze eruit in de workflow.

Resultaten en wat je mag verwachten

Na twee weken consistent gebruiken zie je doorgaans: 70 tot 80 procent minder tijd kwijt aan het schrijven van posts, meer consistentie in toon en stijl, en als je ook de tijdsplanning optimaliseert (publiceer tussen 07:00-09:00 op werkdagen), een 20 tot 40 procent hogere engagement.

Wat je niet volledig kunt automatiseren is de authentieke persoonlijke touch. Gebruik de workflow voor het schrijfwerk, maar voeg zelf altijd een persoonlijke noot toe voordat je publiceert. Posts die gebaseerd zijn op echte ervaringen presteren significant beter dan volledig AI-gegenereerde content.

Gerelateerd

Nieuwsbrief

Meer handleidingen en tips?

Elke week de beste agentic AI inzichten en nieuwe handleidingen in je inbox.

Gratis aanmelden →