// 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)