robox.biz.id

import os, zipfile, textwrap, datetime, json, pathlib, re, random, string

# Directory for site files
site_dir = ‘/mnt/data/robox_site’
os.makedirs(site_dir, exist_ok=True)
assets_dir = os.path.join(site_dir, ‘assets’)
os.makedirs(assets_dir, exist_ok=True)
images_dir = os.path.join(assets_dir, ‘images’)
os.makedirs(images_dir, exist_ok=True)

# Simple placeholder image
from PIL import Image, ImageDraw, ImageFont
img = Image.new(‘RGB’, (1200, 628), color=(240, 240, 240))
d = ImageDraw.Draw(img)
d.text((50, 280), “Placeholder Image”, fill=(0, 0, 0))
placeholder_path = os.path.join(images_dir, ‘placeholder.png’)
img.save(placeholder_path)

# CSS
style_css = “””
* {
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
line-height: 1.6;
background: #fafafa;
}
header {
background: #fff;
padding: 1rem 0;
border-bottom: 1px solid #eaeaea;
position: sticky;
top: 0;
}
.navbar {
max-width: 900px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 1rem;
}
.navbar a {
margin: 0 0.5rem;
text-decoration: none;
color: #333;
}
.container {
max-width: 900px;
margin: 2rem auto;
padding: 0 1rem;
background:#fff;
}
article img {
max-width: 100%;
height: auto;
}
footer {
background: #fff;
padding: 1rem 0;
border-top: 1px solid #eaeaea;
text-align: center;
}
“””

with open(os.path.join(assets_dir, ‘style.css’), ‘w’, encoding=’utf-8′) as f:
f.write(style_css)

# Navigation HTML
nav_html = “””

“””

footer_html = “””

© 2025 Robox Tutorial. All rights reserved.

“””

# Articles data
articles = [
(“cara-membersihkan-layar-laptop.html”, “Cara Membersihkan Layar Laptop dengan Aman”,
[“Layar laptop yang bersih bukan hanya soal estetika, tetapi juga menjaga kesehatan mata dan kinerja perangkat.”,
“Pertama, matikan laptop dan cabut kabel daya. Gunakan kain mikrofiber lembut, hindari tisu kasar yang bisa meninggalkan goresan halus.”,
“Semprot sedikit cairan pembersih khusus layar—jangan pernah langsung ke layar—lalu usap dengan gerakan memutar perlahan dari tengah ke tepi.”,
“Akhiri dengan mengeringkan layar menggunakan sisi kain yang kering. Lakukan ritual ini maksimal seminggu sekali untuk layar tetap bening.”]),
(“tips-hemat-air-saat-mencuci-piring.html”, “Tips Hemat Air saat Mencuci Piring”,
[“Menghemat air tidak sebatas memasang keran hemat, tetapi juga soal kebiasaan.”,
“Gunakan baskom besar berisi air sabun untuk merendam piring berminyak lebih dulu, sehingga kotoran mudah luruh tanpa aliran air terus-menerus.”,
“Bilas semua piring sekaligus pada akhir sesi, bukan satu per satu. Teknik ini dapat memangkas konsumsi air hingga 40 persen.”,
“Pasang aerator di keran dapur agar aliran terasa deras namun volume air sebenarnya minim.”]),
(“merawat-tanaman-hias-indoor.html”, “Merawat Tanaman Hias Indoor agar Subur”,
[“Tanaman hias indoor mempercantik ruangan dan meningkatkan kualitas udara.”,
“Kunci utamanya adalah pencahayaan tidak langsung, siram secukupnya saat media tanam mulai kering, dan semprot daun sekali seminggu untuk menjaga kelembapan.”,
“Gunakan pot berpori seperti terracotta agar akar bernapas, lalu tambahkan pupuk organik cair dua pekan sekali.”,
“Bersihkan debu di daun dengan kain lembap agar proses fotosintesis tetap optimal.”]),
(“mendinginkan-ruangan-tanpa-ac.html”, “Trik Cepat Mendinginkan Ruangan Tanpa AC”,
[“Pendingin ruangan tak harus selalu AC. Pertama, ciptakan sirkulasi silang: buka jendela berseberangan agar udara mengalir.”,
“Letakkan mangkuk es di depan kipas angin, embun dingin akan tersebar cepat. Gunakan tirai blackout untuk menahan panas matahari.”,
“Cat dinding dengan warna terang reflektif dan tambahkan tanaman indoor besar yang menyerap panas.”,
“Hindari menyalakan peralatan elektronik berat di siang puncak, karena turut memanaskan ruangan.”]),
(“menyusun-anggaran-bulanan.html”, “Menyusun Anggaran Bulanan dalam 15 Menit”,
[“Anggaran bukan sekedar angka, melainkan kompas finansial. Mulailah dengan aturan 50-30-20: kebutuhan, keinginan, dan tabungan.”,
“Catat pendapatan bersih, lalu alokasikan otomatis transfer tabungan saat gajian. Gunakan aplikasi dompet digital untuk melacak pengeluaran harian.”,
“Tinjau kembali tiap akhir bulan, sesuaikan bila ada pengeluaran tak terduga. Metode sederhana ini menekan kebocoran uang hingga 25 persen.”,
“Berikan reward kecil jika berhasil mencapai target menabung untuk menjaga motivasi.”]),
(“cara-menyimpan-sayur.html”, “Cara Menyimpan Sayur agar Tahan Lama”,
[“Sayuran segar cepat layu jika salah penanganan. Pisahkan sayur berdaun dengan yang berakar.”,
“Gunakan kontainer kedap udara diberi lapisan tisu kertas untuk menyerap kelembapan.”,
“Beberapa sayur seperti mentimun sebaiknya disimpan di rak bukan di kulkas, karena suhu dingin mempercepat pembusukan.”,
“Cuci sayur ketika akan dimasak saja, bukan saat membeli.”]),
(“kopi-susu-ala-kafe.html”, “Panduan Membuat Kopi Susu Ala Kafe di Rumah”,
[“Biji kopi segar adalah rahasia rasa. Giling kasar untuk metode french press, seduh 4 menit dengan air 93°C.”,
“Panaskan susu full cream hingga 60°C, lalu froth menggunakan french press kosong atau whisk.”,
“Campur 1:1 kopi hasil seduh dengan susu, tambahkan sirup karamel jika suka.”,
“Sajikan di gelas transparan agar lapisan terlihat menggoda.”]),
(“backup-data-smartphone.html”, “Langkah Mudah Backup Data Smartphone”,
[“Hilang data berarti hilang kenangan. Aktifkan cadangan otomatis di cloud bawaan ponsel.”,
“Gunakan kabel USB ke laptop dan salin foto/video penting seminggu sekali sebagai cadangan lokal.”,
“Aplikasi pihak ketiga seperti Syncthing memungkinkan sinkronisasi Wi-Fi langsung ke komputer rumah.”,
“Verifikasi file hasil backup secara berkala; backup yang tidak pernah diuji adalah ilusi keamanan.”]),
(“memotret-makanan-dengan-ponsel.html”, “Tips Memotret Makanan dengan Ponsel”,
[“Pencahayaan alami dekat jendela adalah kunci. Matikan flash, gunakan alas netral agar makanan jadi bintang.”,
“Teknik top‑down cocok untuk pizza, sedangkan sudut 45° membuat burger tampak tiga dimensi.”,
“Gunakan mode pro: turunkan ISO dan tingkatkan ekspos sedikit agar warna makanan hidup.”,
“Edit ringan kontras dan saturasi, hindari filter ekstrem agar tampilan tetap realistis.”]),
(“mengatur-waktu-belajar-anak.html”, “Cara Mengatur Waktu Belajar Anak di Rumah”,
[“Rutinitas jelas bantu anak disiplin. Buat jadwal belajar 25 menit (metode pomodoro) lalu rehat 5 menit.”,
“Gunakan papan tulis mini untuk mencatat target harian; anak akan merasa terlibat.”,
“Singkirkan gangguan gawai, sediakan sudut belajar nyaman dengan pencahayaan cukup.”,
“Apresiasi pencapaian kecil dengan pujian atau stiker bintang untuk menjaga semangat.”]),
]

