https://www.converttfree.eu/
AB2BA7 AI Writer
// 🔧 ضع رابط سيرفرك هنا:
const API_URL = "https://YOUR-DOMAIN.com/api/generate";
const el = (id) => document.getElementById(id);
const toast = el("toast");
function showToast(msg){
toast.textContent = msg;
toast.classList.add("show");
setTimeout(() => toast.classList.remove("show"), 2200);
}
function buildPrompt(){
const task = el("task").value;
const lang = el("lang").value;
const title = el("title").value.trim();
const input = el("input").value.trim();
const length = el("length").value;
const tone = el("tone").value;
return {
task, lang, title, input, length, tone
};
}
function setStatus(txt){
el("status").textContent = txt;
}
el("btnDemo").addEventListener("click", () => {
el("task").value = "seo_article";
el("lang").value = "ar";
el("title").value = "فوائد زيت الزيتون التونسي ولماذا يتفوّق";
el("input").value =
`اكتب مقالًا لمدونة بلوجر:
- مقدمة جذابة
- عناوين H2/H3
- نقاط واضحة
- خاتمة + دعوة للتفاعل
بدون ذكر مصادر.`;
el("length").value = "medium";
el("tone").value = "journalistic";
showToast("تمت تعبئة مثال ✅");
});
el("btnClear").addEventListener("click", () => {
el("title").value = "";
el("input").value = "";
el("output").textContent = "اكتب طلبك ثم اضغط “توليد”.";
el("metaLeft").textContent = "—";
setStatus("جاهز");
});
el("btnCopy").addEventListener("click", async () => {
const text = el("output").textContent.trim();
if(!text){ return showToast("لا يوجد نص لنسخه"); }
await navigator.clipboard.writeText(text);
showToast("تم النسخ 📋");
});
el("btnGenerate").addEventListener("click", async () => {
const payload = buildPrompt();
if(!payload.title && !payload.input){
return showToast("اكتب عنوانًا أو تفاصيل أولاً");
}
setStatus("يتم التوليد...");
el("output").textContent = "⏳ جاري الاتصال بالسيرفر...";
try{
const res = await fetch(API_URL, {
method: "POST",
headers: {"Content-Type":"application/json"},
body: JSON.stringify(payload)
});
if(!res.ok){
const t = await res.text();
throw new Error("HTTP " + res.status + " — " + t);
}
const data = await res.json();
el("output").textContent = data.text || "لم يتم استلام نص.";
el("metaLeft").textContent = (data.usage ? ("Tokens: " + data.usage) : "تم ✅");
setStatus("تم");
showToast("تم التوليد ✨");
}catch(err){
el("output").textContent =
"❌ خطأ: لم يتم الاتصال بالسيرفر.\n\n" +
"تأكد من API_URL وأن السيرفر يعمل.\n\n" +
String(err);
setStatus("خطأ");
}
});
