@kaikybrofc/omnizap-system 2.2.10 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -13
- package/app/config/adminIdentity.js +1 -3
- package/app/connection/socketController.js +10 -20
- package/app/controllers/messageController.js +7 -28
- package/app/modules/aiModule/catCommand.js +29 -192
- package/app/modules/broadcastModule/noticeCommand.js +28 -97
- package/app/modules/gameModule/diceCommand.js +6 -32
- package/app/modules/playModule/playCommand.js +57 -258
- package/app/modules/quoteModule/quoteCommand.js +2 -4
- package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1 -13
- package/app/modules/statsModule/noMessageCommand.js +16 -84
- package/app/modules/statsModule/rankingCommand.js +5 -25
- package/app/modules/statsModule/rankingCommon.js +1 -9
- package/app/modules/stickerModule/convertToWebp.js +4 -27
- package/app/modules/stickerModule/stickerCommand.js +13 -24
- package/app/modules/stickerModule/stickerTextCommand.js +13 -25
- package/app/modules/stickerPackModule/autoPackCollectorService.js +16 -7
- package/app/modules/stickerPackModule/domainEventOutboxRepository.js +20 -36
- package/app/modules/stickerPackModule/domainEvents.js +2 -11
- package/app/modules/stickerPackModule/semanticReclassificationEngine.js +13 -50
- package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +2 -15
- package/app/modules/stickerPackModule/semanticThemeClusterService.js +14 -41
- package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +25 -95
- package/app/modules/stickerPackModule/stickerAssetRepository.js +12 -31
- package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +13 -18
- package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +284 -709
- package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +27 -106
- package/app/modules/stickerPackModule/stickerClassificationService.js +46 -77
- package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +13 -53
- package/app/modules/stickerPackModule/stickerDomainEventBus.js +10 -16
- package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +40 -39
- package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +1 -4
- package/app/modules/stickerPackModule/stickerObjectStorageService.js +26 -26
- package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +32 -187
- package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +6 -15
- package/app/modules/stickerPackModule/stickerPackItemRepository.js +6 -32
- package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +12 -36
- package/app/modules/stickerPackModule/stickerPackMessageService.js +12 -40
- package/app/modules/stickerPackModule/stickerPackRepository.js +23 -66
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +9 -21
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +10 -40
- package/app/modules/stickerPackModule/stickerPackService.js +50 -115
- package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +2 -21
- package/app/modules/stickerPackModule/stickerPackUtils.js +13 -3
- package/app/modules/stickerPackModule/stickerStorageService.js +16 -65
- package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +4 -22
- package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +14 -29
- package/app/modules/systemMetricsModule/pingCommand.js +9 -39
- package/app/modules/tiktokModule/tiktokCommand.js +17 -109
- package/app/modules/userModule/userCommand.js +2 -88
- package/app/observability/metrics.js +5 -16
- package/app/services/captchaService.js +1 -6
- package/app/services/dbWriteQueue.js +3 -18
- package/app/services/featureFlagService.js +2 -8
- package/app/services/newsBroadcastService.js +0 -1
- package/app/services/queueUtils.js +2 -4
- package/app/services/whatsappLoginLinkService.js +7 -9
- package/app/store/premiumUserStore.js +1 -2
- package/app/utils/antiLink/antiLinkModule.js +3 -233
- package/app/utils/logger/loggerModule.js +9 -34
- package/app/utils/systemMetrics/systemMetricsModule.js +1 -4
- package/database/index.js +1 -0
- package/database/init.js +1 -8
- package/database/migrations/20260228_0027_web_visit_event.sql +15 -0
- package/docker-compose.yml +27 -27
- package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +26 -0
- package/docs/seo/satellite-page-template.md +2 -0
- package/docs/seo/satellite-pages-phase1.json +40 -177
- package/eslint.config.js +2 -15
- package/index.js +8 -36
- package/ml/clip_classifier/README.md +4 -6
- package/observability/alert-rules.yml +12 -12
- package/observability/grafana/provisioning/dashboards/dashboards.yml +1 -1
- package/package.json +6 -3
- package/public/api-docs/index.html +220 -193
- package/public/bot-whatsapp-para-grupo/index.html +291 -261
- package/public/bot-whatsapp-sem-programar/index.html +291 -261
- package/public/comandos/index.html +421 -406
- package/public/como-automatizar-avisos-no-whatsapp/index.html +291 -261
- package/public/como-criar-comandos-whatsapp/index.html +291 -261
- package/public/como-evitar-spam-no-whatsapp/index.html +291 -261
- package/public/como-moderar-grupo-whatsapp/index.html +291 -261
- package/public/como-organizar-comunidade-whatsapp/index.html +291 -261
- package/public/css/github-project-panel.css +13 -8
- package/public/css/stickers-admin.css +25 -9
- package/public/css/styles.css +23 -16
- package/public/index.html +1106 -993
- package/public/js/apps/apiDocsApp.js +17 -167
- package/public/js/apps/createPackApp.js +69 -332
- package/public/js/apps/homeApp.js +274 -101
- package/public/js/apps/loginApp.js +3 -12
- package/public/js/apps/stickersAdminApp.js +190 -181
- package/public/js/apps/stickersApp.js +482 -1411
- package/public/js/apps/userApp.js +217 -1
- package/public/js/catalog.js +11 -74
- package/public/js/github-panel/components/ErrorState.js +1 -8
- package/public/js/github-panel/components/GithubProjectPanel.js +2 -9
- package/public/js/github-panel/components/SkeletonPanel.js +1 -11
- package/public/js/github-panel/components/StatCard.js +1 -7
- package/public/js/github-panel/vendor/react.js +1 -9
- package/public/js/runtime/react-runtime.js +1 -9
- package/public/licenca/index.html +200 -86
- package/public/login/index.html +315 -325
- package/public/melhor-bot-whatsapp-para-grupos/index.html +291 -261
- package/public/stickers/admin/index.html +14 -19
- package/public/stickers/create/index.html +39 -44
- package/public/stickers/index.html +96 -107
- package/public/termos-de-uso/index.html +369 -122
- package/public/user/index.html +527 -350
- package/scripts/cache-bust.mjs +5 -24
- package/scripts/generate-seo-satellite-pages.mjs +10 -13
- package/scripts/run-prettier-all.mjs +25 -0
- package/scripts/sticker-catalog-loadtest.mjs +13 -11
- package/scripts/sticker-worker-task.mjs +1 -4
- package/scripts/sync-readme-snapshot.mjs +3 -2
- package/server/auth/googleWebAuth/googleWebAuthService.js +614 -0
- package/server/controllers/stickerCatalogController.js +297 -632
- package/server/http/httpServer.js +2 -10
- package/server/routes/stickerCatalog/catalogHandlers/catalogAdminHttp.js +1 -8
- package/server/routes/stickerCatalog/catalogHandlers/catalogAuthHttp.js +1 -9
- package/server/routes/stickerCatalog/catalogHandlers/catalogPublicHttp.js +10 -11
- package/server/routes/stickerCatalog/catalogHandlers/catalogUploadHttp.js +1 -10
- package/server/routes/stickerCatalog/catalogRouter.js +11 -13
|
@@ -1,224 +1,254 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="pt-BR">
|
|
3
|
-
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Melhor bot para WhatsApp em grupos | Como escolher</title>
|
|
7
|
+
<meta name="description" content="Compare criterios para escolher o melhor bot para grupos de WhatsApp. Veja o que avaliar em moderacao, automacao e facilidade de uso." />
|
|
8
|
+
<meta name="keywords" content="melhor bot whatsapp, bot para grupos, comparativo bot whatsapp" />
|
|
9
|
+
<meta name="robots" content="index, follow" />
|
|
10
|
+
<link rel="canonical" href="https://omnizap.shop/melhor-bot-whatsapp-para-grupos/" />
|
|
11
|
+
<link rel="icon" type="image/png" href="/assets/images/brand-icon-192.png" />
|
|
12
|
+
|
|
13
|
+
<meta property="og:type" content="article" />
|
|
14
|
+
<meta property="og:locale" content="pt_BR" />
|
|
15
|
+
<meta property="og:site_name" content="OmniZap System" />
|
|
16
|
+
<meta property="og:title" content="Melhor bot para WhatsApp em grupos | Como escolher" />
|
|
17
|
+
<meta property="og:description" content="Compare criterios para escolher o melhor bot para grupos de WhatsApp. Veja o que avaliar em moderacao, automacao e facilidade de uso." />
|
|
18
|
+
<meta property="og:url" content="https://omnizap.shop/melhor-bot-whatsapp-para-grupos/" />
|
|
19
|
+
<meta property="og:image" content="https://omnizap.shop/assets/images/hero-banner-1280.jpg" />
|
|
20
|
+
|
|
21
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
22
|
+
<meta name="twitter:title" content="Melhor bot para WhatsApp em grupos | Como escolher" />
|
|
23
|
+
<meta name="twitter:description" content="Compare criterios para escolher o melhor bot para grupos de WhatsApp. Veja o que avaliar em moderacao, automacao e facilidade de uso." />
|
|
24
|
+
<meta name="twitter:image" content="https://omnizap.shop/assets/images/hero-banner-1280.jpg" />
|
|
25
|
+
|
|
26
|
+
<script type="application/ld+json">
|
|
27
|
+
{ "@context": "https://schema.org", "@type": "WebPage", "name": "Melhor bot para WhatsApp em grupos | Como escolher", "description": "Compare criterios para escolher o melhor bot para grupos de WhatsApp. Veja o que avaliar em moderacao, automacao e facilidade de uso.", "inLanguage": "pt-BR", "url": "https://omnizap.shop/melhor-bot-whatsapp-para-grupos/", "isPartOf": { "@type": "WebSite", "name": "OmniZap System", "url": "https://omnizap.shop" } }
|
|
28
|
+
</script>
|
|
29
|
+
<script type="application/ld+json">
|
|
30
|
+
{
|
|
31
|
+
"@context": "https://schema.org",
|
|
32
|
+
"@type": "FAQPage",
|
|
33
|
+
"mainEntity": [
|
|
34
|
+
{ "@type": "Question", "name": "Existe melhor bot universal para todo cenario?", "acceptedAnswer": { "@type": "Answer", "text": "Nao. O melhor bot depende do problema principal do seu grupo e da facilidade de adocao." } },
|
|
35
|
+
{ "@type": "Question", "name": "Vale priorizar bot sem configuracao tecnica?", "acceptedAnswer": { "@type": "Answer", "text": "Sim, especialmente para times que precisam de velocidade e previsibilidade." } },
|
|
36
|
+
{ "@type": "Question", "name": "Onde encontro modulo de stickers para engajamento?", "acceptedAnswer": { "@type": "Answer", "text": "No catalogo em /stickers/." } }
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<style>
|
|
42
|
+
:root {
|
|
43
|
+
--bg: #0f172a;
|
|
44
|
+
--bg-2: #111827;
|
|
45
|
+
--line: rgba(255, 255, 255, 0.05);
|
|
46
|
+
--text: #f8fafc;
|
|
47
|
+
--muted: #94a3b8;
|
|
48
|
+
--card: #1e293bd9;
|
|
49
|
+
--accent: #2563eb;
|
|
50
|
+
--accent-2: #7c3aed;
|
|
51
|
+
--cta: #22c55e;
|
|
52
|
+
--cta-hover: #16a34a;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
* {
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
}
|
|
58
|
+
body {
|
|
59
|
+
margin: 0;
|
|
60
|
+
font-family:
|
|
61
|
+
'Manrope',
|
|
62
|
+
system-ui,
|
|
63
|
+
-apple-system,
|
|
64
|
+
sans-serif;
|
|
65
|
+
color: var(--text);
|
|
66
|
+
background: radial-gradient(58rem 22rem at -10% -8%, #2563eb24, transparent 60%), radial-gradient(62rem 26rem at 112% -12%, #7c3aed22, transparent 58%), linear-gradient(165deg, var(--bg), var(--bg-2));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.wrap {
|
|
70
|
+
width: min(980px, 92vw);
|
|
71
|
+
margin: 0 auto;
|
|
72
|
+
padding: 22px 0 42px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.top {
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-wrap: wrap;
|
|
78
|
+
gap: 8px;
|
|
79
|
+
margin-bottom: 14px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.top a {
|
|
83
|
+
color: var(--text);
|
|
84
|
+
text-decoration: none;
|
|
85
|
+
border: 1px solid var(--line);
|
|
86
|
+
border-radius: 10px;
|
|
87
|
+
padding: 8px 11px;
|
|
88
|
+
background: #111827;
|
|
89
|
+
font-size: 14px;
|
|
90
|
+
font-weight: 700;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.hero,
|
|
94
|
+
.card {
|
|
95
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
96
|
+
border-radius: 16px;
|
|
97
|
+
background: var(--card);
|
|
98
|
+
padding: 16px;
|
|
99
|
+
margin-bottom: 12px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.pill {
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
border: 1px solid #45689f;
|
|
105
|
+
border-radius: 999px;
|
|
106
|
+
padding: 5px 10px;
|
|
107
|
+
font-size: 12px;
|
|
108
|
+
font-weight: 800;
|
|
109
|
+
text-transform: uppercase;
|
|
110
|
+
letter-spacing: 0.3px;
|
|
111
|
+
color: #cde4ff;
|
|
112
|
+
background: #16274a96;
|
|
113
|
+
margin-bottom: 10px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
h1,
|
|
117
|
+
h2 {
|
|
118
|
+
margin: 0 0 8px;
|
|
119
|
+
font-family: 'Sora', 'Manrope', sans-serif;
|
|
120
|
+
letter-spacing: -0.02em;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
h1 {
|
|
124
|
+
font-size: clamp(29px, 4vw, 42px);
|
|
125
|
+
line-height: 1.08;
|
|
126
|
+
background: linear-gradient(92deg, #f3f8ff 0%, #60a5fa 45%, #a78bfa 100%);
|
|
127
|
+
-webkit-background-clip: text;
|
|
128
|
+
background-clip: text;
|
|
129
|
+
color: transparent;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
h2 {
|
|
133
|
+
font-size: clamp(22px, 2.8vw, 30px);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
p,
|
|
137
|
+
li {
|
|
138
|
+
margin: 0 0 10px;
|
|
139
|
+
color: var(--muted);
|
|
140
|
+
line-height: 1.65;
|
|
141
|
+
font-size: 16px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
ul {
|
|
145
|
+
margin: 0;
|
|
146
|
+
padding-left: 18px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.cta {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex-wrap: wrap;
|
|
152
|
+
gap: 8px;
|
|
153
|
+
margin-top: 12px;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.btn {
|
|
157
|
+
text-decoration: none;
|
|
158
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
159
|
+
border-radius: 11px;
|
|
160
|
+
padding: 10px 13px;
|
|
161
|
+
color: var(--text);
|
|
162
|
+
background: #111827;
|
|
163
|
+
font-weight: 800;
|
|
164
|
+
font-size: 14px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.btn.primary {
|
|
168
|
+
border-color: transparent;
|
|
169
|
+
color: #0f172a;
|
|
170
|
+
background: var(--cta);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.btn.primary:hover {
|
|
174
|
+
background: var(--cta-hover);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.faq-list {
|
|
178
|
+
display: grid;
|
|
179
|
+
gap: 9px;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.faq-item {
|
|
183
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
184
|
+
border-radius: 12px;
|
|
185
|
+
background: #1e293bb8;
|
|
186
|
+
padding: 0 12px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.faq-item summary {
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
list-style: none;
|
|
192
|
+
font-weight: 800;
|
|
193
|
+
color: #ebf4ff;
|
|
194
|
+
padding: 12px 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.faq-item summary::-webkit-details-marker {
|
|
198
|
+
display: none;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.faq-item p {
|
|
202
|
+
margin: 0;
|
|
203
|
+
padding: 0 0 12px;
|
|
204
|
+
font-size: 15px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.links-grid {
|
|
208
|
+
display: grid;
|
|
209
|
+
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
210
|
+
gap: 8px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.links-grid a {
|
|
214
|
+
text-decoration: none;
|
|
215
|
+
color: #dbecff;
|
|
216
|
+
border: 1px solid #365686;
|
|
217
|
+
border-radius: 10px;
|
|
218
|
+
padding: 9px 10px;
|
|
219
|
+
background: #10203d;
|
|
220
|
+
font-weight: 700;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.meta {
|
|
224
|
+
margin-top: 8px;
|
|
225
|
+
font-size: 13px;
|
|
226
|
+
color: #95b2d8;
|
|
227
|
+
}
|
|
228
|
+
</style>
|
|
229
|
+
</head>
|
|
230
|
+
<body>
|
|
231
|
+
<main class="wrap">
|
|
232
|
+
<nav class="top" aria-label="Navegação interna">
|
|
233
|
+
<a href="/">Início</a>
|
|
234
|
+
<a href="/stickers/">Stickers</a>
|
|
235
|
+
<a href="/api-docs/">API Docs</a>
|
|
236
|
+
<a href="/login/">Adicionar Bot</a>
|
|
237
|
+
</nav>
|
|
238
|
+
|
|
239
|
+
<header class="hero">
|
|
240
|
+
<span class="pill">Comparativo pratico</span>
|
|
241
|
+
<h1>Melhor bot para grupos de WhatsApp: o que realmente importa</h1>
|
|
242
|
+
<p>Escolher bot so por nome de marca costuma gerar retrabalho. O criterio certo e avaliar resultado operacional: menos caos, menos spam e mais organizacao.</p>
|
|
243
|
+
<div class="cta">
|
|
244
|
+
<a class="btn primary" href="/login/">Adicionar ao meu grupo</a>
|
|
245
|
+
<a class="btn" href="/">Conhecer OmniZap</a>
|
|
246
|
+
</div>
|
|
247
|
+
<p class="meta">Página atualizada em 2026-02-28</p>
|
|
248
|
+
</header>
|
|
249
|
+
|
|
250
|
+
<section class="card">
|
|
251
|
+
<h2>Criterios que importam na pratica</h2>
|
|
222
252
|
<p>Facilidade de entrada, moderacao automatica e rotina de avisos sao os pilares mais importantes.</p>
|
|
223
253
|
<p>Se o bot exigir setup tecnico complexo, a adocao no dia a dia tende a cair.</p>
|
|
224
254
|
<ul>
|
|
@@ -226,51 +256,51 @@
|
|
|
226
256
|
<li>Qualidade da moderacao</li>
|
|
227
257
|
<li>Capacidade de escalar com o grupo</li>
|
|
228
258
|
</ul>
|
|
229
|
-
|
|
259
|
+
</section>
|
|
230
260
|
|
|
231
|
-
<section class="card">
|
|
232
|
-
|
|
261
|
+
<section class="card">
|
|
262
|
+
<h2>Sinal de escolha certa</h2>
|
|
233
263
|
<p>A equipe gasta menos tempo apagando incendio e mais tempo gerando valor para membros.</p>
|
|
234
264
|
<p>Quando o grupo fica previsivel, a percepcao de profissionalismo sobe.</p>
|
|
235
|
-
|
|
265
|
+
</section>
|
|
236
266
|
|
|
237
|
-
<section class="card">
|
|
238
|
-
|
|
267
|
+
<section class="card">
|
|
268
|
+
<h2>Como testar rapido</h2>
|
|
239
269
|
<p>Defina um grupo piloto e acompanhe 7 dias de operacao.</p>
|
|
240
270
|
<p>Meça reducao de spam, clareza de comunicacao e tempo economizado por admin.</p>
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
<section class="card">
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
<section class="card">
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
</body>
|
|
276
|
-
</html>
|
|
271
|
+
</section>
|
|
272
|
+
|
|
273
|
+
<section class="card">
|
|
274
|
+
<h2>Perguntas frequentes</h2>
|
|
275
|
+
<div class="faq-list">
|
|
276
|
+
<details class="faq-item">
|
|
277
|
+
<summary>Existe melhor bot universal para todo cenario?</summary>
|
|
278
|
+
<p>Nao. O melhor bot depende do problema principal do seu grupo e da facilidade de adocao.</p>
|
|
279
|
+
</details>
|
|
280
|
+
<details class="faq-item">
|
|
281
|
+
<summary>Vale priorizar bot sem configuracao tecnica?</summary>
|
|
282
|
+
<p>Sim, especialmente para times que precisam de velocidade e previsibilidade.</p>
|
|
283
|
+
</details>
|
|
284
|
+
<details class="faq-item">
|
|
285
|
+
<summary>Onde encontro modulo de stickers para engajamento?</summary>
|
|
286
|
+
<p>No catalogo em /stickers/.</p>
|
|
287
|
+
</details>
|
|
288
|
+
</div>
|
|
289
|
+
</section>
|
|
290
|
+
|
|
291
|
+
<section class="card">
|
|
292
|
+
<h2>Links úteis</h2>
|
|
293
|
+
<div class="links-grid">
|
|
294
|
+
<a href="/">OmniZap Home</a>
|
|
295
|
+
<a href="/stickers/">Catálogo de Stickers</a>
|
|
296
|
+
<a href="/comandos/">Biblioteca de Comandos</a>
|
|
297
|
+
<a href="/api-docs/">Área de Desenvolvedor</a>
|
|
298
|
+
<a href="/login/">Adicionar bot agora</a>
|
|
299
|
+
<a href="/bot-whatsapp-para-grupo/">Bot para grupo</a>
|
|
300
|
+
<a href="/bot-whatsapp-sem-programar/">Bot sem programar</a>
|
|
301
|
+
<a href="/como-moderar-grupo-whatsapp/">Guia de moderacao</a>
|
|
302
|
+
</div>
|
|
303
|
+
</section>
|
|
304
|
+
</main>
|
|
305
|
+
</body>
|
|
306
|
+
</html>
|
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="pt-BR">
|
|
3
|
-
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</head>
|
|
13
|
-
<body>
|
|
14
|
-
|
|
15
|
-
id="stickers-admin-root"
|
|
16
|
-
data-api-base-path="/api/sticker-packs"
|
|
17
|
-
data-web-path="/stickers"
|
|
18
|
-
data-admin-web-path="/stickers/admin"
|
|
19
|
-
></div>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>OmniZap | Painel Admin</title>
|
|
7
|
+
<meta name="robots" content="noindex, nofollow" />
|
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
|
+
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
|
|
11
|
+
<link rel="stylesheet" href="/css/stickers-admin.css?v=20260226-admin-saas-redesign-v1" />
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<div id="stickers-admin-root" data-api-base-path="/api/sticker-packs" data-web-path="/stickers" data-admin-web-path="/stickers/admin"></div>
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
</body>
|
|
16
|
+
<script type="module" src="/js/apps/stickersAdminApp.js?v=20260226-admin-moderators-v1"></script>
|
|
17
|
+
</body>
|
|
23
18
|
</html>
|