Jumat, 26 Desember 2025

Auto Artikel Spinner

 Blogger Auto Rewrite

Copy link artikel, rewrite otomatis, posting ke Blogger dengan aman.

{/* Sidebar Controls */}
{/* Input URL */}
setUrl(e.target.value)} placeholder="https://contoh.com/artikel..." className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-orange-500 outline-none text-sm" />
{statusMsg &&

{statusMsg}

}
{/* Settings */}
{/* Stats */}

Estimasi Keunikan

{uniqueness}%

*Semakin tinggi %, semakin beda dari asli.

{/* Main Editor */}

Editor Hasil

Bisa diedit manual
{/* Editable Div mimicking a Rich Text Editor */}
Hasil rewrite akan muncul di sini. Anda juga bisa paste teks manual di sini...
' }} onInput={(e) => setProcessedText(e.currentTarget.innerHTML)} > {/* Footer Actions */}
{/* Disclaimer */}

Tips SEO: Gunakan mode "Hard" untuk keunikan tinggi, namun pastikan Anda membaca ulang hasilnya. Google lebih menyukai artikel yang enak dibaca manusia daripada artikel yang 100% unik tapi bahasanya aneh. Jangan lupa ganti Judul artikel.

); } ​import React, { useState, useEffect, useRef } from 'react'; import { FileText, Globe, RefreshCw, Copy, ShieldCheck, AlertTriangle, ArrowRight, Wand2, Layout } from 'lucide-react'; // Database Sinonim Bahasa Indonesia yang Luas const SYNONYM_DB = { "adalah": ["merupakan", "yaitu", "ialah", "yakni", "berupa", "sebagai"], "ini": ["tersebut", "hal ini", "perkara ini"], "itu": ["hal tersebut", "perkara itu", "objek tersebut"], "sangat": ["amat", "sungguh", "betul-betul", "luar biasa", "teramat", "ekstrem", "super"], "bagus": ["indah", "elok", "cantik", "menawan", "apik", "keren", "memukau", "elegan"], "membuat": ["menciptakan", "menyusun", "membangun", "membikin", "menghasilkan", "mengkreasi", "merancang"], "menggunakan": ["memakai", "memanfaatkan", "mendayagunakan", "mengaplikasikan", "mengoperasikan", "menerapkan"], "banyak": ["beragam", "sejumlah", "berbagai", "berlimpah", "melimpah", "banyak sekali", "segudang"], "cara": ["metode", "langkah", "teknik", "trik", "tips", "prosedur", "kiat", "strategi"], "penting": ["krusial", "signifikan", "utama", "esensial", "vital", "urgen", "mendesak"], "artikel": ["tulisan", "postingan", "konten", "bacaan", "ulasan", "naskah", "publikasi"], "situs": ["website", "laman", "portal", "web", "blog", "platform", "media online"], "mendapatkan": ["memperoleh", "meraih", "menggapai", "menemukan", "mengambil", "mendapat"], "informasi": ["kabar", "berita", "data", "fakta", "info", "wawasan", "pengetahuan"], "masalah": ["persoalan", "kendala", "hambatan", "problem", "isu", "kesulitan", "tantangan"], "solusi": ["jalan keluar", "pemecahan", "jawaban", "penyelesaian", "obat"], "terbaik": ["terunggul", "paling bagus", "nomor satu", "jempolan", "top", "pilihan"], "gratis": ["cuma-cuma", "bebas biaya", "tanpa bayar", "free"], "uang": ["dana", "biaya", "anggaran", "duit", "finansial", "kapital"], "karena": ["sebab", "dikarenakan", "lantaran", "akibat", "oleh karena", "berhubung"], "jika": ["apabila", "kalau", "bilamana", "seandainya", "misalkan", "jikalau"], "tetapi": ["namun", "tapi", "akan tetapi", "sedangkan", "melainkan", "hanya saja"], "dan": ["serta", "beserta", "juga", "ditambah", "sekaligus"], "atau": ["maupun", "ataupun", "bisa juga"], "seperti": ["bagai", "laksana", "semisal", "ibarat", "contohnya", "umpama"], "baru": ["anyar", "fresh", "terkini", "modern", "mutakhir", "aktual"], "lama": ["usang", "kuno", "lawas", "terdahulu", "lampau", "antik"], "mudah": ["gampang", "simpel", "sederhana", "praktis", "ringan", "enteng"], "sulit": ["susah", "sukar", "rumit", "kompleks", "pelik", "berbelit"], "cepat": ["kilat", "gesit", "tangkas", "kencang", "segera", "lekas", "instan"], "melihat": ["memandang", "menyaksikan", "menonton", "mengamati", "menengok", "melirik"], "berkata": ["berucap", "berbicara", "mengatakan", "menuturkan", "ujar", "menyebutkan"], "tempat": ["lokasi", "area", "kawasan", "zona", "posisi", "spot", "wilayah"], "waktu": ["masa", "saat", "momen", "periode", "tempo", "kala", "durasi"], "terjadi": ["berlangsung", "berjalan", "timbul", "muncul", "insiden", "kejadian"], "memberikan": ["menyajikan", "menyuguhkan", "menyerahkan", "membagikan", "mendonasikan", "memberi"], "percaya": ["yakin", "iman", "optimis", "konfiden"], "bingung": ["bimbang", "ragu", "kacau", "pusing", "linglung"], "bekerja": ["berkarya", "bertugas", "berprofesi", "beraktivitas", "mengabdi", "berkarier"], "belajar": ["menuntut ilmu", "mempelajari", "mendalami", "sekolah", "edukasi"], "sukses": ["berhasil", "jaya", "mujur", "beruntung", "gol", "pencapaian"], "gagal": ["kandas", "tumbang", "meleset", "batal", "gugur"], "harga": ["nilai", "tarif", "banderol", "cost", "biaya"], "bisnis": ["usaha", "niaga", "perdagangan", "komersial", "wirausaha"], "pemerintah": ["penguasa", "birokrasi", "negara", "otoritas"], "masyarakat": ["rakyat", "warga", "penduduk", "publik", "orang banyak", "komunitas"], "membeli": ["memborong", "berbelanja", "transaksi", "menebus", "bayar"], "menjual": ["memasarkan", "mendagangkan", "melego", "menawarkan"], "memiliki": ["mempunyai", "menguasai", "memegang", "menggenggam"], "mencoba": ["menjajal", "menguji", "mencicipi", "bereksperimen", "tes"], "paham": ["mengerti", "tahu", "mafum", "jelas", "menguasai"], "mungkin": ["barangkali", "boleh jadi", "bisa saja", "potensial", "kemungkinan"], "sering": ["kerap", "acap kali", "berulang kali", "rutin"], "jarang": ["langka", "sesekali", "tidak sering", "terkadang"], "selalu": ["senantiasa", "terus-menerus", "konsisten", "rutin", "abadi"], "untuk": ["bagi", "buat", "guna", "demi", "kepada"], "bisa": ["dapat", "mampu", "sanggup", "boleh"], "besar": ["luas", "akbar", "raksasa", "masif", "signifikan"], "kecil": ["mungil", "sempit", "sedikit", "mini", "minor"], "orang": ["individu", "manusia", "person", "seseorang"], "dunia": ["jagat", "bumi", "global", "semesta"], "hari": ["siang", "waktu", "kalender"], "tahun": ["periode", "masa", "dekade"], "hidup": ["nyawa", "kehidupan", "hayati"], "mati": ["wafat", "tewas", "gugur", "meninggal"], "senang": ["bahagia", "gembira", "ceria", "sukacita"], "sedih": ["murung", "duka", "kecewa", "pilu"] }; export default function BloggerGenerator() { const [url, setUrl] = useState(''); const [originalText, setOriginalText] = useState(''); const [processedText, setProcessedText] = useState(''); const [isLoading, setIsLoading] = useState(false); const [spinLevel, setSpinLevel] = useState('medium'); // soft, medium, hard const [uniqueness, setUniqueness] = useState(0); const [statusMsg, setStatusMsg] = useState(''); const outputRef = useRef(null); // Fungsi untuk membersihkan HTML dari URL external const cleanHTML = (htmlContent) => { const doc = new DOMParser().parseFromString(htmlContent, 'text/html'); // Hapus script, style, dan elemen pengganggu const badTags = ['script', 'style', 'iframe', 'noscript', 'header', 'footer', 'nav', 'aside', '.ads', '.sidebar', '.menu', '#comments']; badTags.forEach(tag => { const elements = doc.querySelectorAll(tag); elements.forEach(el => el.remove()); }); // Coba ambil konten utama let content = ''; const possibleSelectors = ['article', '.post-content', '.entry-content', '#content', '.main-content', '.read__content']; for (let selector of possibleSelectors) { const el = doc.querySelector(selector); if (el) { // Ambil paragraf saja agar bersih const paragraphs = el.querySelectorAll('p'); if (paragraphs.length > 0) { content = Array.from(paragraphs).map(p => `

