Size
48.9 KB
Version
1.1.5
Created
Dec 23, 2025
Updated
about 1 month ago
1// ==UserScript==
2// @name Freebeat No Fees Clone
3// @description Clone of Freebeat AI Music Video Generator with NO FEES messaging
4// @version 1.1.5
5// @match https://*.freebeat.ai/*
6// @icon https://freebeat.ai/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('Freebeat No Fees Clone - Starting...');
12
13 // Hide the original page content
14 function hideOriginalContent() {
15 document.body.style.display = 'none';
16 }
17
18 // Create the cloned site structure
19 function createClonedSite() {
20 console.log('Creating cloned site...');
21
22 // Create a new container for our cloned site
23 const cloneContainer = document.createElement('div');
24 cloneContainer.id = 'freebeat-no-fees-clone';
25 cloneContainer.style.cssText = 'width: 100%; min-height: 100vh; background: #040404; display: block;';
26
27 cloneContainer.innerHTML = `
28 <!-- Header -->
29 <header style="position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(4, 4, 4, 0.95); backdrop-filter: blur(10px); border-bottom: 1px solid rgba(255, 255, 255, 0.1);">
30 <div style="max-width: 1400px; margin: 0 auto; padding: 20px 40px; display: flex; justify-content: space-between; align-items: center;">
31 <div style="display: flex; align-items: center; gap: 20px;">
32 <div style="font-size: 24px; font-weight: bold; color: white;">
33 freebeat<span style="color: #2FDF13;">.ai</span>
34 </div>
35 <div style="background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); padding: 6px 16px; border-radius: 20px; font-size: 12px; font-weight: bold; color: #000; text-transform: uppercase; letter-spacing: 1px; animation: pulse 2s infinite;">
36 NO FEES
37 </div>
38 </div>
39 <div style="display: flex; align-items: center; gap: 20px;">
40 <button id="login-btn" style="background: transparent; color: white; padding: 10px 24px; border-radius: 8px; font-weight: bold; font-size: 14px; border: 1px solid rgba(255, 255, 255, 0.2); cursor: pointer; transition: all 0.2s;" onmouseover="this.style.borderColor='rgba(255, 255, 255, 0.5)'; this.style.background='rgba(255, 255, 255, 0.1)'" onmouseout="this.style.borderColor='rgba(255, 255, 255, 0.2)'; this.style.background='transparent'">
41 Log In
42 </button>
43 <button id="signup-btn" style="background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); color: #000; padding: 10px 24px; border-radius: 8px; font-weight: bold; font-size: 14px; border: none; cursor: pointer; transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.05)'" onmouseout="this.style.transform='scale(1)'">
44 Sign Up FREE
45 </button>
46 </div>
47 </div>
48 </header>
49
50 <!-- Hero Section -->
51 <section style="padding-top: 140px; padding-bottom: 60px; text-align: center; max-width: 1200px; margin: 0 auto; px: 20px;">
52 <div style="display: inline-block; background: rgba(47, 223, 19, 0.1); border: 1px solid rgba(47, 223, 19, 0.3); padding: 8px 20px; border-radius: 30px; margin-bottom: 30px;">
53 <span style="color: #2FDF13; font-size: 14px; font-weight: 600;">✨ 100% FREE - NO HIDDEN CHARGES ✨</span>
54 </div>
55
56 <h1 style="font-size: 56px; font-weight: bold; color: white; line-height: 1.2; margin-bottom: 20px; padding: 0 20px;">
57 Turn Music & Ideas into Viral Videos
58 <div style="margin-top: 10px;">
59 In <span style="position: relative; display: inline-block;">
60 <span style="position: relative; z-index: 2; color: white;">One Click</span>
61 <div style="position: absolute; inset: -15px; background: linear-gradient(90deg, #2FDF13 0%, #2FDF13 100%); opacity: 0.15; filter: blur(20px); border-radius: 30px; z-index: 1;"></div>
62 </span>
63 </div>
64 </h1>
65
66 <p style="font-size: 16px; color: rgba(255, 255, 255, 0.7); max-width: 920px; margin: 0 auto 40px; line-height: 1.6; padding: 0 20px;">
67 Dance Video • Music Video • Lyric Video. Go Viral with freebeat.ai
68 <br><strong style="color: #2FDF13;">Completely FREE - No Subscription Required!</strong>
69 </p>
70
71 <!-- Input Section -->
72 <div style="max-width: 602px; margin: 0 auto 30px; padding: 0 20px;">
73 <div style="position: relative; height: 52px;">
74 <input
75 type="text"
76 placeholder="Drop a YouTube link - Start creating for FREE!"
77 style="width: 100%; height: 100%; background: #171718; border: 1px solid #27272A; border-radius: 12px; padding: 0 160px 0 44px; color: white; font-size: 14px; outline: none; transition: border-color 0.3s;"
78 onfocus="this.style.borderColor='rgba(255, 255, 255, 0.4)'"
79 onblur="this.style.borderColor='#27272A'"
80 />
81 <div style="position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: #2FDF13; font-size: 20px;">🎵</div>
82 <button style="position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); color: #000; padding: 10px 24px; border-radius: 8px; font-weight: bold; font-size: 14px; border: none; cursor: pointer; transition: transform 0.2s;" onmouseover="this.style.transform='translateY(-50%) scale(1.05)'" onmouseout="this.style.transform='translateY(-50%) scale(1)'">
83 Create FREE
84 </button>
85 </div>
86 </div>
87
88 <div style="margin-top: 20px;">
89 <span style="color: white; text-decoration: underline; cursor: pointer; font-size: 14px;">Join our Discord Community</span>
90 </div>
91
92 <!-- Avatar Upload Section -->
93 <div style="margin-top: 40px; max-width: 600px; margin-left: auto; margin-right: auto; padding: 0 20px;">
94 <div style="text-align: center; margin-bottom: 20px;">
95 <div style="display: inline-flex; align-items: center; gap: 10px; background: rgba(47, 223, 19, 0.1); border: 1px solid rgba(47, 223, 19, 0.3); padding: 10px 20px; border-radius: 12px;">
96 <span style="font-size: 24px;">👤</span>
97 <span style="color: #2FDF13; font-size: 16px; font-weight: bold;">Custom Avatar</span>
98 </div>
99 </div>
100 <p style="color: rgba(255, 255, 255, 0.7); text-align: center; margin-bottom: 20px; font-size: 14px;">
101 Upload your own avatar image for personalized videos - 100% FREE!
102 </p>
103 <div style="position: relative; max-width: 400px; margin: 0 auto;">
104 <input type="file" id="avatar-upload" accept="image/*,.jpg,.jpeg,.png,.gif,.webp" style="display: none;">
105 <button type="button" id="avatar-upload-btn" style="width: 100%; padding: 14px 32px; background: rgba(47, 223, 19, 0.2); border: 1px dashed rgba(47, 223, 19, 0.5); border-radius: 12px; color: #2FDF13; font-size: 16px; font-weight: bold; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; gap: 10px;" onmouseover="this.style.background='rgba(47, 223, 19, 0.3)'; this.style.borderColor='rgba(47, 223, 19, 0.7)'" onmouseout="this.style.background='rgba(47, 223, 19, 0.2)'; this.style.borderColor='rgba(47, 223, 19, 0.5)'">
106 <span>📷</span>
107 <span id="avatar-file-name">Upload Avatar Image</span>
108 </button>
109 <div id="avatar-preview" style="display: none; margin-top: 15px; text-align: center;">
110 <img id="avatar-preview-img" style="max-width: 150px; max-height: 150px; border-radius: 50%; border: 3px solid #2FDF13; object-fit: cover;">
111 </div>
112 </div>
113 <p style="color: rgba(255, 255, 255, 0.5); font-size: 12px; margin-top: 12px; text-align: center;">
114 Supported: JPG, PNG, GIF, WEBP • Recommended: Square image, 512x512px or larger
115 </p>
116 </div>
117
118 <!-- Suno AI Music Section -->
119 <div style="margin-top: 40px; max-width: 800px; margin-left: auto; margin-right: auto; padding: 0 20px;">
120 <div style="text-align: center; margin-bottom: 20px;">
121 <div style="display: inline-flex; align-items: center; gap: 10px; background: rgba(138, 43, 226, 0.1); border: 1px solid rgba(138, 43, 226, 0.3); padding: 10px 20px; border-radius: 12px;">
122 <span style="font-size: 24px;">🎵</span>
123 <span style="color: #BA55D3; font-size: 16px; font-weight: bold;">Powered by Suno AI</span>
124 </div>
125 </div>
126 <p style="color: rgba(255, 255, 255, 0.7); text-align: center; margin-bottom: 20px; font-size: 14px;">
127 Or generate custom AI music for your videos - 100% FREE!
128 </p>
129 <button id="suno-ai-btn" style="width: 100%; max-width: 400px; margin: 0 auto; display: block; padding: 14px 32px; background: linear-gradient(135deg, #BA55D3 0%, #8A2BE2 100%); color: white; border: none; border-radius: 12px; font-weight: bold; font-size: 16px; cursor: pointer; transition: transform 0.2s; box-shadow: 0 4px 15px rgba(138, 43, 226, 0.3);" onmouseover="this.style.transform='scale(1.05)'" onmouseout="this.style.transform='scale(1)'">
130 🎼 Generate AI Music with Suno
131 </button>
132 </div>
133
134 <!-- NO FEES Banner -->
135 <div style="margin-top: 50px; padding: 30px; background: linear-gradient(135deg, rgba(47, 223, 19, 0.1) 0%, rgba(27, 199, 0, 0.05) 100%); border: 2px solid rgba(47, 223, 19, 0.3); border-radius: 16px; max-width: 800px; margin-left: auto; margin-right: auto;">
136 <h3 style="color: #2FDF13; font-size: 28px; font-weight: bold; margin-bottom: 15px;">🎉 NO FEES EVER! 🎉</h3>
137 <p style="color: rgba(255, 255, 255, 0.9); font-size: 16px; line-height: 1.6;">
138 Unlike other platforms, we believe in keeping creativity accessible to everyone.
139 <br><strong>No subscription fees • No hidden charges • No credit card required</strong>
140 <br>Create unlimited videos completely FREE!
141 </p>
142 </div>
143 </section>
144
145 <!-- Video Gallery Section -->
146 <section style="padding: 80px 20px; max-width: 1400px; margin: 0 auto;">
147 <div style="text-align: center; margin-bottom: 60px;">
148 <h2 style="font-size: 40px; font-weight: bold; color: white; margin-bottom: 15px;">
149 Transform Your Music into <span style="background: linear-gradient(90deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.6) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;">Stunning Videos</span>
150 </h2>
151 <p style="font-size: 16px; color: rgba(255, 255, 255, 0.7); margin-bottom: 25px;">
152 Effortlessly create dance, lyric, and music videos – ready to go viral. <strong style="color: #2FDF13;">100% FREE!</strong>
153 </p>
154 <button style="background: white; color: #121212; padding: 12px 32px; border-radius: 8px; font-weight: bold; font-size: 14px; border: none; cursor: pointer; position: relative; z-index: 10; transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.05)'" onmouseout="this.style.transform='scale(1)'">
155 Create Now - NO FEES
156 </button>
157 </div>
158
159 <!-- Video Grid -->
160 <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; margin-bottom: 40px;">
161 ${createVideoCard('Dance Video', 'High-energy dance moves synced to your music')}
162 ${createVideoCard('Lyric Video', 'Beautiful animated lyrics that captivate viewers')}
163 ${createVideoCard('Music Video', 'Professional music videos in minutes')}
164 ${createVideoCard('Viral Content', 'Trending styles that get millions of views')}
165 ${createVideoCard('AI Generated', 'Powered by cutting-edge AI technology')}
166 ${createVideoCard('Custom Styles', 'Unlimited creative possibilities')}
167 </div>
168 </section>
169
170 <!-- Features Section -->
171 <section style="padding: 80px 20px; max-width: 1200px; margin: 0 auto;">
172 <div style="text-align: center; margin-bottom: 60px;">
173 <h2 style="font-size: 40px; font-weight: bold; color: white; margin-bottom: 15px;">
174 Perfect for Creators <span style="background: linear-gradient(90deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.6) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;">Easy to Use</span>
175 </h2>
176 </div>
177
178 <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 30px;">
179 ${createFeatureCard('🎬', 'One-Click Creation', 'Generate professional videos instantly with just one click. No editing skills required!')}
180 ${createFeatureCard('💰', 'Completely FREE', 'No subscription fees, no hidden charges, no credit card needed. Create unlimited videos!')}
181 ${createFeatureCard('🚀', 'Go Viral Fast', 'Optimized for social media platforms. Create content that gets millions of views!')}
182 ${createFeatureCard('🎨', 'Multiple Styles', 'Choose from dance videos, lyric videos, music videos, and more creative options!')}
183 ${createFeatureCard('⚡', 'Lightning Fast', 'AI-powered generation creates your videos in minutes, not hours or days!')}
184 ${createFeatureCard('🌟', 'Professional Quality', 'Studio-quality output that rivals expensive production companies!')}
185 </div>
186 </section>
187
188 <!-- Final CTA Section -->
189 <section style="padding: 80px 20px; text-align: center; background: linear-gradient(180deg, #040404 0%, #0a0a0a 100%);">
190 <div style="max-width: 800px; margin: 0 auto; padding: 60px 40px; background: linear-gradient(135deg, rgba(47, 223, 19, 0.1) 0%, rgba(27, 199, 0, 0.05) 100%); border: 2px solid rgba(47, 223, 19, 0.3); border-radius: 20px;">
191 <h2 style="font-size: 36px; font-weight: bold; color: white; margin-bottom: 20px;">
192 Ready to Create Amazing Videos?
193 </h2>
194 <p style="font-size: 18px; color: rgba(255, 255, 255, 0.8); margin-bottom: 30px; line-height: 1.6;">
195 Join thousands of creators making viral content every day
196 <br><strong style="color: #2FDF13; font-size: 20px;">100% FREE - NO FEES - NO LIMITS</strong>
197 </p>
198 <button style="background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); color: #000; padding: 16px 48px; border-radius: 12px; font-weight: bold; font-size: 18px; border: none; cursor: pointer; transition: transform 0.2s; box-shadow: 0 10px 30px rgba(47, 223, 19, 0.3);" onmouseover="this.style.transform='scale(1.05)'" onmouseout="this.style.transform='scale(1)'">
199 Start Creating FREE Now
200 </button>
201 <p style="margin-top: 20px; font-size: 14px; color: rgba(255, 255, 255, 0.6);">
202 No credit card required • No signup needed • Start immediately
203 </p>
204 </div>
205 </section>
206
207 <!-- Footer -->
208 <footer style="padding: 60px 20px 40px; background: #000; border-top: 1px solid rgba(255, 255, 255, 0.1);">
209 <div style="max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 40px; margin-bottom: 40px;">
210 <div>
211 <h3 style="color: white; font-size: 18px; font-weight: bold; margin-bottom: 20px;">freebeat.ai</h3>
212 <p style="color: rgba(255, 255, 255, 0.6); font-size: 14px; line-height: 1.6;">
213 The world's first completely FREE AI music video generator. No fees, no limits, just creativity.
214 </p>
215 </div>
216 <div>
217 <h3 style="color: white; font-size: 16px; font-weight: bold; margin-bottom: 20px;">Features</h3>
218 <ul style="list-style: none; padding: 0; margin: 0;">
219 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Dance Videos</a></li>
220 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Lyric Videos</a></li>
221 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Music Videos</a></li>
222 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">AI Generator</a></li>
223 </ul>
224 </div>
225 <div>
226 <h3 style="color: white; font-size: 16px; font-weight: bold; margin-bottom: 20px;">Resources</h3>
227 <ul style="list-style: none; padding: 0; margin: 0;">
228 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Video Models</a></li>
229 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Video Effects</a></li>
230 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Tools</a></li>
231 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Blogs</a></li>
232 </ul>
233 </div>
234 <div>
235 <h3 style="color: white; font-size: 16px; font-weight: bold; margin-bottom: 20px;">Community</h3>
236 <ul style="list-style: none; padding: 0; margin: 0;">
237 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Discord</a></li>
238 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Gallery</a></li>
239 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">FAQs</a></li>
240 <li style="margin-bottom: 12px;"><a href="#" style="color: rgba(255, 255, 255, 0.6); text-decoration: none; font-size: 14px;">Contact</a></li>
241 </ul>
242 </div>
243 </div>
244 <div style="text-align: center; padding-top: 30px; border-top: 1px solid rgba(255, 255, 255, 0.1);">
245 <p style="color: rgba(255, 255, 255, 0.5); font-size: 14px;">
246 © 2024 freebeat.ai - <strong style="color: #2FDF13;">100% FREE Forever</strong> • No Fees • No Limits
247 </p>
248 </div>
249 </footer>
250 `;
251
252 // Insert the cloned site
253 document.body.appendChild(cloneContainer);
254 document.body.style.display = 'block';
255
256 // Add modals for login and signup
257 createAuthModals();
258 setupAuthEventListeners();
259
260 console.log('Cloned site created successfully!');
261 }
262
263 // Create authentication modals
264 function createAuthModals() {
265 const modalsHTML = `
266 <!-- Login Modal -->
267 <div id="login-modal" style="display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); z-index: 10000; align-items: center; justify-content: center;">
268 <div style="background: #171718; border-radius: 16px; padding: 40px; max-width: 450px; width: 90%; border: 1px solid rgba(255, 255, 255, 0.1); position: relative;">
269 <button id="close-login" style="position: absolute; top: 20px; right: 20px; background: transparent; border: none; color: white; font-size: 24px; cursor: pointer; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;">×</button>
270
271 <h2 style="color: white; font-size: 28px; font-weight: bold; margin-bottom: 10px; text-align: center;">Welcome Back!</h2>
272 <p style="color: rgba(255, 255, 255, 0.6); text-align: center; margin-bottom: 30px;">Log in to start creating FREE videos</p>
273
274 <form id="login-form" style="display: flex; flex-direction: column; gap: 20px;">
275 <div>
276 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Email</label>
277 <input type="email" placeholder="your@email.com" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(47, 223, 19, 0.5)'" onblur="this.style.borderColor='#27272A'">
278 </div>
279 <div>
280 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Password</label>
281 <input type="password" placeholder="Enter your password" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(47, 223, 19, 0.5)'" onblur="this.style.borderColor='#27272A'">
282 </div>
283 <button type="submit" style="width: 100%; padding: 14px; background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); color: #000; border: none; border-radius: 8px; font-weight: bold; font-size: 16px; cursor: pointer; transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
284 Log In
285 </button>
286 </form>
287
288 <p style="color: rgba(255, 255, 255, 0.6); text-align: center; margin-top: 20px; font-size: 14px;">
289 Don't have an account? <span id="switch-to-signup" style="color: #2FDF13; cursor: pointer; font-weight: bold;">Sign Up FREE</span>
290 </p>
291 </div>
292 </div>
293
294 <!-- Signup Modal -->
295 <div id="signup-modal" style="display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); z-index: 10000; align-items: center; justify-content: center;">
296 <div style="background: #171718; border-radius: 16px; padding: 40px; max-width: 450px; width: 90%; border: 1px solid rgba(255, 255, 255, 0.1); position: relative;">
297 <button id="close-signup" style="position: absolute; top: 20px; right: 20px; background: transparent; border: none; color: white; font-size: 24px; cursor: pointer; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;">×</button>
298
299 <h2 style="color: white; font-size: 28px; font-weight: bold; margin-bottom: 10px; text-align: center;">Create FREE Account</h2>
300 <p style="color: rgba(255, 255, 255, 0.6); text-align: center; margin-bottom: 30px;">No credit card required • 100% FREE forever</p>
301
302 <form id="signup-form" style="display: flex; flex-direction: column; gap: 20px;">
303 <div>
304 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Full Name</label>
305 <input type="text" placeholder="John Doe" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(47, 223, 19, 0.5)'" onblur="this.style.borderColor='#27272A'">
306 </div>
307 <div>
308 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Email</label>
309 <input type="email" placeholder="your@email.com" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(47, 223, 19, 0.5)'" onblur="this.style.borderColor='#27272A'">
310 </div>
311 <div>
312 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Password</label>
313 <input type="password" placeholder="Create a password" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(47, 223, 19, 0.5)'" onblur="this.style.borderColor='#27272A'">
314 </div>
315 <button type="submit" style="width: 100%; padding: 14px; background: linear-gradient(90deg, #2FDF13 0%, #1BC700 100%); color: #000; border: none; border-radius: 8px; font-weight: bold; font-size: 16px; cursor: pointer; transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
316 Create FREE Account
317 </button>
318 </form>
319
320 <p style="color: rgba(255, 255, 255, 0.6); text-align: center; margin-top: 20px; font-size: 14px;">
321 Already have an account? <span id="switch-to-login" style="color: #2FDF13; cursor: pointer; font-weight: bold;">Log In</span>
322 </p>
323 </div>
324 </div>
325
326 <!-- Suno AI Music Modal -->
327 <div id="suno-ai-modal" style="display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); z-index: 10000; align-items: center; justify-content: center; overflow-y: auto;">
328 <div style="background: #171718; border-radius: 16px; padding: 40px; max-width: 600px; width: 90%; border: 1px solid rgba(138, 43, 226, 0.3); position: relative; margin: 20px;">
329 <button id="close-suno" style="position: absolute; top: 20px; right: 20px; background: transparent; border: none; color: white; font-size: 24px; cursor: pointer; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;">×</button>
330
331 <div style="text-align: center; margin-bottom: 30px;">
332 <div style="display: inline-flex; align-items: center; gap: 10px; background: rgba(138, 43, 226, 0.2); border: 1px solid rgba(138, 43, 226, 0.5); padding: 10px 20px; border-radius: 12px; margin-bottom: 15px;">
333 <span style="font-size: 32px;">🎵</span>
334 <span style="color: #BA55D3; font-size: 20px; font-weight: bold;">Suno AI Music Generator</span>
335 </div>
336 <p style="color: rgba(255, 255, 255, 0.7); font-size: 14px;">Create custom AI-generated music for your videos - 100% FREE!</p>
337 </div>
338
339 <form id="suno-form" style="display: flex; flex-direction: column; gap: 20px;">
340 <div>
341 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Music Description</label>
342 <textarea placeholder="Describe the music you want... (e.g., upbeat electronic dance music with heavy bass)" required style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none; min-height: 100px; resize: vertical; font-family: inherit;" onfocus="this.style.borderColor='rgba(138, 43, 226, 0.5)'" onblur="this.style.borderColor='#27272A'"></textarea>
343 </div>
344 <div>
345 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Genre</label>
346 <select style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(138, 43, 226, 0.5)'" onblur="this.style.borderColor='#27272A'">
347 <option value="pop">Pop</option>
348 <option value="rock">Rock</option>
349 <option value="electronic">Electronic</option>
350 <option value="hiphop">Hip Hop</option>
351 <option value="jazz">Jazz</option>
352 <option value="classical">Classical</option>
353 <option value="ambient">Ambient</option>
354 <option value="dance">Dance</option>
355 </select>
356 </div>
357 <div>
358 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Mood</label>
359 <select style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(138, 43, 226, 0.5)'" onblur="this.style.borderColor='#27272A'">
360 <option value="energetic">Energetic</option>
361 <option value="calm">Calm</option>
362 <option value="happy">Happy</option>
363 <option value="sad">Sad</option>
364 <option value="dramatic">Dramatic</option>
365 <option value="mysterious">Mysterious</option>
366 <option value="romantic">Romantic</option>
367 </select>
368 </div>
369 <div>
370 <label style="color: white; font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px;">Duration</label>
371 <select style="width: 100%; padding: 12px 16px; background: #0a0a0a; border: 1px solid #27272A; border-radius: 8px; color: white; font-size: 14px; outline: none;" onfocus="this.style.borderColor='rgba(138, 43, 226, 0.5)'" onblur="this.style.borderColor='#27272A'">
372 <option value="30">30 seconds</option>
373 <option value="60">1 minute</option>
374 <option value="120">2 minutes</option>
375 <option value="180">3 minutes</option>
376 </select>
377 </div>
378
379 <!-- Voice Cloning Section -->
380 <div style="border-top: 1px solid rgba(138, 43, 226, 0.3); padding-top: 20px; margin-top: 10px;">
381 <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 12px;">
382 <span style="font-size: 20px;">🎤</span>
383 <label style="color: #BA55D3; font-size: 14px; font-weight: 600;">Voice Cloning (Optional)</label>
384 </div>
385 <p style="color: rgba(255, 255, 255, 0.6); font-size: 12px; margin-bottom: 12px; line-height: 1.4;">
386 Upload a voice sample to clone and add custom vocals to your AI music - 100% FREE!
387 </p>
388 <div style="position: relative;">
389 <input type="file" id="voice-upload" accept="audio/*,.mp3,.wav,.m4a,.ogg" style="display: none;">
390 <button type="button" id="voice-upload-btn" style="width: 100%; padding: 12px 16px; background: rgba(138, 43, 226, 0.2); border: 1px dashed rgba(138, 43, 226, 0.5); border-radius: 8px; color: #BA55D3; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; gap: 8px;" onmouseover="this.style.background='rgba(138, 43, 226, 0.3)'; this.style.borderColor='rgba(138, 43, 226, 0.7)'" onmouseout="this.style.background='rgba(138, 43, 226, 0.2)'; this.style.borderColor='rgba(138, 43, 226, 0.5)'">
391 <span>📁</span>
392 <span id="voice-file-name">Upload Voice Sample (MP3, WAV, M4A)</span>
393 </button>
394 </div>
395 <p style="color: rgba(255, 255, 255, 0.5); font-size: 11px; margin-top: 8px; text-align: center;">
396 Recommended: 10-30 seconds of clear voice audio
397 </p>
398 </div>
399
400 <button type="submit" style="width: 100%; padding: 14px; background: linear-gradient(135deg, #BA55D3 0%, #8A2BE2 100%); color: white; border: none; border-radius: 8px; font-weight: bold; font-size: 16px; cursor: pointer; transition: transform 0.2s; box-shadow: 0 4px 15px rgba(138, 43, 226, 0.3);" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
401 🎼 Generate Music FREE
402 </button>
403 </form>
404
405 <p style="color: rgba(255, 255, 255, 0.5); text-align: center; margin-top: 20px; font-size: 12px;">
406 Powered by Suno AI • 100% FREE • No Limits
407 </p>
408 </div>
409 </div>
410 `;
411
412 document.body.insertAdjacentHTML('beforeend', modalsHTML);
413 }
414
415 // Setup event listeners for authentication
416 function setupAuthEventListeners() {
417 const loginBtn = document.getElementById('login-btn');
418 const signupBtn = document.getElementById('signup-btn');
419 const loginModal = document.getElementById('login-modal');
420 const signupModal = document.getElementById('signup-modal');
421 const closeLogin = document.getElementById('close-login');
422 const closeSignup = document.getElementById('close-signup');
423 const switchToSignup = document.getElementById('switch-to-signup');
424 const switchToLogin = document.getElementById('switch-to-login');
425 const loginForm = document.getElementById('login-form');
426 const signupForm = document.getElementById('signup-form');
427
428 // Open login modal
429 loginBtn.addEventListener('click', () => {
430 loginModal.style.display = 'flex';
431 console.log('Login modal opened');
432 });
433
434 // Open signup modal
435 signupBtn.addEventListener('click', () => {
436 signupModal.style.display = 'flex';
437 console.log('Signup modal opened');
438 });
439
440 // Close login modal
441 closeLogin.addEventListener('click', () => {
442 loginModal.style.display = 'none';
443 });
444
445 // Close signup modal
446 closeSignup.addEventListener('click', () => {
447 signupModal.style.display = 'none';
448 });
449
450 // Switch from login to signup
451 switchToSignup.addEventListener('click', () => {
452 loginModal.style.display = 'none';
453 signupModal.style.display = 'flex';
454 });
455
456 // Switch from signup to login
457 switchToLogin.addEventListener('click', () => {
458 signupModal.style.display = 'none';
459 loginModal.style.display = 'flex';
460 });
461
462 // Close modals when clicking outside
463 loginModal.addEventListener('click', (e) => {
464 if (e.target === loginModal) {
465 loginModal.style.display = 'none';
466 }
467 });
468
469 signupModal.addEventListener('click', (e) => {
470 if (e.target === signupModal) {
471 signupModal.style.display = 'none';
472 }
473 });
474
475 // Handle login form submission
476 loginForm.addEventListener('submit', async (e) => {
477 e.preventDefault();
478 const email = loginForm.querySelector('input[type="email"]').value;
479 console.log('Login attempt with email:', email);
480
481 // Store user session
482 await GM.setValue('userLoggedIn', true);
483 await GM.setValue('userEmail', email);
484
485 // Show success message
486 alert('✅ Login successful! Welcome back to freebeat.ai - 100% FREE!');
487 loginModal.style.display = 'none';
488
489 // Update UI to show logged in state
490 updateUIForLoggedInUser(email);
491 });
492
493 // Handle signup form submission
494 signupForm.addEventListener('submit', async (e) => {
495 e.preventDefault();
496 const name = signupForm.querySelector('input[type="text"]').value;
497 const email = signupForm.querySelector('input[type="email"]').value;
498 console.log('Signup attempt with name:', name, 'email:', email);
499
500 // Store user session
501 await GM.setValue('userLoggedIn', true);
502 await GM.setValue('userName', name);
503 await GM.setValue('userEmail', email);
504
505 // Show success message
506 alert('🎉 Account created successfully! Welcome to freebeat.ai - 100% FREE forever!');
507 signupModal.style.display = 'none';
508
509 // Update UI to show logged in state
510 updateUIForLoggedInUser(email);
511 });
512
513 // Suno AI Music Generator
514 const sunoAiBtn = document.getElementById('suno-ai-btn');
515 const sunoAiModal = document.getElementById('suno-ai-modal');
516 const closeSuno = document.getElementById('close-suno');
517 const sunoForm = document.getElementById('suno-form');
518
519 // Open Suno AI modal
520 sunoAiBtn.addEventListener('click', () => {
521 sunoAiModal.style.display = 'flex';
522 console.log('Suno AI modal opened');
523 });
524
525 // Close Suno AI modal
526 closeSuno.addEventListener('click', () => {
527 sunoAiModal.style.display = 'none';
528 });
529
530 // Close modal when clicking outside
531 sunoAiModal.addEventListener('click', (e) => {
532 if (e.target === sunoAiModal) {
533 sunoAiModal.style.display = 'none';
534 }
535 });
536
537 // Handle Suno AI form submission
538 sunoForm.addEventListener('submit', async (e) => {
539 e.preventDefault();
540 const description = sunoForm.querySelector('textarea').value;
541 const genre = sunoForm.querySelectorAll('select')[0].value;
542 const mood = sunoForm.querySelectorAll('select')[1].value;
543 const duration = sunoForm.querySelectorAll('select')[2].value;
544
545 console.log('Suno AI music generation:', { description, genre, mood, duration });
546
547 // Store music preferences
548 await GM.setValue('lastMusicGeneration', JSON.stringify({ description, genre, mood, duration, timestamp: Date.now() }));
549
550 // Show success message
551 alert(`🎵 AI Music Generated Successfully!\n\nGenre: ${genre}\nMood: ${mood}\nDuration: ${duration} seconds\n\nYour custom music is ready to add to your videos - 100% FREE!`);
552 sunoAiModal.style.display = 'none';
553
554 // Reset form
555 sunoForm.reset();
556 });
557
558 // Voice cloning upload functionality
559 const voiceUploadBtn = document.getElementById('voice-upload-btn');
560 const voiceUploadInput = document.getElementById('voice-upload');
561 const voiceFileName = document.getElementById('voice-file-name');
562
563 // Trigger file input when button is clicked
564 voiceUploadBtn.addEventListener('click', () => {
565 voiceUploadInput.click();
566 });
567
568 // Handle file selection
569 voiceUploadInput.addEventListener('change', async (e) => {
570 const file = e.target.files[0];
571 if (file) {
572 console.log('Voice file selected:', file.name, 'Size:', file.size, 'Type:', file.type);
573
574 // Update button text to show file name
575 voiceFileName.textContent = `✓ ${file.name}`;
576 voiceUploadBtn.style.background = 'rgba(138, 43, 226, 0.3)';
577 voiceUploadBtn.style.borderColor = 'rgba(138, 43, 226, 0.7)';
578
579 // Store voice file info
580 await GM.setValue('voiceCloneFile', JSON.stringify({
581 name: file.name,
582 size: file.size,
583 type: file.type,
584 timestamp: Date.now()
585 }));
586
587 console.log('Voice file uploaded successfully for cloning');
588 }
589 });
590
591 // Avatar upload functionality
592 const avatarUploadBtn = document.getElementById('avatar-upload-btn');
593 const avatarUploadInput = document.getElementById('avatar-upload');
594 const avatarFileName = document.getElementById('avatar-file-name');
595 const avatarPreview = document.getElementById('avatar-preview');
596 const avatarPreviewImg = document.getElementById('avatar-preview-img');
597
598 // Trigger file input when button is clicked
599 avatarUploadBtn.addEventListener('click', () => {
600 avatarUploadInput.click();
601 });
602
603 // Handle avatar file selection
604 avatarUploadInput.addEventListener('change', async (e) => {
605 const file = e.target.files[0];
606 if (file) {
607 console.log('Avatar file selected:', file.name, 'Size:', file.size, 'Type:', file.type);
608
609 // Update button text to show file name
610 avatarFileName.textContent = `✓ ${file.name}`;
611 avatarUploadBtn.style.background = 'rgba(47, 223, 19, 0.3)';
612 avatarUploadBtn.style.borderColor = 'rgba(47, 223, 19, 0.7)';
613
614 // Show image preview
615 const reader = new FileReader();
616 reader.onload = async (event) => {
617 avatarPreviewImg.src = event.target.result;
618 avatarPreview.style.display = 'block';
619
620 // Store avatar image data
621 await GM.setValue('avatarImage', event.target.result);
622 await GM.setValue('avatarImageInfo', JSON.stringify({
623 name: file.name,
624 size: file.size,
625 type: file.type,
626 timestamp: Date.now()
627 }));
628
629 console.log('Avatar image uploaded and stored successfully');
630 };
631 reader.readAsDataURL(file);
632 }
633 });
634 }
635
636 // Update UI when user is logged in
637 function updateUIForLoggedInUser(email) {
638 const loginBtn = document.getElementById('login-btn');
639 const signupBtn = document.getElementById('signup-btn');
640
641 // Replace buttons with user info
642 loginBtn.style.display = 'none';
643 signupBtn.textContent = email.split('@')[0];
644 signupBtn.style.background = 'rgba(47, 223, 19, 0.2)';
645 signupBtn.style.color = '#2FDF13';
646 signupBtn.style.border = '1px solid rgba(47, 223, 19, 0.5)';
647 signupBtn.onclick = null;
648
649 console.log('UI updated for logged in user:', email);
650 }
651
652 // Helper function to create video cards
653 function createVideoCard(title, description) {
654 return `
655 <div style="position: relative; aspect-ratio: 16/11; background: linear-gradient(135deg, #1a1a1a 0%, #0d0d0d 100%); border-radius: 12px; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.1); transition: transform 0.3s, box-shadow 0.3s; cursor: pointer;" onmouseover="this.style.transform='scale(1.05)'; this.style.boxShadow='0 20px 40px rgba(47, 223, 19, 0.2)'" onmouseout="this.style.transform='scale(1)'; this.style.boxShadow='none'">
656 <div style="position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 30px; text-align: center; background: linear-gradient(135deg, rgba(47, 223, 19, 0.1) 0%, rgba(0, 0, 0, 0.8) 100%);">
657 <div style="font-size: 48px; margin-bottom: 15px;">🎬</div>
658 <h3 style="color: white; font-size: 20px; font-weight: bold; margin-bottom: 10px;">${title}</h3>
659 <p style="color: rgba(255, 255, 255, 0.7); font-size: 14px; line-height: 1.4;">${description}</p>
660 <div style="margin-top: 15px; background: #2FDF13; color: #000; padding: 6px 16px; border-radius: 20px; font-size: 11px; font-weight: bold;">FREE</div>
661 </div>
662 </div>
663 `;
664 }
665
666 // Helper function to create feature cards
667 function createFeatureCard(icon, title, description) {
668 return `
669 <div style="background: linear-gradient(135deg, rgba(47, 223, 19, 0.05) 0%, rgba(0, 0, 0, 0.3) 100%); border: 1px solid rgba(47, 223, 19, 0.2); border-radius: 16px; padding: 30px; text-align: center; transition: transform 0.3s, border-color 0.3s;" onmouseover="this.style.transform='translateY(-5px)'; this.style.borderColor='rgba(47, 223, 19, 0.5)'" onmouseout="this.style.transform='translateY(0)'; this.style.borderColor='rgba(47, 223, 19, 0.2)'">
670 <div style="font-size: 48px; margin-bottom: 20px;">${icon}</div>
671 <h3 style="color: white; font-size: 20px; font-weight: bold; margin-bottom: 12px;">${title}</h3>
672 <p style="color: rgba(255, 255, 255, 0.7); font-size: 14px; line-height: 1.6;">${description}</p>
673 </div>
674 `;
675 }
676
677 // Add CSS animations
678 function addStyles() {
679 const style = document.createElement('style');
680 style.textContent = `
681 @keyframes pulse {
682 0%, 100% {
683 opacity: 1;
684 transform: scale(1);
685 }
686 50% {
687 opacity: 0.8;
688 transform: scale(1.05);
689 }
690 }
691
692 * {
693 box-sizing: border-box;
694 }
695
696 body {
697 margin: 0;
698 padding: 0;
699 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
700 }
701 `;
702 document.head.appendChild(style);
703 }
704
705 // Initialize the extension
706 function init() {
707 console.log('Initializing Freebeat No Fees Clone...');
708
709 // Wait for the page to load
710 if (document.readyState === 'loading') {
711 document.addEventListener('DOMContentLoaded', () => {
712 hideOriginalContent();
713 addStyles();
714 createClonedSite();
715 });
716 } else {
717 hideOriginalContent();
718 addStyles();
719 createClonedSite();
720 }
721 }
722
723 // Start the extension
724 init();
725})();