"""
def html_doc(title, description, canonical, body, schema=None):
schema_tag = f'' if schema else ""
return f"""
{html.escape(title)}
{schema_tag}{body}"""
schema_main = f"""{{
"@context":"https://schema.org","@type":"TowingService","name":"{BRAND}",
"url":"{DOMAIN}","telephone":"{PHONE_TEL}","openingHours":"Mo-Su 00:00-23:59",
"description":"Ankara–Niğde Otoyolu ve bağlantı yollarında 7/24 oto kurtarma ve çekici hizmeti.",
"areaServed":["Ankara","Konya","Kırşehir","Aksaray","Nevşehir","Niğde"]
}}"""
# Grouped region links
groups = {}
for r in regions:
groups.setdefault(r["province"], []).append(r)
groups_html = ""
for province, items in groups.items():
chips = "".join(f'{r["district"]}' for r in items)
groups_html += f'
{province}
{chips}
'
index_body = header() + f"""
Ankara–Niğde Otoyolu 7/24 Destek
Ankara'dan Niğde'ye yolda yanınızdayız.
Ankara–Niğde Otoyolu, bağlantı yolları ve güzergâhtaki ilçe merkezlerinde oto kurtarma, çekici, akü takviyesi, lastik değişimi ve araç taşıma desteği.
""" + footer()
(root / "index.html").write_text(
html_doc(
"Ankara Niğde Arası Yol Yardım | 7/24 Oto Kurtarma ve Çekici",
"Ankara–Niğde Otoyolu ve bağlantı yollarında 7/24 oto kurtarma, çekici, akü takviyesi, lastik değişimi ve araç taşıma hizmeti.",
DOMAIN + "/",
index_body,
schema_main,
),
encoding="utf-8",
)
services_body = header() + f"""
""" + footer()
(root / "hizmetler.html").write_text(html_doc(
"Yol Yardım Hizmetleri | Ankara Niğde Oto Kurtarma",
"Ankara–Niğde güzergâhında oto kurtarma, çekici, akü takviyesi, lastik değişimi, yakıt desteği ve araç taşıma hizmetleri.",
DOMAIN + "/hizmetler.html", services_body, schema_main), encoding="utf-8")
regions_body = header() + f"""
Resmî otoyol güzergâhı ve bağlantı yolları boyunca hazırlanan ilçe bazlı hizmet sayfaları.
{groups_html}
Hizmet talebinde bulunurken bulunduğunuz gişeyi, kilometreyi, yönü ve en yakın yerleşim yerini paylaşmanız yönlendirmeyi kolaylaştırır.
""" + footer()
(root / "bolgeler.html").write_text(html_doc(
"Hizmet Bölgeleri | Ankara Niğde Arası Yol Yardım",
"Ankara, Konya, Kırşehir, Aksaray, Nevşehir ve Niğde güzergâhındaki yol yardım ve çekici hizmet bölgeleri.",
DOMAIN + "/bolgeler.html", regions_body, schema_main), encoding="utf-8")
contact_body = header() + f"""
""" + footer()
(root / "iletisim.html").write_text(html_doc(
"İletişim | Ankara Niğde Yol Yardım",
"Ankara–Niğde güzergâhında 7/24 yol yardım ve çekici hizmeti için telefon veya WhatsApp üzerinden ulaşın.",
DOMAIN + "/iletisim.html", contact_body, schema_main), encoding="utf-8")
# Unique regional pages
service_items = ["7/24 oto kurtarma", "çekici hizmeti", "akü takviyesi", "lastik değişimi", "yakıt desteği", "araç taşıma"]
for r in regions:
title_loc = f"{r['district']} Yol Yardım ve Çekici"
if r["district"] == "Merkez":
title_loc = f"{r['province']} Merkez Yol Yardım ve Çekici"
loc_name = f"{r['district']}, {r['province']}" if r["district"] != "Merkez" else f"{r['province']} Merkez"
canonical = f"{DOMAIN}/bolgeler/{r['slug']}.html"
desc = f"{loc_name} ve {r['route']} çevresinde 7/24 oto kurtarma, çekici, akü takviyesi ve yol yardım hizmeti."
schema = f"""{{
"@context":"https://schema.org","@type":"TowingService","name":"{title_loc}",
"url":"{canonical}","telephone":"{PHONE_TEL}","openingHours":"Mo-Su 00:00-23:59",
"description":"{desc}","areaServed":{{"@type":"AdministrativeArea","name":"{loc_name}"}}
}}"""
cards = "".join(f'
{html.escape(r['route'])} üzerinde aracınız arızalandığında veya kaza durumunda, bulunduğunuz konumu ve araç bilgilerini paylaşarak destek talep edebilirsiniz.
Konum bildirirken otoyol kilometresi, gişe adı, sürüş yönü ve yakınınızdaki tesis veya kavşak bilgisini eklemeniz doğru yönlendirmeyi kolaylaştırır.
Güvenliğiniz için mümkünse aracı emniyet şeridine alın, dörtlüleri yakın ve reflektör yerleştirin.
Sunulan hizmetler
{cards}
{html.escape(loc_name)} için yardım alın
Telefonla arayın veya WhatsApp üzerinden canlı konumunuzu gönderin.
""" + footer()
(regions_dir / f"{r['slug']}.html").write_text(
html_doc(f"{title_loc} | 7/24 Oto Kurtarma", desc, canonical, body, schema), encoding="utf-8"
)
(assets / "styles.css").write_text(css, encoding="utf-8")
(assets / "script.js").write_text(js, encoding="utf-8")
# robots.txt and sitemap.xml
urls = [
DOMAIN + "/",
DOMAIN + "/hizmetler.html",
DOMAIN + "/bolgeler.html",
DOMAIN + "/iletisim.html",
] + [f"{DOMAIN}/bolgeler/{r['slug']}.html" for r in regions]
sitemap = ['',
'']
for u in urls:
sitemap.append(f"{u}{date.today().isoformat()}")
sitemap.append("")
(root / "sitemap.xml").write_text("\n".join(sitemap), encoding="utf-8")
(root / "robots.txt").write_text(f"User-agent: *\nAllow: /\nSitemap: {DOMAIN}/sitemap.xml\n", encoding="utf-8")
readme = f"""ANKARA–NİĞDE ARASI YOL YARDIM SİTESİ
DOSYALAR
- index.html: Ana sayfa
- hizmetler.html: Hizmetler
- bolgeler.html: Tüm il ve ilçeler
- iletisim.html: İletişim
- bolgeler/: 14 ayrı bölge SEO sayfası
- sitemap.xml: Google site haritası
- robots.txt: Arama motoru tarama dosyası
- assets/: CSS ve JavaScript
YAYINLAMA
1. ZIP içindeki tüm dosya ve klasörleri hosting hesabındaki public_html klasörüne yükleyin.
2. Dosya yapısını bozmadan yükleyin.
3. Ücretsiz SSL'yi etkinleştirin.
4. Google Search Console'a domaini ekleyip sitemap.xml adresini gönderin.
DEĞİŞTİRİLMESİ GEREKENLER
- {PHONE_DISPLAY}
- {PHONE_TEL}
- {WHATSAPP}
Telefon numarası tüm dosyalarda yer tutucu olarak bırakılmıştır.
DOMAIN
- Kodlar {DOMAIN} alan adına göre hazırlanmıştır.
- Farklı domain alınırsa tüm dosyalarda bu adresi değiştirin.
"""
(root / "README.txt").write_text(readme, encoding="utf-8")
zip_path = Path("/mnt/data/ankara-nigde-yol-yardim-site.zip")
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
for p in root.rglob("*"):
if p.is_file():
zf.write(p, p.relative_to(root))
print(f"Site klasörü: {root}")
print(f"ZIP: {zip_path}")
print(f"Toplam HTML sayfası: {len(list(root.rglob('*.html')))}")
print("Bölgeler:", ", ".join(f"{r['province']} {r['district']}" for r in regions))