
docker --version
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
version: '3.8'
volumes:
n8n_data:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n_sistemim
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://localhost:5678/
- GENERIC_TIMEZONE=Europe/Istanbul
volumes:
- n8n_data:/home/node/.n8n
docker compose up -d
Invoke-RestMethod -Uri "http://localhost:5678/webhook-test/json-hook" -Method Post -Headers @{"Content-Type"="application/json"} -Body '{"name": "","email":"ahmetkaya@yobodobo.com"}'
https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY
{
"contents": [
{
"parts": [
{
"text": "Merhaba, bana otomasyon nedir basitçe anlat"
}
]
}
]
}
{
"contents": [
{
"parts": [
{
"text": "Sen bir LinkedIn içerik üreticisisin. Aşağıdaki konu hakkında dikkat çekici, hashtagler içeren profesyonel bir LinkedIn postu yaz.\n\nKonu: {{ $json.body.topic }}"
}
]
}
]
}
I am building a personal automation workflow using N8N to share technology and education-related content on my own Twitter account. My system will use an AI (Google Gemini) to generate short, relevant tweets based on specific topics I manually provide to the system via a webhook. The Twitter API will only be used to POST these generated text tweets directly to my personal authenticated account.
I will NOT use the API to read other users' data, scrape timelines, send spam, or perform mass engagement (like automated liking or following). The sole purpose is to automate my own content creation process for educational and personal use.
let userMessage = "";
try {
// Telegram'dan gelen mesajı güvenli bir şekilde alıp küçük harfe çeviriyoruz
userMessage = $('Telegram Trigger').item.json.message.text.toLowerCase();
} catch (error) {
userMessage = "";
}
// Google Sheets'ten gelen tüm satırları al
const sheetData = $input.all();
// Varsayılan (Default) Bağlam: Aranan kelime bulunamazsa bu metin gidecek
let bestContext = "Kullanıcının sorduğu soru hakkında veri tabanımızda net bir bilgi bulunmuyor. Lütfen kullanıcıya kibarca doğrudan destek ekibiyle (destek@sirketimiz.com) iletişime geçmesini tavsiye et. Kesinlikle uydurma (halüsinasyon) bilgi verme.";
// Eşleştirme Algoritması (Basit RAG)
for (const item of sheetData) {
// Tablodaki "AnahtarKelime" sütununu güvenli bir şekilde çekiyoruz
const keyword = item.json.AnahtarKelime ? String(item.json.AnahtarKelime).toLowerCase() : "";
// Eğer kullanıcının mesajı, tablodaki anahtar kelimeyi içeriyorsa:
if (keyword && userMessage.includes(keyword)) {
// Eşleşme bulursak, Gemini'a göndermek üzere tablodaki "BaglamBilgisi"ni alıyoruz
bestContext = item.json.BaglamBilgisi;
break; // İlk eşleşmede döngüyü durdur
}
}
// Sonuçları bir sonraki Node'a (Gemini) temiz bir şekilde gönder
return { json: { message: userMessage, context: bestContext } };
{
"contents": [
{
"parts": [
{
"text": "Sen profesyonel bir LinkedIn içerik yazarısın. Türkçe yazıyorsun. Sana verilen konu veya anahtar kelimelerden yola çıkarak LinkedIn için etkileyici, gerçek bir insan ağzıyla yazılmış bir gönderi oluştur.\n\nKurallar:\n1. Doğal ve samimi bir dil kullan — yapay veya robotik olmasın\n2. Kısa paragraflar kullan (2-3 cümle)\n3. İlk cümle dikkat çekici olsun (hook)\n4. Kişisel deneyim veya gözlem ekle\n5. Okuyucuya bir soru sor veya düşünmeye davet et\n6. Son kısma 3-5 adet ilgili hashtag ekle\n7. Emoji kullan ama abartma (2-3 tane yeter)\n8. Toplam uzunluk 150-250 kelime arası olsun\n9. Sadece gönderi metnini yaz — başka açıklama ekleme\n\nKonu: {{ $json.message.text }}"
}
]
}
],
"generationConfig": {
"temperature": 0.8,
"maxOutputTokens": 1048
}
}
{{ $json.candidates[0].content.parts[0].text }}
{{ $('Telegram Trigger').item.json.message.text }}
{{ $('Telegram Trigger').item.json.message.chat.id }}
? Konu: {{ $json.orijinal_mesaj }}
━━━━━━━━━━━━━━━━━━━━
{{ $json.icerik }}
━━━━━━━━━━━━━━━━━━━━
Bu içeriği LinkedIn'de paylaşmak ister misiniz?
✅ Paylaşmak için: /yayinla
❌ İptal için: /iptal
✏️ Yeni versiyon için: /yeniden
{
"author": "urn:li:person:{{ $('HTTP Request').item.json.sub }}",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {
"text": {{ JSON.stringify($('Telegram Trigger').item.json.message.reply_to_message.text.split('━━━━━━━━━━━━━━━━━━━━')[1].trim()) }}
},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
docker run --name yobodobo-db -e POSTGRES_PASSWORD=supergizli123 -p 5432:5432 -d postgres
CREATE TABLE leads (
id SERIAL PRIMARY KEY,
telefon VARCHAR(50),
kategori VARCHAR(50),
ilgi_alani VARCHAR(100),
oncelik VARCHAR(20),
ozet TEXT,
hata_var_mi BOOLEAN,
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE leads ADD COLUMN isim VARCHAR(100);
ALTER TABLE leads ADD COLUMN email VARCHAR(100);
SELECT isim FROM leads WHERE telefon = '{{ $json.body.From }}' LIMIT 1;
{
"contents": [
{
"parts": [
{
"text": "Sen Yobodobo'nun samimi satış danışmanısın. Sistemimizin geçmişi hatırlama özelliği (hafızası) OLMADIĞI İÇİN, müşteriden bilgileri adım adım soru sorarak DEĞİL, tek seferde istemelisin.\n\nKURALLAR:\n1. Müşteri 'Selam, Merhaba' yazdığında veya eksik bilgi verdiğinde ona şu tarz sıcak bir cevap ver: 'Merhabalar! Yobodobo'ya hoş geldiniz. Size en iyi şekilde yardımcı olabilmem ve ön kaydınızı oluşturabilmem için; İlgilendiğiniz eğitimi (C# veya Prompt), yazılım tecrübeniz olup olmadığını, Adınızı, Soyadınızı ve E-posta adresinizi tek bir mesajda yazabilir misiniz?'\n2. Müşteri mesajında bu 4 bilginin (İsim, E-posta, Eğitim, Tecrübe) hepsini tek seferde verirse durumu 'TAMAM' yap.\n3. Eğer müşteri sadece 'C# istiyorum' derse, ona diğer bilgileri unuttuğunu hatırlatıp hepsini tek bir mesajda toplamasını nazikçe rica et.\n\nSADECE şu JSON formatında cevap ver:\n{\n \"durum\": \"EKSİK | TAMAM\",\n \"kullaniciya_cevap\": \"Müşteriye verilecek sıcak cevap\",\n \"isim\": \"Varsa yaz, yoksa null\",\n \"email\": \"Varsa yaz, yoksa null\",\n \"kategori\": \"Potansiyel Öğrenci\",\n \"ilgi_alani\": \"Eğitim Adı (Varsa)\",\n \"ozet\": \"Kısa özet\"\n}\n\nMüşterinin Mesajı: {{ $('Webhook').first().json.body.Body }}"
}
]
}
]
}
// Gemini'den gelen metni al
let aiResponse = $input.first().json.candidates[0].content.parts[0].text;
// Başındaki ve sonundaki json markdown etiketlerini temizle
aiResponse = aiResponse.replace(/json/g, '').replace(/```/g, '').trim();
// Saf JSON'a çevir
let parsedData = JSON.parse(aiResponse);
// Twilio'dan gelen telefon numarasını da bu veriye ekle ki kimin yazdığını bilelim
parsedData.telefon = $('Webhook').first().json.body.From;
return parsedData;
N8N ile Otomasyon Geliştirme: Sıfırdan İleri Seviyeye
Tekrarlayan işleri manuel yapmak zaman kaybı.
Peki bu süreçleri otomatik hale getirip hem zaman kazanmak hem de verimliliğinizi artırmak ister misiniz?
Bu kursta, açık kaynaklı güçlü bir otomasyon aracı olan N8N ile sıfırdan başlayarak gerçek dünya otomasyon sistemleri kurmayı öğreneceksiniz.
Bu Kursta Ne Öğreneceksiniz?
N8N ile sıfırdan otomasyon workflow’ları oluşturmayı
Webhook, Cron ve temel node yapılarını kullanmayı
API’lerle entegre çalışan sistemler geliştirmeyi
JSON veri yapısını anlayıp veriyi işlemeyi
Gerçek projelerle iş süreçlerinizi otomatikleştirmeyi
Neler Yapabileceksiniz?
Bu kursun sonunda:
Formlardan gelen verileri otomatik işleyebilecek
E-mail ve bildirim sistemleri kurabilecek
API’lerle veri çekip işleyebilecek
Kendi otomasyon sistemlerinizi oluşturabileceksiniz
Neden Bu Kurs?
Sıfırdan başlayıp ileri seviyeye kadar ilerleyen yapı
%100 uygulamalı anlatım
Gerçek hayattan projeler
Teknik bilgisi olmayanlar için bile anlaşılır içerik
Güncel ve pratik bilgiler
Kimler İçin Uygun?
Otomasyon öğrenmek isteyenler
Geliştiriciler
Girişimciler
Freelance çalışmak isteyenler
No-code / low-code araçlara ilgi duyan herkes
Ön Koşullar
Temel bilgisayar kullanımı
İnternet bağlantısı
Öğrenme isteği
Bu Kurs Seni Nereye Götürür?
Bu kurs sadece bir araç öğretmez.
Sana otomasyon mantığını öğretir.
Bu sayede:
İşlerini hızlandırabilir
Verimliliğini artırabilir
Yeni gelir kapıları oluşturabilirsin
Eğer sen de otomasyon dünyasına güçlü bir giriş yapmak istiyorsan, bu kurs tam sana göre. Hemen kaydını yap ve başlayalım.