# Generate article pages and collect index items
index_items_html = “”
today_str = datetime.date.today().isoformat()
for slug, title, paragraphs in articles:
article_html = f”””


{nav_html}

{footer_html}

“””
with open(os.path.join(site_dir, slug), ‘w’, encoding=’utf-8′) as f:
f.write(article_html)
excerpt = paragraphs[0][:120] + ‘…’
index_items_html += f”””

{title}

{excerpt}

“””

# Generate index.html
index_html = f”””

{nav_html}

Selamat Datang di Robox Tutorial

Kumpulan tips dan tutorial praktis sehari-hari untuk hidup lebih efisien.

{index_items_html}

{footer_html}

“””
with open(os.path.join(site_dir, ‘index.html’), ‘w’, encoding=’utf-8′) as f:
f.write(index_html)

# Generate static pages
static_pages = {
‘about.html’: (“Tentang Kami”, [
“Robox Tutorial adalah situs yang menyajikan tips dan panduan praktis untuk keseharian Anda.”,
“Misi kami sederhana: membantu pembaca menemukan cara mudah menyelesaikan masalah sehari-hari.”,
]),
‘contact.html’: (“Kontak”, [
“Silakan kirim pertanyaan atau masukan ke:”,

Email: halo@robox.biz.id

‘,
]),
‘privacy.html’: (“Kebijakan Privasi”, [
“Privasi Anda penting bagi kami. Dokumen ini menjelaskan data apa yang kami kumpulkan dan bagaimana kami menggunakannya.”,
“Kami tidak membagikan informasi pribadi Anda kepada pihak ketiga tanpa izin.”,
]),
‘terms.html’: (“Syarat dan Ketentuan”, [
“Dengan mengakses situs ini, Anda setuju untuk terikat oleh Syarat dan Ketentuan berikut.”,
“Konten hanya untuk tujuan informasi dan bukan nasihat profesional.”,
]),
}

for filename, (title, paragraphs) in static_pages.items():
page_html = f”””

{nav_html}

{title}

{“”.join([f”

{p}

” for p in paragraphs])}

{footer_html}

“””
with open(os.path.join(site_dir, filename), ‘w’, encoding=’utf-8′) as f:
f.write(page_html)

# Create ZIP
zip_path = ‘/mnt/data/robox_biz_id_html_site.zip’
with zipfile.ZipFile(zip_path, ‘w’, zipfile.ZIP_DEFLATED) as zipf:
for foldername, subfolders, filenames in os.walk(site_dir):
for filename in filenames:
filepath = os.path.join(foldername, filename)
arcname = os.path.relpath(filepath, site_dir)
zipf.write(filepath, arcname)

zip_path

Scroll to Top