ShabaMed commited on
Commit
2fc5fa6
·
verified ·
1 Parent(s): bf13805

i want to use this hugging face space in an agentic sofwtare style.. where user just connect their wordpress API and then the agent start doing all the SEO tasks on autopilot and showing tasks performed and results from google analytics in real time.. users can only interact with chat with the agent to ask for changes or any thing.. the interface should be dark in the style of bolt.new "check screenshot" with space gristek font

Browse files
Files changed (7) hide show
  1. README.md +8 -5
  2. analytics.html +66 -0
  3. components/footer.js +68 -0
  4. components/navbar.js +140 -0
  5. index.html +220 -19
  6. script.js +188 -0
  7. style.css +88 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Seo Automaton Pro
3
- emoji: 👀
4
- colorFrom: green
5
- colorTo: pink
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: SEO Automaton Pro 🤖
3
+ colorFrom: purple
4
+ colorTo: red
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
analytics.html ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Analytics - SEO Automaton Pro</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13
+ <script>
14
+ tailwind.config = {
15
+ darkMode: 'class',
16
+ theme: {
17
+ extend: {
18
+ fontFamily: {
19
+ 'space-grotesk': ['Space Grotesk', 'monospace'],
20
+ },
21
+ colors: {
22
+ primary: {
23
+ 50: '#f0f9ff',
24
+ 100: '#e0f2fe',
25
+ 200: '#bae6fd',
26
+ 300: '#7dd3fc',
27
+ 400: '#38bdf8',
28
+ 500: '#0ea5e9',
29
+ 600: '#0284c7',
30
+ 700: '#0369a1',
31
+ 800: '#075985',
32
+ 900: '#0c4a6e',
33
+ },
34
+ secondary: {
35
+ 50: '#fdf4ff',
36
+ 100: '#fae8ff',
37
+ 200: '#f5d0fe',
38
+ 300: '#f0abfc',
39
+ 400: '#e879f9',
40
+ 500: '#d946ef',
41
+ 600: '#c026d3',
42
+ 700: '#a21caf',
43
+ 800: '#86198f',
44
+ 900: '#701a75',
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ </script>
51
+ </head>
52
+ <body class="bg-gray-900 text-white font-space-grotesk min-h-screen flex flex-col">
53
+ <custom-navbar></custom-navbar>
54
+
55
+ <main class="flex-1 container mx-auto px-4 py-8">
56
+ <div class="flex items-center gap-3 mb-8">
57
+ <i data-feather="bar-chart-2" class="text-secondary-400"></i>
58
+ <h1 class="text-3xl md:text-4xl font-bold">Analytics Dashboard</h1>
59
+ </div>
60
+
61
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
62
+ <!-- Traffic Overview -->
63
+ <div class="bg-gray-800 rounded-2xl p-6 border border-gray-700">
64
+ <h2 class="text-2xl font-semibold mb-{"ok":false,"message":"Request timeout: The AI model took too long to respond. Please try again with a simpler prompt or try a different model."}
65
+ </body>
66
+ </html>
components/footer.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background: rgba(15, 23, 42, 0.8);
8
+ backdrop-filter: blur(10px);
9
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
10
+ color: #94a3b8;
11
+ padding: 2rem;
12
+ text-align: center;
13
+ margin-top: auto;
14
+ }
15
+
16
+ .footer-content {
17
+ max-width: 1200px;
18
+ margin: 0 auto;
19
+ }
20
+
21
+ .footer-links {
22
+ display: flex;
23
+ justify-content: center;
24
+ gap: 2rem;
25
+ margin-bottom: 1rem;
26
+ }
27
+
28
+ .footer-link {
29
+ color: #94a3b8;
30
+ text-decoration: none;
31
+ transition: color 0.3s ease;
32
+ }
33
+
34
+ .footer-link:hover {
35
+ color: white;
36
+ }
37
+
38
+ .copyright {
39
+ font-size: 0.875rem;
40
+ }
41
+
42
+ @media (max-width: 768px) {
43
+ footer {
44
+ padding: 1.5rem 1rem;
45
+ }
46
+
47
+ .footer-links {
48
+ gap: 1rem;
49
+ flex-wrap: wrap;
50
+ }
51
+ }
52
+ </style>
53
+ <footer>
54
+ <div class="footer-content">
55
+ <div class="footer-links">
56
+ <a href="/privacy.html" class="footer-link">Privacy</a>
57
+ <a href="/terms.html" class="footer-link">Terms</a>
58
+ <a href="/support.html" class="footer-link">Support</a>
59
+ <a href="/docs.html" class="footer-link">Documentation</a>
60
+ </div>
61
+ <p class="copyright">&copy; 2024 SEO Automaton Pro. All rights reserved.</p>
62
+ </div>
63
+ </footer>
64
+ `;
65
+ }
66
+ }
67
+
68
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
7
+
8
+ nav {
9
+ background: rgba(15, 23, 42, 0.8);
10
+ backdrop-filter: blur(10px);
11
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
12
+ padding: 1rem 2rem;
13
+ display: flex;
14
+ justify-content: space-between;
15
+ align-items: center;
16
+ position: sticky;
17
+ top: 0;
18
+ z-index: 1000;
19
+ }
20
+
21
+ .nav-container {
22
+ display: flex;
23
+ justify-content: space-between;
24
+ align-items: center;
25
+ width: 100%;
26
+ max-width: 1200px;
27
+ margin: 0 auto;
28
+ }
29
+
30
+ .logo {
31
+ background: linear-gradient(135deg, #38bdf8 0%, #e879f9 100%);
32
+ background-clip: text;
33
+ -webkit-background-clip: text;
34
+ -webkit-text-fill-color: transparent;
35
+ font-weight: 700;
36
+ font-size: 1.5rem;
37
+ }
38
+
39
+ .nav-links {
40
+ display: flex;
41
+ gap: 2rem;
42
+ list-style: none;
43
+ margin: 0;
44
+ padding: 0;
45
+ }
46
+
47
+ .nav-link {
48
+ color: #94a3b8;
49
+ text-decoration: none;
50
+ font-weight: 500;
51
+ transition: all 0.3s ease;
52
+ position: relative;
53
+ }
54
+
55
+ .nav-link:hover {
56
+ color: white;
57
+ }
58
+
59
+ .nav-link.active {
60
+ color: #38bdf8;
61
+ }
62
+
63
+ .nav-link::after {
64
+ content: '';
65
+ position: absolute;
66
+ bottom: -5px;
67
+ left: 0;
68
+ width: 0;
69
+ height: 2px;
70
+ background: linear-gradient(135deg, #38bdf8 0%, #e879f9 100%);
71
+ transition: width 0.3s ease;
72
+ }
73
+
74
+ .nav-link:hover::after,
75
+ .nav-link.active::after {
76
+ width: 100%;
77
+ }
78
+
79
+ .status-indicator {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 0.5rem;
83
+ padding: 0.5rem 1rem;
84
+ border-radius: 0.75rem;
85
+ font-size: 0.875rem;
86
+ }
87
+
88
+ .status-dot {
89
+ width: 8px;
90
+ height: 8px;
91
+ border-radius: 50%;
92
+ background: #ef4444;
93
+ }
94
+
95
+ .status-dot.connected {
96
+ background: #10b981;
97
+ animation: pulse 2s infinite;
98
+ }
99
+
100
+ @keyframes pulse {
101
+ 0%, 100% { opacity: 1; }
102
+ 50% { opacity: 0.7; }
103
+ }
104
+
105
+ @media (max-width: 768px) {
106
+ nav {
107
+ padding: 1rem;
108
+ }
109
+
110
+ .nav-links {
111
+ gap: 1rem;
112
+ }
113
+
114
+ .logo {
115
+ font-size: 1.25rem;
116
+ }
117
+ }
118
+ </style>
119
+ <nav>
120
+ <div class="nav-container">
121
+ <a href="/" class="logo">SEO Automaton Pro</a>
122
+
123
+ <ul class="nav-links">
124
+ <li><a href="/" class="nav-link active">Dashboard</a></li>
125
+ <li><a href="/analytics.html" class="nav-link">Analytics</a></li>
126
+ <li><a href="/tasks.html" class="nav-link">Tasks</a></li>
127
+ <li><a href="/settings.html" class="nav-link">Settings</a></li>
128
+ </ul>
129
+
130
+ <div class="status-indicator">
131
+ <div class="status-dot"></div>
132
+ <span>Disconnected</span>
133
+ </div>
134
+ </div>
135
+ </nav>
136
+ `;
137
+ }
138
+ }
139
+
140
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,220 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>SEO Automaton Pro - AI-Powered SEO Automation</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13
+ <script>
14
+ tailwind.config = {
15
+ darkMode: 'class',
16
+ theme: {
17
+ extend: {
18
+ fontFamily: {
19
+ 'space-grotesk': ['Space Grotesk', 'monospace'],
20
+ },
21
+ colors: {
22
+ primary: {
23
+ 50: '#f0f9ff',
24
+ 100: '#e0f2fe',
25
+ 200: '#bae6fd',
26
+ 300: '#7dd3fc',
27
+ 400: '#38bdf8',
28
+ 500: '#0ea5e9',
29
+ 600: '#0284c7',
30
+ 700: '#0369a1',
31
+ 800: '#075985',
32
+ 900: '#0c4a6e',
33
+ },
34
+ secondary: {
35
+ 50: '#fdf4ff',
36
+ 100: '#fae8ff',
37
+ 200: '#f5d0fe',
38
+ 300: '#f0abfc',
39
+ 400: '#e879f9',
40
+ 500: '#d946ef',
41
+ 600: '#c026d3',
42
+ 700: '#a21caf',
43
+ 800: '#86198f',
44
+ 900: '#701a75',
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ </script>
51
+ </head>
52
+ <body class="bg-gray-900 text-white font-space-grotesk min-h-screen flex flex-col">
53
+ <custom-navbar></custom-navbar>
54
+
55
+ <main class="flex-1 container mx-auto px-4 py-8">
56
+ <!-- Header Section -->
57
+ <div class="text-center mb-12">
58
+ <h1 class="text-4xl md:text-6xl font-bold bg-gradient-to-r from-primary-400 to-secondary-500 bg-clip-text text-transparent mb-4">
59
+ SEO Automaton Pro
60
+ </h1>
61
+ <p class="text-xl text-gray-400 max-w-2xl mx-auto">
62
+ Your AI-powered SEO assistant that automates WordPress optimization and provides real-time analytics insights.
63
+ </p>
64
+ </div>
65
+
66
+ <!-- Main Dashboard Grid -->
67
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-8">
68
+ <!-- Connection Panel -->
69
+ <div class="lg:col-span-1 bg-gray-800 rounded-2xl p-6 border border-gray-700">
70
+ <div class="flex items-center gap-3 mb-6">
71
+ <i data-feather="link" class="text-primary-400"></i>
72
+ <h2 class="text-2xl font-semibold">WordPress Connection</h2>
73
+ </div>
74
+
75
+ <div class="space-y-4">
76
+ <div>
77
+ <label class="block text-sm font-medium text-gray-400 mb-2">WordPress URL</label>
78
+ <input type="text" placeholder="https://your-site.com"
79
+ class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-primary-500">
80
+ </div>
81
+
82
+ <div>
83
+ <label class="block text-sm font-medium text-gray-400 mb-2">API Key</label>
84
+ <input type="password" placeholder="Enter your WordPress API key"
85
+ class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-primary-500">
86
+ </div>
87
+
88
+ <button class="w-full bg-gradient-to-r from-primary-500 to-secondary-500 hover:from-primary-600 hover:to-secondary-600 text-white font-semibold py-3 px-6 rounded-lg transition-all duration-200 transform hover:scale-105">
89
+ <i data-feather="play" class="inline w-4 h-4 mr-2"></i>
90
+ Start SEO Automation
91
+ </button>
92
+ </div>
93
+ </div>
94
+
95
+ <!-- Analytics Panel -->
96
+ <div class="lg:col-span-2 bg-gray-800 rounded-2xl p-6 border border-gray-700">
97
+ <div class="flex items-center gap-3 mb-6">
98
+ <i data-feather="bar-chart-2" class="text-secondary-400"></i>
99
+ <h2 class="text-2xl font-semibold">Real-time Analytics</h2>
100
+ </div>
101
+
102
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
103
+ <div class="bg-gray-700 rounded-xl p-4 text-center">
104
+ <div class="text-2xl font-bold text-primary-400">1.2K</div>
105
+ <div class="text-sm text-gray-400">Visitors Today</div>
106
+ </div>
107
+ <div class="bg-gray-700 rounded-xl p-4 text-center">
108
+ <div class="text-2xl font-bold text-secondary-400">45%</div>
109
+ <div class="text-sm text-gray-400">Bounce Rate</div>
110
+ </div>
111
+ <div class="bg-gray-700 rounded-xl p-4 text-center">
112
+ <div class="text-2xl font-bold text-green-400">3.2</div>
113
+ <div class="text-sm text-gray-400">Avg. Session</div>
114
+ </div>
115
+ <div class="bg-gray-700 rounded-xl p-4 text-center">
116
+ <div class="text-2xl font-bold text-yellow-400">87</div>
117
+ <div class="text-sm text-gray-400">SEO Score</div>
118
+ </div>
119
+ </div>
120
+
121
+ <div class="bg-gray-700 rounded-xl p-4">
122
+ <div class="h-48 flex items-center justify-center text-gray-500">
123
+ Analytics Chart Visualization
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+
129
+ <!-- Tasks & Chat Section -->
130
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
131
+ <!-- Tasks Panel -->
132
+ <div class="bg-gray-800 rounded-2xl p-6 border border-gray-700">
133
+ <div class="flex items-center gap-3 mb-6">
134
+ <i data-feather="check-square" class="text-green-400"></i>
135
+ <h2 class="text-2xl font-semibold">Recent Tasks</h2>
136
+ </div>
137
+
138
+ <div class="space-y-4">
139
+ <div class="bg-gray-700 rounded-xl p-4 border-l-4 border-primary-500">
140
+ <div class="flex justify-between items-center">
141
+ <span class="font-medium">Optimized meta tags for homepage</span>
142
+ <span class="text-xs text-green-400 bg-green-400/10 px-2 py-1 rounded-full">Completed</span>
143
+ </div>
144
+ <p class="text-sm text-gray-400 mt-2">Improved title and description for better CTR</p>
145
+ </div>
146
+
147
+ <div class="bg-gray-700 rounded-xl p-4 border-l-4 border-yellow-500">
148
+ <div class="flex justify-between items-center">
149
+ <span class="font-medium">Fixed broken internal links</span>
150
+ <span class="text-xs text-yellow-400 bg-yellow-400/10 px-2 py-1 rounded-full">In Progress</span>
151
+ </div>
152
+ <p class="text-sm text-gray-400 mt-2">Identified and fixed 12 broken links</p>
153
+ </div>
154
+
155
+ <div class="bg-gray-700 rounded-xl p-4 border-l-4 border-blue-500">
156
+ <div class="flex justify-between items-center">
157
+ <span class="font-medium">Image optimization batch</span>
158
+ <span class="text-xs text-blue-400 bg-blue-400/10 px-2 py-1 rounded-full">Queued</span>
159
+ </div>
160
+ <p class="text-sm text-gray-400 mt-2">Compressing 45 images for better load times</p>
161
+ </div>
162
+ </div>
163
+ </div>
164
+
165
+ <!-- Chat Panel -->
166
+ <div class="bg-gray-800 rounded-2xl p-6 border border-gray-700 flex flex-col">
167
+ <div class="flex items-center gap-3 mb-6">
168
+ <i data-feather="message-square" class="text-primary-400"></i>
169
+ <h2 class="text-2xl font-semibold">Chat with Agent</h2>
170
+ </div>
171
+
172
+ <div class="flex-1 bg-gray-700 rounded-xl p-4 mb-4 overflow-y-auto max-h-64">
173
+ <div class="space-y-4">
174
+ <div class="flex justify-start">
175
+ <div class="bg-gray-600 rounded-2xl rounded-tl-none px-4 py-3 max-w-xs">
176
+ <p class="text-sm">Hello! I'm your SEO assistant. I've connected to your WordPress site and started optimizing. How can I help you today?</p>
177
+ </div>
178
+ </div>
179
+
180
+ <div class="flex justify-end">
181
+ <div class="bg-primary-500 rounded-2xl rounded-tr-none px-4 py-3 max-w-xs">
182
+ <p class="text-sm">Can you run a full site audit and show me the results?</p>
183
+ </div>
184
+ </div>
185
+
186
+ <div class="flex justify-start">
187
+ <div class="bg-gray-600 rounded-2xl rounded-tl-none px-4 py-3 max-w-xs">
188
+ <p class="text-sm">Sure! I'll start a comprehensive SEO audit. This will analyze your site structure, content quality, technical SEO, and performance metrics.</p>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <div class="flex gap-2">
195
+ <input type="text" placeholder="Ask your SEO agent..."
196
+ class="flex-1 bg-gray-700 border border-gray-600 rounded-lg px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-primary-500">
197
+ <button class="bg-primary-500 hover:bg-primary-600 text-white p-3 rounded-lg transition-colors">
198
+ <i data-feather="send" class="w-4 h-4"></i>
199
+ </button>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </main>
204
+
205
+ <custom-footer></custom-footer>
206
+
207
+ <!-- Component Scripts -->
208
+ <script src="components/navbar.js"></script>
209
+ <script src="components/footer.js"></script>
210
+
211
+ <!-- Main Script -->
212
+ <script src="script.js"></script>
213
+
214
+ <!-- Initialize Feather Icons -->
215
+ <script>
216
+ feather.replace();
217
+ </script>
218
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
219
+ </body>
220
+ </html>
script.js ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Shared JavaScript across all pages
2
+
3
+ class SEOAutomaton {
4
+ constructor() {
5
+ this.isConnected = false;
6
+ this.tasks = [];
7
+ this.init();
8
+ }
9
+
10
+ init() {
11
+ console.log('SEO Automaton Pro initialized');
12
+ this.setupEventListeners();
13
+ this.simulateRealTimeUpdates();
14
+ }
15
+
16
+ setupEventListeners() {
17
+ // WordPress connection handler
18
+ const connectBtn = document.querySelector('button[class*="bg-gradient"]');
19
+ if (connectBtn) {
20
+ connectBtn.addEventListener('click', () => this.handleConnection());
21
+ }
22
+
23
+ // Chat functionality
24
+ const chatInput = document.querySelector('input[placeholder*="Ask your SEO agent"]');
25
+ const sendBtn = document.querySelector('button[class*="bg-primary"]');
26
+
27
+ if (sendBtn && chatInput) {
28
+ sendBtn.addEventListener('click', () => this.handleChatMessage(chatInput.value));
29
+ chatInput.addEventListener('keypress', (e) => {
30
+ if (e.key === 'Enter') {
31
+ this.handleChatMessage(chatInput.value);
32
+ chatInput.value = '';
33
+ }
34
+ });
35
+ }
36
+ }
37
+
38
+ handleConnection() {
39
+ this.isConnected = true;
40
+ this.showNotification('Successfully connected to WordPress! Starting SEO automation...', 'success');
41
+
42
+ // Simulate starting automation tasks
43
+ setTimeout(() => {
44
+ this.addTask('Site audit initiated', 'Analyzing site structure and content', 'in-progress');
45
+ }, 1000);
46
+ }
47
+
48
+ handleChatMessage(message) {
49
+ if (!message.trim()) return;
50
+
51
+ this.addChatMessage(message, 'user');
52
+
53
+ // Simulate AI response
54
+ setTimeout(() => {
55
+ const response = this.generateAIResponse(message);
56
+ this.addChatMessage(response, 'agent');
57
+ }, 1000);
58
+ }
59
+
60
+ addChatMessage(message, sender) {
61
+ const chatContainer = document.querySelector('.bg-gray-700.rounded-xl.p-4');
62
+ if (!chatContainer) return;
63
+
64
+ const messageDiv = document.createElement('div');
65
+ messageDiv.className = `flex justify-${sender === 'user' ? 'end' : 'start'} mb-4`;
66
+
67
+ const bubble = document.createElement('div');
68
+ bubble.className = sender === 'user'
69
+ ? 'bg-primary-500 rounded-2xl rounded-tr-none px-4 py-3 max-w-xs';
70
+ bubble.innerHTML = `<p class="text-sm">${message}</p>`;
71
+
72
+ messageDiv.appendChild(bubble);
73
+ chatContainer.appendChild(messageDiv);
74
+ chatContainer.scrollTop = chatContainer.scrollHeight;
75
+ }
76
+
77
+ generateAIResponse(message) {
78
+ const responses = {
79
+ 'audit': 'Starting comprehensive SEO audit. This will analyze your site structure, content quality, technical SEO factors, and performance metrics. Results will be available in approximately 2 minutes.',
80
+ 'performance': 'I\'ll run performance optimization tasks including image compression, CSS/JS minification, and caching improvements.',
81
+ 'keywords': 'Analyzing your current keyword strategy and identifying new opportunities based on search volume and competition.',
82
+ 'default': 'I understand your request. Let me process that and provide you with the best optimization strategy for your WordPress site.'
83
+ };
84
+
85
+ const lowerMessage = message.toLowerCase();
86
+
87
+ if (lowerMessage.includes('audit')) return responses.audit;
88
+ if (lowerMessage.includes('performance') || lowerMessage.includes('speed')) return responses.performance;
89
+ if (lowerMessage.includes('keyword')) return responses.keywords;
90
+
91
+ return responses.default;
92
+ }
93
+
94
+ addTask(title, description, status = 'queued') {
95
+ const tasksContainer = document.querySelector('.space-y-4');
96
+ if (!tasksContainer) return;
97
+
98
+ const taskDiv = document.createElement('div');
99
+ const statusColors = {
100
+ 'completed': 'green',
101
+ 'in-progress': 'yellow',
102
+ 'queued': 'blue'
103
+ };
104
+
105
+ taskDiv.className = `bg-gray-700 rounded-xl p-4 border-l-4 border-${statusColors[status]}-500';
106
+ taskDiv.innerHTML = `
107
+ <div class="flex justify-between items-center">
108
+ <span class="font-medium">${title}</span>
109
+ <span class="text-xs text-${statusColors[status]}-400 bg-${statusColors[status]}-400/10 px-2 py-1 rounded-full">${status.replace('-', ' ')}</span>
110
+ </div>
111
+ <p class="text-sm text-gray-400 mt-2">${description}</p>
112
+ `;
113
+
114
+ tasksContainer.appendChild(taskDiv);
115
+ this.tasks.push({ title, description, status });
116
+ }
117
+
118
+ simulateRealTimeUpdates() {
119
+ // Simulate real-time analytics updates
120
+ setInterval(() => {
121
+ if (!this.isConnected) return;
122
+
123
+ const visitorsElement = document.querySelector('.text-2xl.font-bold.text-primary-400');
124
+ if (visitorsElement) {
125
+ const current = parseInt(visitorsElement.textContent);
126
+ const change = Math.floor(Math.random() * 10) - 2;
127
+ visitorsElement.textContent = Math.max(800, current + change);
128
+ }
129
+ }, 5000);
130
+ }
131
+
132
+ showNotification(message, type = 'info') {
133
+ // Create notification element
134
+ const notification = document.createElement('div');
135
+ const bgColor = type === 'success' ? 'bg-green-500' : 'bg-blue-500';
136
+ notification.className = `fixed top-4 right-4 ${bgColor} text-white px-6 py-3 rounded-lg shadow-lg transform translate-x-full transition-transform duration-300 z-50';
137
+ notification.textContent = message;
138
+
139
+ document.body.appendChild(notification);
140
+
141
+ // Animate in
142
+ setTimeout(() => {
143
+ notification.classList.remove('translate-x-full');
144
+ }, 100);
145
+
146
+ // Remove after 3 seconds
147
+ setTimeout(() => {
148
+ notification.classList.add('translate-x-full');
149
+ setTimeout(() => {
150
+ if (notification.parentNode) {
151
+ notification.parentNode.removeChild(notification);
152
+ }
153
+ }, 300);
154
+ }, 3000);
155
+ }
156
+ }
157
+
158
+ // Initialize when DOM is loaded
159
+ document.addEventListener('DOMContentLoaded', () => {
160
+ window.seoAutomaton = new SEOAutomaton();
161
+ });
162
+
163
+ // Utility functions
164
+ const utils = {
165
+ formatNumber: (num) => {
166
+ if (num >= 1000000) {
167
+ return (num / 1000000).toFixed(1) + 'M';
168
+ }
169
+ if (num >= 1000) {
170
+ return (num / 1000).toFixed(1) + 'K';
171
+ }
172
+ return num.toString();
173
+ },
174
+
175
+ debounce: (func, wait) => {
176
+ let timeout;
177
+ return function executedFunction(...args) {
178
+ const later = () => {
179
+ clearTimeout(timeout);
180
+ func(...args);
181
+ };
182
+ clearTimeout(timeout);
183
+ timeout = setTimeout(later, wait);
184
+ };
185
+ }
186
+ };
187
+
188
+ console.log('SEO Automaton Pro - AI-powered SEO automation platform loaded');
style.css CHANGED
@@ -1,28 +1,98 @@
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Shared styles across all pages */
2
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
3
+
4
+ * {
5
+ box-sizing: border-box;
6
+ }
7
+
8
  body {
9
+ font-family: 'Space Grotesk', monospace;
10
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
11
+ overflow-x: hidden;
12
+ }
13
+
14
+ /* Custom scrollbar */
15
+ ::-webkit-scrollbar {
16
+ width: 6px;
17
+ }
18
+
19
+ ::-webkit-scrollbar-track {
20
+ background: #1e293b;
21
+ }
22
+
23
+ ::-webkit-scrollbar-thumb {
24
+ background: #475569;
25
+ border-radius: 3px;
26
+ }
27
+
28
+ ::-webkit-scrollbar-thumb:hover {
29
+ background: #64748b;
30
+ }
31
+
32
+ /* Glass morphism effect */
33
+ .glass {
34
+ background: rgba(255, 255, 255, 0.05);
35
+ backdrop-filter: blur(10px);
36
+ border: 1px solid rgba(255, 255, 255, 0.1);
37
  }
38
 
39
+ /* Gradient text animation */
40
+ .gradient-text {
41
+ background: linear-gradient(135deg, #38bdf8 0%, #e879f9 100%);
42
+ background-size: 200% 200%;
43
+ animation: gradient-shift 3s ease infinite;
44
  }
45
 
46
+ @keyframes gradient-shift {
47
+ 0%, 100% { background-position: 0% 50%; }
48
+ 50% { background-position: 100% 50%; }
 
 
49
  }
50
 
51
+ /* Pulse animation for active elements */
52
+ .pulse-glow {
53
+ animation: pulse-glow 2s infinite;
 
 
 
54
  }
55
 
56
+ @keyframes pulse-glow {
57
+ 0%, 100% { box-shadow: 0 0 5px rgba(56, 189, 248, 0.5); }
58
+ 50% { box-shadow: 0 0 20px rgba(56, 189, 248, 0.8); }
59
  }
60
+
61
+ /* Smooth transitions */
62
+ .transition-all {
63
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
64
+ }
65
+
66
+ /* Custom button hover effects */
67
+ .btn-hover {
68
+ transition: all 0.3s ease;
69
+ }
70
+
71
+ .btn-hover:hover {
72
+ transform: translateY(-2px);
73
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
74
+ }
75
+
76
+ /* Loading animation */
77
+ .loading-dots {
78
+ display: inline-block;
79
+ }
80
+
81
+ .loading-dots::after {
82
+ content: '';
83
+ animation: dots 1.5s steps(5, end) infinite;
84
+ }
85
+
86
+ @keyframes dots {
87
+ 0%, 20% { content: '.'; }
88
+ 40% { content: '..'; }
89
+ 60% { content: '...'; }
90
+ 80%, 100% { content: ''; }
91
+ }
92
+
93
+ /* Responsive text sizes */
94
+ @media (max-width: 768px) {
95
+ .responsive-text {
96
+ font-size: 0.875rem;
97
+ }
98
+ }