🤖 AI Tweet Analyzer - Siteye git
Swipeline AI Studio Developer Intern Teknik Görevi için geliştirilmiş AI destekli tweet analiz uygulaması.
Bu proje, kullanıcıların tweet URL'lerini girerek veya manuel tweet içeriği yazarak Google Gemini AI ile duygu analizi yapmalarını sağlar. Analiz sonuçları otomatik olarak Google Sheets'e kaydedilir.
Not: Twitter API için onay süreci gerektiği için şu anda sahte (mock) tweet verileri kullanılmaktadır. Analiz yeteneğini test etmek için manuel tweet içeriği girme özelliği eklenmiştir.
- 🔗 Tweet URL Analizi: Mock tweet verileri ile analiz (Twitter API onayı beklendiği için)
- ✍️ Manuel İçerik Girişi: Direkt tweet metni yazarak gerçek AI analizi
- 🤖 AI Duygu Analizi: Google Gemini ile akıllı duygu tespiti
- 📝 Otomatik Özet: AI tarafından oluşturulan 1-2 cümlelik özet
- 📊 Google Sheets Entegrasyonu: Sonuçları otomatik tabloya kaydetme
- 📜 Analiz Geçmişi: Son analizleri görüntüleme
- 🛡️ Fallback Sistem: AI hata durumunda basit analiz
- 🎲 10 Farklı Mock Tweet: Test için hazırlanmış çeşitli duygu durumları
Frontend: React.js + CSS3 + Axios
Backend: Node.js + Express.js
AI: Google Gemini API
Database: Google Sheets API
Deployment: Render.com
Bu proje, Swipeline AI Studio teknik görevindeki tüm gereksinimleri karşılar:
✅ Tweet URL'si input olarak girilecek
✅ Tweet içeriğini çek (mock data ile)
✅ Duygu analizi (olumlu/olumsuz/nötr)
✅ İçerik özeti (1-2 cümle)
✅ Kullanıcı adı ve tarih bilgisi
✅ Google Sheets'e kaydetme:
- @username
- Tweet İçeriği
- Duygu
- Özet
- Tarih ve Saat
✅ React frontend + Node.js backend
✅ Sade kullanıcı arayüzü
Analiz sonuçlarının kaydedildiği tablo:
Tweet Analiz Sonuçları (Readonly)
Not: İlk kullanımda Render'ın ücretsiz planı nedeniyle 15-30 saniye bekleme süresi olabilir.
1. Ana sayfaya gidin
2. Tweet URL'sini girin (örn: https://twitter.com/user/status/5)
3. "Analiz Et" butonuna tıklayın
4. Sonuçları görüntüleyin
Mock Tweet Sistemi:
- URL'nin sonundaki sayıya göre 10 farklı hazır tweet bulunur (1-10)
- 10'dan büyük sayı girilirse rastgele bir tweet seçilir
- Her tweet farklı duygu durumunu test etmek için tasarlanmıştır
1. "Tweet'i manuel yazmak istiyorum" seçeneğini işaretleyin
2. Tweet içeriğini yazın
3. "Analiz Et" butonuna tıklayın
4. Sonuçları görüntüleyin
Mock Tweet URL'leri:
Belirli tweetler (1-10):
- https://twitter.com/test/status/1 # Pozitif tweet
- https://twitter.com/demo/status/5 # Nötr tweet
- https://twitter.com/user/status/8 # Negatif tweet
- https://twitter.com/sample/status/3 # Karma duygu
Rastgele tweet (10+):
- https://twitter.com/test/status/25 # Rastgele seçim
- https://x.com/user/status/100 # X.com formatı
Manuel İçerik Örnekleri:
Pozitif: "Bugün harika bir gün! AI teknolojisi çok gelişiyor 😊"
Negatif: "Bu uygulama berbat, hiç beğenmedim..."
Nötr: "Hava durumu: Bugün 25 derece ve güneşli"
Karma: "Projeyi bitirdim ama stresli bir süreçti. Sonuç güzel oldu."
- Node.js (v16 veya üzeri)
- npm veya yarn
- Google Cloud Console hesabı
- Google Sheets API erişimi
git clone https://github.com/yourusername/ai-tweet-analyzer.git
cd ai-tweet-analyzercd backend
npm installcd frontend
npm installBackend klasöründe .env dosyası oluşturun:
cp .env.example .env.env dosyasını düzenleyin:
# Server Configuration
PORT=3001
NODE_ENV=development
# Gemini AI Configuration
GEMINI_API_KEY=your_gemini_api_key_here
# Google Sheets Configuration
GOOGLE_SHEET_ID=your_google_sheet_id_here
# Frontend URL
FRONTEND_URL=http://localhost:3000- Google Cloud Console'a gidin
- Yeni proje oluşturun
- Google Sheets API'yi etkinleştirin
- IAM & Admin → Service Accounts
- "Create Service Account" tıklayın
- JSON key dosyasını indirin
- Dosyayı
backend/credentials.jsonolarak kaydedin
- Yeni bir Google Sheets oluşturun
- Service account email'ini sheets'e editor olarak ekleyin
- Sheets ID'sini kopyalayın (URL'den)
.envdosyasındakiGOOGLE_SHEET_IDdeğerini güncelleyin
- Google AI Studio'ya gidin
- API anahtarı oluşturun
.envdosyasındakiGEMINI_API_KEYdeğerini güncelleyin
Terminal 1 (Backend):
cd backend
npm startTerminal 2 (Frontend):
cd frontend
npm startUygulama şu adreslerde çalışacak:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
Her analiz sonucu aşağıdaki sütunlarla Google Sheets'e kaydedilir:
| Sütun | Açıklama | Örnek |
|---|---|---|
| @Username | Kullanıcı adı | @test_user |
| Tweet İçeriği | Tweet metni (max 500 karakter) | "Bugün harika bir gün!..." |
| Duygu | AI'ın tespit ettiği duygu | olumlu / olumsuz / nötr |
| Özet | AI özeti (max 200 karakter) | "Pozitif duygu içeren tweet..." |
| Tarih ve Saat | Analiz zamanı | 15.01.2025 10:30:00 |
- Input Preprocessing: Metin temizleme ve validation
- Gemini API Call: Google Gemini 2.0 Flash modeli kullanımı
- Response Processing: JSON parsing ve validation
- Fallback System: AI hatası durumunda keyword-based analiz
- Result Formatting: Türkçe format ve karakter limitleri
- Gemini AI Response: ~2-5 saniye
- Google Sheets Write: ~1-3 saniye
- Total Analysis Time: ~3-8 saniye
- Fallback Analysis: <100ms
- Mock Data Generation: <50ms
- ✅ Network timeouts and retries
- ✅ Invalid URL format detection
- ✅ AI service fallback system
- ✅ Google Sheets connectivity issues
- ✅ User-friendly error messages
- ✅ Graceful degradation
ai-tweet-analyzer/
├── 📁 backend/ # Node.js API Server
│ ├── 📁 routes/
│ │ └── tweetRoutes.js # API endpoints
│ ├── 📁 services/
│ │ ├── tweetService.js # Ana analiz servisi
│ │ ├── geminiService.js # Gemini AI entegrasyonu
│ │ └── googleSheetsService.js # Google Sheets API
│ ├── 📁 utils/
│ │ ├── validators.js # Input validation
│ │ └── errorHandler.js # Error management
│ ├── server.js # Main server file
│ ├── package.json # Dependencies
│ └── .env.example # Environment template
│
├── 📁 frontend/ # React Application
│ ├── 📁 public/ # Static assets
│ ├── 📁 src/
│ │ ├── 📁 components/
│ │ │ ├── TweetAnalyzer.js # Main analysis component
│ │ │ ├── Header.js # Navigation header
│ │ │ └── Footer.js # Page footer
│ │ ├── 📁 services/
│ │ │ └── api.js # API client
│ │ ├── App.js # Main app component
│ │ ├── App.css # Styling
│ │ └── index.js # Entry point
│ └── package.json # Dependencies
│
├── 📄 README.md # Project documentation
├── 📄 .gitignore # Git ignore rules
└── 📄 LICENSE # MIT License
graph TD
A[User Input] --> B{Input Type?}
B -->|Tweet URL| C[Extract Mock Data]
B -->|Manual Content| D[Create Data Object]
C --> E[Gemini AI Analysis]
D --> E
E --> F[Sentiment + Summary]
F --> G[Save to Google Sheets]
F --> H[Display Results]
G --> I[Update History]
H --> I
1. Google Sheets Bağlantı Hatası:
Error: Credentials dosyası bulunamadı
Çözüm: backend/credentials.json dosyasının doğru konumda olduğundan emin olun.
2. Gemini API Hatası:
Error: GEMINI_API_KEY environment variable gerekli
Çözüm: .env dosyasında GEMINI_API_KEY değerinin ayarlandığından emin olun.
3. CORS Hatası:
Access to XMLHttpRequest blocked by CORS policy
Çözüm: Backend'in 3001 portunda, frontend'in 3000 portunda çalıştığından emin olun.
Backend'de detaylı loglar için:
cd backend
DEBUG=* npm startFrontend'de API çağrıları için browser console'unu kontrol edin.
- Gemini API Response Time: ~2-5 saniye
- Google Sheets Write Time: ~1-3 saniye
- Fallback Analysis Time: <100ms
- Mock Data Generation: <50ms
- Tweet URL input - Kullanıcı tweet linki girebilir
- Tweet içeriği çekme - Mock data ile simülasyon
- Duygu analizi - olumlu/olumsuz/nötr kategorileri
- İçerik özeti - AI ile 1-2 cümlelik özet
- Kullanıcı adı - Tweet sahibi bilgisi
- Tarih bilgisi - Analiz zamanı
- Google Sheets entegrasyonu - Otomatik kaydetme
- React frontend - Modern UI/UX
- Node.js backend - RESTful API
- Sade arayüz - Minimalist tasarım
- Manuel tweet girişi - URL'ye ek seçenek
- Analiz geçmişi - Local storage ile saklama
- Fallback sistem - AI hata durumunda yedek analiz
- Production deployment - Render.com ile canlı demo
- Comprehensive documentation - Detaylı README
Ahmet Hamza Siyak
🎓 Gebze Teknik Universitesi Bilgisayar Muhendisligi
📧 Email: [email protected]
💼 LinkedIn: https://www.linkedin.com/in/hamzasiyak
Bu proje, AI teknolojilerinin pratik kullanımını göstermek için harika bir fırsat oldu. Google Gemini API'si ile duygu analizi yapmak ve sonuçları Google Sheets'e kaydetmek, gerçek dünya problemlerine yönelik çözümler geliştirme konusunda değerli deneyim kazandırdı.
Öğrendiğim teknolojiler:
- Google Gemini AI API entegrasyonu
- Google Sheets API ile veri yönetimi
- Production deployment (Render.com)
- Error handling ve fallback sistemleri
- Modern React patterns ve hooks
Not: Bu proje eğitim amaçlı geliştirilmiştir ve production kullanımı için ek güvenlik önlemleri alınmalıdır.
⭐ Projeyi beğendiyseniz star vermeyi unutmayın!
🚀 Happy Coding! 💻✨