${p.innerText}

`).join('\n'); break; } } } // Fallback: ambil semua P jika tidak ada container if (!content) { const ps = doc.querySelectorAll('p'); if (ps.length > 5) { content = Array.from(ps).map(p => `

${p.innerText}

`).join('\n'); } } return content || "

Gagal mengekstrak konten otomatis. Silakan copy-paste manual teksnya ke sini.

"; }; const fetchContent = async () => { if (!url) { setStatusMsg('Masukkan URL terlebih dahulu!'); return; } setIsLoading(true); setStatusMsg('Sedang mengambil data dari URL...'); setOriginalText(''); setProcessedText(''); try { // Menggunakan AllOrigins Proxy untuk bypass CORS const proxy = `https://api.allorigins.win/get?url=${encodeURIComponent(url)}`; const response = await fetch(proxy); const data = await response.json(); if (data.contents) { const cleanText = cleanHTML(data.contents); setOriginalText(cleanText); setStatusMsg('Berhasil mengambil artikel! Sedang memproses rewrite...'); setTimeout(() => processRewrite(cleanText), 500); } else { throw new Error('Konten kosong'); } } catch (error) { setStatusMsg('Gagal mengambil URL (Website memblokir akses). Silakan Copy-Paste manual teks aslinya.'); console.error(error); } finally { setIsLoading(false); } }; const processRewrite = (htmlInput = originalText) => { if (!htmlInput) return; // Parser sementara untuk memisahkan tag HTML dan Teks // Kita hanya me-spin teks di dalam tag, bukan tag HTML-nya const tempDiv = document.createElement('div'); tempDiv.innerHTML = htmlInput; let totalWords = 0; let changedWords = 0; const walkAndSpin = (node) => { if (node.nodeType === 3) { // Text Node const text = node.nodeValue; const tokens = text.split(/([\s\n\r,.!?;:"'()]+)/); const newTokens = tokens.map(token => { if (!token.trim()) return token; totalWords++; const lower = token.toLowerCase(); // Cek database if (SYNONYM_DB[lower]) { const synonyms = SYNONYM_DB[lower]; // Logika Level Spin let chance = 0.5; // Medium if (spinLevel === 'soft') chance = 0.2; if (spinLevel === 'hard') chance = 0.9; if (Math.random() < chance) { changedWords++; let chosen = synonyms[Math.floor(Math.random() * synonyms.length)]; // Pertahankan huruf besar awal if (token.charAt(0) === token.charAt(0).toUpperCase()) { chosen = chosen.charAt(0).toUpperCase() + chosen.slice(1); } return chosen; } } return token; }); node.nodeValue = newTokens.join(''); } else if (node.nodeType === 1 && node.tagName !== 'SCRIPT' && node.tagName !== 'STYLE') { // Rekursif ke anak elemen node.childNodes.forEach(child => walkAndSpin(child)); } }; walkAndSpin(tempDiv); setProcessedText(tempDiv.innerHTML); // Hitung persentase const percent = totalWords > 0 ? Math.round((changedWords / totalWords) * 100) : 0; setUniqueness(percent); setStatusMsg(`Selesai! Tingkat keunikan estimasi: ${percent}%`); }; const copyToClipboard = (text) => { // Ubah
jadi newline untuk plain text copy const temp = document.createElement('div'); temp.innerHTML = text; const plainText = temp.innerText; navigator.clipboard.writeText(plainText); alert('Teks berhasil disalin!'); }; const copyAsHTML = () => { navigator.clipboard.writeText(processedText); alert('HTML berhasil disalin! Paste di tab "HTML View" pada Blogger.'); }; return (
{/* Header */}

Blogger Auto Rewrite

Copy link artikel, rewrite otomatis, posting ke Blogger dengan aman.

{/* Sidebar Controls */}
{/* Input URL */}
setUrl(e.target.value)} placeholder="https://contoh.com/artikel..." className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-orange-500 outline-none text-sm" />
{statusMsg &&

{statusMsg}

}
{/* Settings */}
{/* Stats */}

Estimasi Keunikan

{uniqueness}%

*Semakin tinggi %, semakin beda dari asli.

{/* Main Editor */}

Editor Hasil

Bisa diedit manual
{/* Editable Div mimicking a Rich Text Editor */}
Hasil rewrite akan muncul di sini. Anda juga bisa paste teks manual di sini...
' }} onInput={(e) => setProcessedText(e.currentTarget.innerHTML)} > {/* Footer Actions */}
{/* Disclaimer */}

Tips SEO: Gunakan mode "Hard" untuk keunikan tinggi, namun pastikan Anda membaca ulang hasilnya. Google lebih menyukai artikel yang enak dibaca manusia daripada artikel yang 100% unik tapi bahasanya aneh. Jangan lupa ganti Judul artikel.

); }

Tidak ada komentar:

Posting Komentar