`;
filesList.appendChild(row);
});
filesList.querySelectorAll("button[data-act]").forEach(btn => {
btn.addEventListener("click", () => {
const act = btn.getAttribute("data-act");
const idx = Number(btn.getAttribute("data-idx"));
const f = state.files[idx];
if (!f) return;
if (act === "show"){
preview.textContent = f.xml;
setTab("xml");
showToast("Показан: " + f.name);
} else {
downloadText(f.name, f.xml);
}
});
});
}
function build(){
hideError();
const raw = (urlsTa.value || "").split(/\r?\n/).map(x => x.trim()).filter(Boolean);
state = { xml:"", files:[], bad:[], input: raw.length, valid:0, dupes:0 };
if (raw.length === 0){
preview.textContent = "—";
downloadBtn.disabled = true;
copyBtn.disabled = true;
refreshStats();
badList.textContent = "—";
filesList.textContent = "—";
showError("Вставьте хотя бы один URL.");
return;
}
let lastmod = "";
if (lastmodMode.value === "today") lastmod = todayIso();
if (lastmodMode.value === "custom"){
const lm = (lastmodCustom.value || "").trim();
if (!isValidIsoDate(lm)){
showError("lastmod должен быть YYYY-MM-DD (например 2025-12-26).");
return;
}
lastmod = lm;
}
const opts = {
lastmod,
changefreq: changefreq.value || "",
priority: priority.value || ""
};
const good = [];
const seen = new Set();
raw.forEach(line => {
const r = normalizeUrl(line);
if (!r.ok){
state.bad.push(line);
return;
}
if (dedup.checked){
if (seen.has(r.value)){ state.dupes++; return; }
seen.add(r.value);
}
good.push(r.value);
});
state.valid = good.length;
if (good.length === 0){
preview.textContent = "—";
downloadBtn.disabled = true;
copyBtn.disabled = true;
refreshStats();
refreshBad();
refreshFiles();
showError("Нет валидных URL. Проверьте формат.");
setTab("bad");
return;
}
const chunk = Math.max(1, Number(chunkSize.value || 50000));
const baseName = (filename.value || "sitemap.xml").trim() || "sitemap.xml";
const base = baseName.toLowerCase().endsWith(".xml") ? baseName.slice(0,-4) : baseName;
const files = [];
for (let i=0; i
онлайн-инструмент для быстрого создания корректной карты сайта без программирования и сложных настроек. Сервис автоматически обрабатывает список URL, удаляет дубликаты и UTM-метки, формирует валидный sitemap.xml и помогает подготовить сайт к индексации в поисковых системах. Подходит для SEO-специалистов, веб-разработчиков, владельцев сайтов и маркетологов.