// Versi Awal Web App Pembuat Artikel Otomatis (Frontend + Backend) // Menggunakan: Node.js + Express (backend), HTML+Bootstrap (frontend) // Note: Anda dapat deploy ini di Replit atau server lain // ==== server.js ==== const express = require('express'); const bodyParser = require('body-parser'); const axios = require('axios'); const app = express(); const PORT = process.env.PORT || 3000; app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static('public')); const OPENAI_API_KEY = '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'; const WP_URL = 'https://andripedia.my.id/wp-json/wp/v2/posts'; const WP_USERNAME = 'Article Bot'; const WP_APP_PASSWORD = 'PjLP RaVS do4F nREF UtAt SBqD'; const getAuthHeader = () => { const token = Buffer.from(${WP_USERNAME}:${WP_APP_PASSWORD}).toString('base64'); return Basic ${token}; }; async function generateArticle(keyword) { const prompt = Tulis artikel original (100% bebas plagiarisme) tentang: ${keyword}. Panjang artikel sekitar 500 kata. Gaya campuran formal dan santai.; const response = await axios.post('https://api.openai.com/v1/chat/completions', { model: 'gpt-4', messages: [{ role: 'user', content: prompt }], max_tokens: 1000 }, { headers: { 'Authorization': Bearer ${OPENAI_API_KEY}, 'Content-Type': 'application/json' } }); return response.data.choices[0].message.content; } async function postToWordPress(title, content) { const res = await axios.post(WP_URL, { title, content, status: 'publish' }, { headers: { 'Authorization': getAuthHeader() } }); return res.data; } app.post('/generate', async (req, res) => { const { keywords } = req.body; const results = []; for (const keyword of keywords) { for (let i = 1; i <= 10; i++) { const article = await generateArticle(${keyword} (${i})); const wpPost = await postToWordPress(${keyword} - Artikel ${i}, article); results.push(wpPost); } } res.json({ status: 'success', posted: results.length }); }); app.listen(PORT, () => console.log(Server running on port ${PORT})); // ==== public/index.html ==== // Buat form HTML sederhana di folder 'public' untuk input keyword dan trigger generate // (Akan saya buat di langkah berikutnya)