Tutorial Lengkap: Membuat Auto Content Generator (ACG) dengan Python
Auto Content Generator (ACG) adalah sistem otomatis yang bisa mengambil artikel dari sumber publik, memprosesnya, lalu menghasilkan konten baru. Tutorial ini akan membahas arsitektur, kode Python, hingga integrasi ke WordPress.
Pendahuluan
ACG biasanya bekerja seperti mesin produksi konten: kamu beri kata kunci, sistem akan mencari artikel dari sumber terbuka, mengekstrak isi utama, mengecek duplikasi, lalu memprosesnya dengan model bahasa (LLM). Hasilnya bisa berupa artikel baru yang lebih segar dengan atribusi sumber.
Arsitektur ACG
- Input: kata kunci + daftar sumber (URL/RSS).
- Harvester: fetcher dengan patuh
robots.txt, delay, dan user-agent jelas. - Extractor: ambil title, teks utama, dan meta description dengan
readability. - Store: simpan raw HTML + metadata.
- Dedup: fingerprint dengan SHA256, SimHash/MinHash untuk skala besar.
- Generator: LLM atau engine rewriter, dengan instruksi agar konten tidak plagiat.
- Post-process: cek plagiarisme, skor keterbacaan, SEO metadata.
- Publisher: kirim ke CMS (WordPress API) sebagai draft.
- Monitoring: logging, metrics, audit trail.
Etika dan Hukum
- Patuh terhadap
robots.txtdan Terms of Service situs target. - Jangan bypass paywall atau menyalin konten berhak cipta mentah-mentah.
- Selalu tambahkan atribusi sumber dengan link.
- Pastikan artikel baru minimal 30% orisinal.
Persiapan Lingkungan
pip install requests beautifulsoup4 readability-lxml python-dotenv
# Jika perlu scraping dinamis:
pip install playwright
playwright install
Proof-of-Concept (POC) Python
Berikut contoh kode POC sederhana untuk pipeline ACG:
import requests, time, hashlib, json
from bs4 import BeautifulSoup
from readability import Document
from urllib.parse import urlparse
import urllib.robotparser as robotparser
from difflib import SequenceMatcher
USER_AGENT = "ACG-Bot/1.0 (+https://example.com/contact)"
MIN_DELAY_SECONDS = 1.0
def obeys_robots(url):
parsed = urlparse(url)
robots_url = f"{parsed.scheme}://{parsed.netloc}/robots.txt"
rp = robotparser.RobotFileParser()
rp.set_url(robots_url)
rp.read()
return rp.can_fetch(USER_AGENT, url)
def fetch_url(url):
if not obeys_robots(url):
raise PermissionError("robots.txt melarang scraping")
resp = requests.get(url, headers={"User-Agent": USER_AGENT}, timeout=15)
time.sleep(MIN_DELAY_SECONDS)
return resp.status_code, resp.text
def extract_main_content(html, url=""):
doc = Document(html)
title = doc.short_title()
soup = BeautifulSoup(doc.summary(), "html.parser")
text = "\\n\\n".join(p.get_text(strip=True) for p in soup.find_all("p"))
return {"title": title, "text": text, "source_url": url}
def fingerprint(text):
return hashlib.sha256(text.encode()).hexdigest()
def is_near_duplicate(text, existing, threshold=0.85):
for other in existing:
if SequenceMatcher(None, text, other).ratio() >= threshold:
return True
return False
def acg_pipeline(keyword, urls):
existing = []
sources = []
for url in urls:
try:
status, html = fetch_url(url)
if status != 200: continue
parsed = extract_main_content(html, url)
if not parsed["text"]: continue
if is_near_duplicate(parsed["text"], existing): continue
existing.append(parsed["text"])
sources.append(parsed)
except Exception as e:
print("Error:", e)
# Placeholder generator
body = f"[Draft artikel untuk {keyword}]\\n"
for s in sources:
body += f"Referensi: {s['title']} ({s['source_url']})\\n"
return {"title": f"Artikel tentang {keyword}", "content": body}
if __name__ == "__main__":
draft = acg_pipeline("energi terbarukan", [
"https://contoh-domain.org/artikel-sample-1"
])
print(json.dumps(draft, indent=2, ensure_ascii=False))
Integrasi dengan WordPress
Kamu bisa menggunakan REST API WordPress dengan App Password:
import requests
def publish_to_wordpress(title, content):
endpoint = "https://example.com/wp-json/wp/v2/posts"
auth = ("wp_user", "app_password")
payload = {"title": title, "content": content, "status": "draft"}
resp = requests.post(endpoint, auth=auth, json=payload)
print(resp.json())
Langkah Lanjutan
- Gunakan Playwright untuk situs dengan JavaScript berat.
- Dedup dengan MinHash/SimHash untuk skala besar.
- Tambahkan plagiarism checker (Copyscape API atau internal index).
- Buat pipeline dengan Celery/RQ dan dashboard monitoring.
Pengalaman?...
Punya pengalaman membangun ACG atau trik anti-plagiarisme? Bagikan kesini dalam komentar agar komunitas bisa belajar lebih banyak.
#Hashtag: #Python #WebScraping #ACG #WordPress #Tutorial #MediaOnline