Hanaz Writers

Generate a Professional Story Title

(function () { // Prevent duplicate loading if (window.freeStoryLoaded) return; window.freeStoryLoaded = true; // ========================= // FREE USAGE RESTRICTIONS // ========================= const STORAGE_KEY = "hanaz_story_used"; // Generate browser fingerprint function getFingerprint() { return btoa( navigator.userAgent + screen.width + screen.height + navigator.language + Intl.DateTimeFormat().resolvedOptions().timeZone ); } const browserFingerprint = getFingerprint(); // Check saved usage const alreadyUsed = localStorage.getItem(STORAGE_KEY); // Block immediately if already used if (alreadyUsed) { document.getElementById("resultBox").innerHTML = `

Unlock Premium Version

Free access has already been used on this device.

Go Premium
`; document .getElementById("generateBtn") .disabled = true; } // ✅ FREE API const API_URL = "https://ai.hanazwriters.org/free/story"; // ✅ Only one free use let usedOnce = false; document .getElementById("generateBtn") .addEventListener("click", generateTitle); async function generateTitle() { const prompt = document.getElementById("promptInput") .value .trim(); const resultBox = document.getElementById("resultBox"); // 🚫 BLOCK SECOND USE if (usedOnce) { resultBox.innerHTML = `

Unlock Premium Version

The free version allows only one title generation.

Go Premium
`; return; } // Validation if (!prompt) { resultBox.innerHTML = "

Please enter a prompt.

"; return; } resultBox.innerHTML = "

Generating title...

"; try { const response = await fetch(API_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ prompt, fingerprint: browserFingerprint }) }); // ===================================== // HANDLE FREE LIMIT REACHED // ===================================== if (response.status === 403) { resultBox.innerHTML = `

Unlock Premium Version

The free version allows only one title generation.

Go Premium
`; // Disable button document .getElementById("generateBtn") .disabled = true; // Save permanently localStorage.setItem( STORAGE_KEY, "used" ); return; } // Other errors if (!response.ok) { throw new Error("Server responded with an error"); } const data = await response.json(); resultBox.innerHTML = `
Generated Title:

${data.storyName}
`; // ✅ Mark used // ✅ Mark used permanently usedOnce = true; localStorage.setItem( STORAGE_KEY, "used" ); } catch (err) { resultBox.innerHTML = `

Error: ${err.message}

`; } } })();