@jjlmoya/utils-social 1.2.0 → 1.4.0
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/package.json +59 -58
- package/src/category/i18n/de.ts +23 -0
- package/src/category/i18n/id.ts +23 -0
- package/src/category/i18n/it.ts +23 -0
- package/src/category/i18n/ja.ts +23 -0
- package/src/category/i18n/ko.ts +23 -0
- package/src/category/i18n/nl.ts +23 -0
- package/src/category/i18n/pl.ts +23 -0
- package/src/category/i18n/pt.ts +23 -0
- package/src/category/i18n/ru.ts +23 -0
- package/src/category/i18n/sv.ts +23 -0
- package/src/category/i18n/tr.ts +23 -0
- package/src/category/i18n/zh.ts +23 -0
- package/src/category/index.ts +12 -0
- package/src/index.ts +8 -0
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/redditFormatter/i18n/de.ts +193 -0
- package/src/tool/redditFormatter/i18n/en.ts +1 -1
- package/src/tool/redditFormatter/i18n/es.ts +1 -1
- package/src/tool/redditFormatter/i18n/fr.ts +1 -1
- package/src/tool/redditFormatter/i18n/id.ts +193 -0
- package/src/tool/redditFormatter/i18n/it.ts +193 -0
- package/src/tool/redditFormatter/i18n/ja.ts +193 -0
- package/src/tool/redditFormatter/i18n/ko.ts +193 -0
- package/src/tool/redditFormatter/i18n/nl.ts +193 -0
- package/src/tool/redditFormatter/i18n/pl.ts +193 -0
- package/src/tool/redditFormatter/i18n/pt.ts +193 -0
- package/src/tool/redditFormatter/i18n/ru.ts +193 -0
- package/src/tool/redditFormatter/i18n/sv.ts +193 -0
- package/src/tool/redditFormatter/i18n/tr.ts +193 -0
- package/src/tool/redditFormatter/i18n/zh.ts +193 -0
- package/src/tool/redditFormatter/index.ts +15 -7
- package/src/tool/safeZones/i18n/de.ts +244 -0
- package/src/tool/safeZones/i18n/id.ts +244 -0
- package/src/tool/safeZones/i18n/it.ts +244 -0
- package/src/tool/safeZones/i18n/ja.ts +244 -0
- package/src/tool/safeZones/i18n/ko.ts +244 -0
- package/src/tool/safeZones/i18n/nl.ts +244 -0
- package/src/tool/safeZones/i18n/pl.ts +244 -0
- package/src/tool/safeZones/i18n/pt.ts +244 -0
- package/src/tool/safeZones/i18n/ru.ts +244 -0
- package/src/tool/safeZones/i18n/sv.ts +244 -0
- package/src/tool/safeZones/i18n/tr.ts +244 -0
- package/src/tool/safeZones/i18n/zh.ts +244 -0
- package/src/tool/safeZones/index.ts +17 -9
- package/src/tool/socialImageResizer/i18n/de.ts +211 -0
- package/src/tool/socialImageResizer/i18n/en.ts +1 -1
- package/src/tool/socialImageResizer/i18n/id.ts +211 -0
- package/src/tool/socialImageResizer/i18n/it.ts +211 -0
- package/src/tool/socialImageResizer/i18n/ja.ts +211 -0
- package/src/tool/socialImageResizer/i18n/ko.ts +211 -0
- package/src/tool/socialImageResizer/i18n/nl.ts +211 -0
- package/src/tool/socialImageResizer/i18n/pl.ts +211 -0
- package/src/tool/socialImageResizer/i18n/pt.ts +211 -0
- package/src/tool/socialImageResizer/i18n/ru.ts +211 -0
- package/src/tool/socialImageResizer/i18n/sv.ts +211 -0
- package/src/tool/socialImageResizer/i18n/tr.ts +211 -0
- package/src/tool/socialImageResizer/i18n/zh.ts +211 -0
- package/src/tool/socialImageResizer/index.ts +16 -8
- package/src/tool/socialValueCalculator/i18n/de.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/es.ts +1 -1
- package/src/tool/socialValueCalculator/i18n/fr.ts +1 -1
- package/src/tool/socialValueCalculator/i18n/id.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/it.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/ja.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/ko.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/nl.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/pl.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/pt.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/ru.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/sv.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/tr.ts +306 -0
- package/src/tool/socialValueCalculator/i18n/zh.ts +306 -0
- package/src/tool/socialValueCalculator/index.ts +17 -9
- package/src/tool/tinderPhotoOptimizer/i18n/de.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/id.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/it.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/ja.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/ko.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/nl.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/pl.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/pt.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/ru.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/sv.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/tr.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/i18n/zh.ts +272 -0
- package/src/tool/tinderPhotoOptimizer/index.ts +17 -9
- package/src/tool/youtubeThumbnail/i18n/de.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/id.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/it.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/ja.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/ko.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/nl.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/pl.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/pt.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/ru.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/sv.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/tr.ts +207 -0
- package/src/tool/youtubeThumbnail/i18n/zh.ts +207 -0
- package/src/tool/youtubeThumbnail/index.ts +17 -9
- package/src/tool/youtubeThumbnailPreviewer/i18n/de.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/en.ts +1 -1
- package/src/tool/youtubeThumbnailPreviewer/i18n/es.ts +1 -1
- package/src/tool/youtubeThumbnailPreviewer/i18n/fr.ts +2 -2
- package/src/tool/youtubeThumbnailPreviewer/i18n/id.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/it.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/ja.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/ko.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/nl.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/pl.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/pt.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/ru.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/sv.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/tr.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/zh.ts +321 -0
- package/src/tool/youtubeThumbnailPreviewer/index.ts +24 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SafeZonesUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'strefy-bezpieczne-social';
|
|
6
|
+
const title = 'Social Safe Zones: Symulator wideo dla TikTok, Reels i Shorts';
|
|
7
|
+
const description =
|
|
8
|
+
'Podglądaj swoje zdjęcia i filmy z prawdziwym interfejsem mediów społecznościowych. Upewnij się, że Twoje treści są zawsze widoczne i unikaj przypadkowego przycięcia.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: "Czym są „strefy bezpieczne” (Safe Zones) w mediach społecznościowych?",
|
|
13
|
+
answer:
|
|
14
|
+
"Są to obszary ekranu, w których treść jest widoczna bez ryzyka zasłonięcia przez elementy interfejsu, takie jak nazwa użytkownika, opis, przyciski interakcji (polubienie, udostępnienie) lub automatyczne przycięcia stosowane przez niektóre urządzenia.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Dlaczego mój film na TikTok wygląda na przycięty od góry i od dołu?',
|
|
18
|
+
answer:
|
|
19
|
+
"TikTok używa proporcji 16:9. Jeśli Twój film jest szerszy, aplikacja powiększy go, aby wypełnić ekran, co spowoduje przycięcie. Ponadto dolny interfejs zasłania część filmu, więc ważne elementy powinny być wyśrodkowane.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Czy strefa bezpieczna jest taka sama dla Instagram Reels i YouTube Shorts?',
|
|
23
|
+
answer:
|
|
24
|
+
"Są bardzo podobne, ale nie identyczne. Przyciski YouTube Shorts są umieszczone inaczej niż w Reels. Nasze narzędzie pozwala przełączać się między platformami, aby zweryfikować projekt na każdej z nich.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Co się stanie, jeśli umieszczę tekst w prawym dolnym rogu?',
|
|
28
|
+
answer:
|
|
29
|
+
"Prawdopodobnie będzie on niewidoczny lub bardzo trudny do odczytania, ponieważ tam znajdują się ikony profilu, serca i komentarzy. Idealnie jest trzymać teksty i twarze w środkowo-górnej strefie (Safe Zone).",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Wczytaj zdjęcie lub film',
|
|
36
|
+
text: "Prześlij plik, który chcesz podejrzeć. Przetwarzanie odbywa się lokalnie i prywatnie — nic nie jest wysyłane do Internetu.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Wybierz platformę',
|
|
40
|
+
text: "Wybierz TikTok, Instagram Reels lub YouTube Shorts, aby aktywować odpowiednią nakładkę interfejsu.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Sprawdź czytelność',
|
|
44
|
+
text: "Zweryfikuj, czy teksty, napisy lub kluczowe elementy marki nie są zasłonięte przez ikony sieci społecznościowej.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Dostosuj i eksportuj',
|
|
48
|
+
text: "Jeśli coś jest ukryte, przesuń element w oryginalnym edytorze wideo i testuj ponownie, aż wszystko będzie idealnie pasować.",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' },
|
|
83
|
+
inLanguage: 'pl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<SafeZonesUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Często Zadawane Pytania',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Oficjalna dokumentacja platformy',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'TikTok Creator Portal: Video optimization and safe zones',
|
|
96
|
+
url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Instagram Business: Najlepsze praktyki dla Reels',
|
|
100
|
+
url: 'https://business.instagram.com/creators/reels-best-practices',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'Pomoc YouTube: Tworzenie YouTube Shorts',
|
|
104
|
+
url: 'https://support.google.com/youtube/answer/10343433',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'Meta for Creators: Strefy bezpieczne i proporcje wideo',
|
|
108
|
+
url: 'https://www.facebook.com/business/help/103816146375741',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
howTo: howToData,
|
|
112
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
113
|
+
seo: [
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Mistrzowski Przewodnik po Strefach Bezpiecznych: Optymalizuj swoje Reels, TikToki i Shortsy',
|
|
117
|
+
level: 2,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: "W nasyconym świecie treści pionowych pierwsze wrażenie ma charakter techniczny. Największym błędem twórców jest ignorowanie faktu, jak ich <strong>film lub zdjęcie</strong> współgra z natywnym interfejsem platformy. Każda sieć społecznościowa (TikTok, Instagram Reels i YouTube Shorts) nakłada warstwy przycisków, tekstu i profili, które mogą zniweczyć wizualny efekt Twojej kompozycji.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: "To narzędzie pozwala wczytać pliki multimedialne i podejrzeć dokładnie, które części kadru zostaną pochłonięte przez interfejs. Nie chodzi tylko o <strong>napisy</strong>; chodzi o upewnienie się, że twarze, produkty lub główne akcje w Twoim filmie nie zostaną pogrzebane pod przyciskiem „Lubię to” lub długim opisem.",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'grid',
|
|
129
|
+
columns: [
|
|
130
|
+
{
|
|
131
|
+
type: 'card',
|
|
132
|
+
title: 'TikTok: Najbardziej inwazyjny interfejs',
|
|
133
|
+
html: "<p>TikTok posiada najbardziej zagęszczony interfejs. Po prawej stronie znajduje się kolumna ikon zajmująca około 15% szerokości. Na dole opis może rozciągać się na 4 lub 5 linii, zakrywając od dołu prawie jedną trzecią ekranu.</p><ul><li><strong>Dolny margines:</strong> Pozostaw ostatnie 250px wolne, aby uniknąć tekstu opisu i nazwy użytkownika.</li><li><strong>Prawy margines:</strong> Unikaj umieszczania tekstu w odległości mniejszej niż 100px od prawej krawędzi.</li><li><strong>Góra:</strong> Przyciski „Obserwujesz” i „Dla Ciebie” zajmują górny środkowy pas.</li></ul>",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'card',
|
|
137
|
+
title: 'IG Reels: Czynnik feedu',
|
|
138
|
+
html: "<p>W przeciwieństwie do TikToka, Instagram Reels przycina wideo do formatu 4:5, gdy jest ono przeglądane w głównym feedzie. Oznacza to, że jeśli umieścisz istotne informacje w górnych lub dolnych 15% swojego wideo 9:16, znikną one w feedzie.</p><ul><li><strong>Zasada 4:5:</strong> Trzymaj tytuły i kluczowe elementy w strefie centralnej dla widoczności w feedzie.</li><li><strong>Interfejs:</strong> Ikony Reels są subtelniejsze niż na TikToku, co pozwala na nieco większy margines boczny.</li><li><strong>Przycisk audio:</strong> Znajduje się w prawym dolnym rogu, zazwyczaj zasłania znacznie mniej niż obracająca się płyta na TikToku.</li></ul>",
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: 'YouTube Shorts: Pilnuj prawej strony',
|
|
145
|
+
level: 3,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'paragraph',
|
|
149
|
+
html: "YouTube Shorts ma asymetryczny interfejs. Przycisk subskrypcji jest bardzo widoczny i ma jednolity kolor (zazwyczaj czarny lub biały), co tworzy ważną wizualną martwą strefę w prawym dolnym rogu.",
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'list',
|
|
153
|
+
items: [
|
|
154
|
+
'<strong>Prawy margines:</strong> Unikaj umieszczania tekstu lub ważnych elementów w prawym dolnym obszarze 20%.',
|
|
155
|
+
'<strong>Dolny margines:</strong> Pozostaw ostatnie 150px wolne, aby uniknąć tekstu opisu i nazwy użytkownika.',
|
|
156
|
+
'<strong>Góra:</strong> Przyciski „Subskrybuj” i inne zajmują górny środkowy pas.',
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'title',
|
|
161
|
+
text: 'Kluczowe pytania dotyczące projektowania pionowego',
|
|
162
|
+
level: 2,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'title',
|
|
166
|
+
text: 'Gdzie umieścić kluczowe elementy (twarze, tekst, produkt)?',
|
|
167
|
+
level: 3,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'paragraph',
|
|
171
|
+
html: '„Złota Strefa” dla głównej akcji to środkowa jedna trzecia filmu. Jeśli filmujesz osobę, upewnij się, że jej oczy i usta znajdują się w tej strefie. Ważne elementy graficzne powinny być nieco przesunięte w górę od geometrycznego środka, aby uniknąć dolnego opisu.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'title',
|
|
175
|
+
text: 'Dlaczego mój film po przesłaniu wydaje się niewyraźny?',
|
|
176
|
+
level: 3,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'paragraph',
|
|
180
|
+
html: "Często nie chodzi o jakość, ale o skalowanie. Zawsze nagrywaj w rozdzielczości 1080x1920 przy 30 lub 60 kl./s. Unikaj 4K, jeśli stosujesz wiele ciężkich efektów, ponieważ platformy agresywnie kompresują duże pliki.",
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'A co z ramkami telefonu?',
|
|
185
|
+
level: 3,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: "Pamiętaj, że nowoczesne telefony mają wcięcia (notche) lub otwory na aparat w ekranie. To narzędzie zawiera górny margines bezpieczeństwa, aby Twoje treści nie kolidowały z zegarem ani ikonami systemowymi (bateria, sygnał).",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'title',
|
|
193
|
+
text: 'Anatomia wiralowego wideo',
|
|
194
|
+
level: 2,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
html: "Projektowanie dla mediów społecznościowych to nie tylko estetyka — to <strong>użyteczność</strong>. Jeśli użytkownik musi walczyć o przeczytanie tekstu, ponieważ ikony platformy go zasłaniają, po prostu przejdzie do następnego filmu. Retencja (Watch Time) gwałtownie spada, gdy pojawia się wizualne tarcie.",
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'paragraph',
|
|
202
|
+
html: "Na przykład na YouTube Shorts interfejs jest asymetryczny. Przycisk subskrypcji jest bardzo wyraźny. Korzystając z tego symulatora, możesz dostosować nieprzezroczystość, aby zrozumieć, jak Twoja paleta kolorów współgra z natywnymi kolorami interfejsu użytkownika.",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
type: 'tip',
|
|
206
|
+
title: 'Narzędzie Kreatywnej Kontroli Jakości',
|
|
207
|
+
html: '<p>Zaprojektowane dla twórców, którzy niczego nie zostawiają przypadkowi.</p>',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
ui: {
|
|
211
|
+
labelConfig: 'Ustawienia',
|
|
212
|
+
labelPlatform: 'Platforma docelowa',
|
|
213
|
+
labelUpload: 'Prześlij treść',
|
|
214
|
+
uploadPrompt: 'Wybierz zdjęcie lub film',
|
|
215
|
+
uploadLink: 'Lub użyj przykładu',
|
|
216
|
+
loadContent: 'Wczytaj swoją treść',
|
|
217
|
+
labelOpacity: 'Widoczność interfejsu',
|
|
218
|
+
labelMask: 'Zaciemnij strefy krytyczne',
|
|
219
|
+
labelGrid: 'Reguła trójpodziału',
|
|
220
|
+
btnReset: 'Resetuj płótno',
|
|
221
|
+
bannerTiktok: 'Symulacja TikTok 9:16',
|
|
222
|
+
bannerReels: 'Symulacja Instagram Reels 9:16',
|
|
223
|
+
bannerShorts: 'Symulacja YouTube Shorts 9:16',
|
|
224
|
+
nameTiktok: 'TikTok',
|
|
225
|
+
nameReels: 'IG Reels',
|
|
226
|
+
nameShorts: 'YT Shorts',
|
|
227
|
+
ttFollowing: 'Obserwujesz',
|
|
228
|
+
ttForYou: 'Dla Ciebie',
|
|
229
|
+
ttDescription: 'Prawdziwy projekt interfejsu dla twórców treści. #uxdesign #socialmedia',
|
|
230
|
+
ttAudio: 'jjlmoya - Oryginalny dźwięk',
|
|
231
|
+
ttNavHome: 'Główna',
|
|
232
|
+
ttNavFriends: 'Znajomi',
|
|
233
|
+
ttNavInbox: 'Skrzynka',
|
|
234
|
+
ttNavProfile: 'Profil',
|
|
235
|
+
reelsFollow: 'Obserwuj',
|
|
236
|
+
reelsDescription: 'Ten interfejs jest identyczny z prawdziwym. #reels #ux #simulator',
|
|
237
|
+
reelsAudio: 'Trending Music - Oryginalny dźwięk',
|
|
238
|
+
shortsSubscribe: 'SUBSKRYBUJ',
|
|
239
|
+
shortsDislike: 'Nie podoba mi się',
|
|
240
|
+
shortsShare: 'Udostępnij',
|
|
241
|
+
shortsRemix: 'Remiks',
|
|
242
|
+
shortsDescription: 'Symulacja prawdziwych interfejsów dla Shorts! #youtube #shorts',
|
|
243
|
+
},
|
|
244
|
+
};
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SafeZonesUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'zonas-seguras-sociais';
|
|
6
|
+
const title = 'Social Safe Zones: Simulador de Vídeo para TikTok, Reels e Shorts';
|
|
7
|
+
const description =
|
|
8
|
+
'Pré-visualiza as tuas imagens e vídeos com a interface real das redes sociais. Garante que o teu conteúdo está sempre visível e evita cortes acidentais.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: "O que são 'Zonas Seguras' nas redes sociais?",
|
|
13
|
+
answer:
|
|
14
|
+
"São as áreas do ecrã onde o conteúdo é visível sem o risco de ser coberto por elementos da interface, como o nome de utilizador, descrição, botões de interação (gostar, partilhar) ou cortes automáticos aplicados por alguns dispositivos.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Porque é que o meu vídeo do TikTok parece cortado em cima e em baixo?',
|
|
18
|
+
answer:
|
|
19
|
+
'O TikTok utiliza uma proporção de 9:16. Se o teu vídeo for mais largo, a app aplicará zoom para preencher o ecrã, causando o corte. Além disso, a interface inferior cobre parte do vídeo, por isso elementos importantes devem estar centrados.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'A zona segura é a mesma para o Instagram Reels e o YouTube Shorts?',
|
|
23
|
+
answer:
|
|
24
|
+
'São muito semelhantes mas não idênticas. Os botões do YouTube Shorts estão posicionados de forma diferente dos do Reels. A nossa ferramenta permite-te alternar entre plataformas para verificares o teu design em todas elas.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'O que acontece se eu colocar texto no canto inferior direito?',
|
|
28
|
+
answer:
|
|
29
|
+
'Provavelmente será invisível ou muito difícil de ler, pois é onde se encontram os ícones do perfil, coração e comentários. Idealmente, mantém os textos e rostos na área central superior (Zona Segura).',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Carrega a tua imagem ou vídeo',
|
|
36
|
+
text: 'Faz o upload do ficheiro que desejas pré-visualizar. O processamento é local e privado — nada é carregado para a internet.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Seleciona a plataforma',
|
|
40
|
+
text: 'Escolhe entre TikTok, Instagram Reels ou YouTube Shorts para ativares a sobreposição de interface correspondente.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Verifica a legibilidade',
|
|
44
|
+
text: 'Verifica se os textos, legendas ou elementos chave da marca estão cobertos pelos ícones da rede social.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Ajusta e exporta',
|
|
48
|
+
text: 'Se algo estiver oculto, move o elemento no teu editor de vídeo original e testa novamente até que encaixe perfeitamente.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'pt',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<SafeZonesUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Perguntas Frequentes',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Documentação Oficial das Plataformas',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'TikTok Creator Portal: Otimização de vídeo e zonas seguras',
|
|
96
|
+
url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Instagram Business: Melhores práticas para Reels',
|
|
100
|
+
url: 'https://business.instagram.com/creators/reels-best-practices',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'Ajuda do YouTube: Criar YouTube Shorts',
|
|
104
|
+
url: 'https://support.google.com/youtube/answer/10343433',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'Meta for Creators: Zonas seguras e proporções para vídeo',
|
|
108
|
+
url: 'https://www.facebook.com/business/help/103816146375741',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
howTo: howToData,
|
|
112
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
113
|
+
seo: [
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Guia Mestre de Zonas Seguras: Otimiza os teus Reels, TikToks e Shorts',
|
|
117
|
+
level: 2,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'No mundo saturado do conteúdo vertical, a primeira impressão é técnica. O maior erro que os criadores cometem é ignorar como o seu <strong>vídeo ou imagem</strong> interage com a interface nativa da plataforma. Cada rede social (TikTok, Instagram Reels e YouTube Shorts) sobrepõe camadas de botões, texto e perfis que podem anular o impacto visual da tua composição.',
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: 'Esta ferramenta permite-te carregar os teus ficheiros multimédia e pré-visualizar exatamente quais as partes do teu frame que serão consumidas pela interface. Não se trata apenas de <strong>legendas</strong>; trata-se de garantir que os rostos, produtos ou ações principais no teu vídeo não fiquem enterrados sob um botão "Gostar" ou uma descrição longa.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'grid',
|
|
129
|
+
columns: [
|
|
130
|
+
{
|
|
131
|
+
type: 'card',
|
|
132
|
+
title: 'TikTok: A interface mais invasiva',
|
|
133
|
+
html: '<p>O TikTok tem a interface mais densa. No lado direito, existe uma coluna de ícones que ocupa aproximadamente 15% da largura. Na parte inferior, a descrição pode estender-se por 4 ou 5 linhas, cobrindo quase um terço do ecrã a partir de baixo.</p><ul><li><strong>Margem inferior:</strong> Deixa os últimos 250px livres para evitar o texto da descrição e o nome de utilizador.</li><li><strong>Margem direita:</strong> Evita colocar texto a menos de 100px da borda direita.</li><li><strong>Topo:</strong> Os botões "Seguindo" e "Para Você" ocupam a faixa central superior.</li></ul>',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'card',
|
|
137
|
+
title: 'IG Reels: O fator feed',
|
|
138
|
+
html: '<p>Ao contrário do TikTok, o Instagram Reels corta o vídeo para um formato 4:5 quando visualizado a partir do feed principal. Isto significa que, se colocares informações vitais nos 15% superiores ou inferiores do teu vídeo 9:16, elas desaparecerão no feed.</p><ul><li><strong>A regra 4:5:</strong> Mantém títulos e elementos chave na zona central para visibilidade no feed.</li><li><strong>Interface:</strong> Os ícones do Reels são mais subtis do que os do TikTok, permitindo um pouco mais de margem lateral.</li><li><strong>Botão de áudio:</strong> Localizado no canto inferior direito, costuma cobrir muito menos do que o disco giratório do TikTok.</li></ul>',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: 'YouTube Shorts: Atenção ao lado direito',
|
|
145
|
+
level: 3,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'paragraph',
|
|
149
|
+
html: 'O YouTube Shorts tem uma interface assimétrica. O botão de subscrever é muito proeminente e de cor sólida (geralmente preto ou branco), criando um ponto cego visual importante no canto inferior direito.',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'list',
|
|
153
|
+
items: [
|
|
154
|
+
'<strong>Margem direita:</strong> Evita colocar texto ou elementos importantes nos 20% inferiores direitos.',
|
|
155
|
+
'<strong>Margem inferior:</strong> Deixa os últimos 150px livres para evitar o texto da descrição e o nome de utilizador.',
|
|
156
|
+
'<strong>Topo:</strong> Os botões de subscrever e outros ocupam a faixa central superior.',
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'title',
|
|
161
|
+
text: 'Questões Críticas sobre o Design Vertical',
|
|
162
|
+
level: 2,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'title',
|
|
166
|
+
text: 'Onde colocar elementos chave (rostos, texto, produto)?',
|
|
167
|
+
level: 3,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'paragraph',
|
|
171
|
+
html: 'A "Zona de Ouro" para a ação principal é o terço central do vídeo. Se estás a filmar uma pessoa, garante que os seus olhos e boca estão dentro desta zona. Elementos gráficos importantes devem ser ligeiramente deslocados para cima em relação ao centro geométrico para evitar a descrição inferior.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'title',
|
|
175
|
+
text: 'Porque é que o meu vídeo parece desfocado depois de submetido?',
|
|
176
|
+
level: 3,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'paragraph',
|
|
180
|
+
html: 'Muitas vezes não é a qualidade, mas sim o redimensionamento. Grava sempre em 1080x1920 a 30 ou 60 fps. Evita 46K se estiveres a aplicar muitos efeitos pesados, pois as plataformas comprimem agressivamente ficheiros grandes.',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'E quanto aos limites do telemóvel?',
|
|
185
|
+
level: 3,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: 'Lembra-te que os telemóveis modernos têm entalhes (notches) ou buracos de câmara no ecrã. Esta ferramenta inclui uma margem de segurança superior para que o teu conteúdo não entre em conflito com o relógio ou ícones de sistema (bateria, sinal).',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'title',
|
|
193
|
+
text: 'Anatomia de um Vídeo Viral',
|
|
194
|
+
level: 2,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
html: 'Desenhar para redes sociais não é apenas estética — é <strong>usabilidade</strong>. Se um utilizador tiver de lutar para ler texto porque os ícones da plataforma o cobrem, ele simplesmente passará para o vídeo seguinte. A retenção (Watch Time) cai drasticamente quando há fricção visual.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'paragraph',
|
|
202
|
+
html: 'No YouTube Shorts, por exemplo, a interface é assimétrica. O botão de subscrever é muito evidente. Ao usar este simulador, podes ajustar a opacidade para entender como a tua paleta de cores interage com as cores nativas da UI.',
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
type: 'tip',
|
|
206
|
+
title: 'Ferramenta de Controlo de Qualidade Criativo',
|
|
207
|
+
html: '<p>Desenhado para criadores que não deixam nada ao acaso.</p>',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
ui: {
|
|
211
|
+
labelConfig: 'Definições',
|
|
212
|
+
labelPlatform: 'Plataforma Alvo',
|
|
213
|
+
labelUpload: 'Carregar Conteúdo',
|
|
214
|
+
uploadPrompt: 'Selecionar imagem ou vídeo',
|
|
215
|
+
uploadLink: 'Ou usa um exemplo',
|
|
216
|
+
loadContent: 'Carregar o teu conteúdo',
|
|
217
|
+
labelOpacity: 'Relevo da Interface',
|
|
218
|
+
labelMask: 'Escurecer Zonas Críticas',
|
|
219
|
+
labelGrid: 'Regra dos Terços',
|
|
220
|
+
btnReset: 'Reset Canvas',
|
|
221
|
+
bannerTiktok: 'A simular TikTok 9:16',
|
|
222
|
+
bannerReels: 'A simular Instagram Reels 9:16',
|
|
223
|
+
bannerShorts: 'A simular YouTube Shorts 9:16',
|
|
224
|
+
nameTiktok: 'TikTok',
|
|
225
|
+
nameReels: 'IG Reels',
|
|
226
|
+
nameShorts: 'YT Shorts',
|
|
227
|
+
ttFollowing: 'Seguindo',
|
|
228
|
+
ttForYou: 'Para Você',
|
|
229
|
+
ttDescription: 'Design de interface real para criadores de conteúdo. #uxdesign #socialmedia',
|
|
230
|
+
ttAudio: 'jjlmoya - Som Original',
|
|
231
|
+
ttNavHome: 'Início',
|
|
232
|
+
ttNavFriends: 'Amigos',
|
|
233
|
+
ttNavInbox: 'Entrada',
|
|
234
|
+
ttNavProfile: 'Perfil',
|
|
235
|
+
reelsFollow: 'Seguir',
|
|
236
|
+
reelsDescription: 'Esta interface é idêntica à real. #reels #ux #simulator',
|
|
237
|
+
reelsAudio: 'Trending Music - Áudio Original',
|
|
238
|
+
shortsSubscribe: 'SUBSCREVER',
|
|
239
|
+
shortsDislike: 'Não gosto',
|
|
240
|
+
shortsShare: 'Partilhar',
|
|
241
|
+
shortsRemix: 'Remix',
|
|
242
|
+
shortsDescription: 'A simular interfaces reais para Shorts! #youtube #shorts',
|
|
243
|
+
},
|
|
244
|
+
};
|