@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.
Files changed (120) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +23 -0
  3. package/src/category/i18n/id.ts +23 -0
  4. package/src/category/i18n/it.ts +23 -0
  5. package/src/category/i18n/ja.ts +23 -0
  6. package/src/category/i18n/ko.ts +23 -0
  7. package/src/category/i18n/nl.ts +23 -0
  8. package/src/category/i18n/pl.ts +23 -0
  9. package/src/category/i18n/pt.ts +23 -0
  10. package/src/category/i18n/ru.ts +23 -0
  11. package/src/category/i18n/sv.ts +23 -0
  12. package/src/category/i18n/tr.ts +23 -0
  13. package/src/category/i18n/zh.ts +23 -0
  14. package/src/category/index.ts +12 -0
  15. package/src/index.ts +8 -0
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +1 -1
  18. package/src/tests/schemas_fulfillment.test.ts +23 -0
  19. package/src/tests/slug_uniqueness.test.ts +81 -0
  20. package/src/tests/title_quality.test.ts +55 -0
  21. package/src/tool/redditFormatter/i18n/de.ts +193 -0
  22. package/src/tool/redditFormatter/i18n/en.ts +1 -1
  23. package/src/tool/redditFormatter/i18n/es.ts +1 -1
  24. package/src/tool/redditFormatter/i18n/fr.ts +1 -1
  25. package/src/tool/redditFormatter/i18n/id.ts +193 -0
  26. package/src/tool/redditFormatter/i18n/it.ts +193 -0
  27. package/src/tool/redditFormatter/i18n/ja.ts +193 -0
  28. package/src/tool/redditFormatter/i18n/ko.ts +193 -0
  29. package/src/tool/redditFormatter/i18n/nl.ts +193 -0
  30. package/src/tool/redditFormatter/i18n/pl.ts +193 -0
  31. package/src/tool/redditFormatter/i18n/pt.ts +193 -0
  32. package/src/tool/redditFormatter/i18n/ru.ts +193 -0
  33. package/src/tool/redditFormatter/i18n/sv.ts +193 -0
  34. package/src/tool/redditFormatter/i18n/tr.ts +193 -0
  35. package/src/tool/redditFormatter/i18n/zh.ts +193 -0
  36. package/src/tool/redditFormatter/index.ts +15 -7
  37. package/src/tool/safeZones/i18n/de.ts +244 -0
  38. package/src/tool/safeZones/i18n/id.ts +244 -0
  39. package/src/tool/safeZones/i18n/it.ts +244 -0
  40. package/src/tool/safeZones/i18n/ja.ts +244 -0
  41. package/src/tool/safeZones/i18n/ko.ts +244 -0
  42. package/src/tool/safeZones/i18n/nl.ts +244 -0
  43. package/src/tool/safeZones/i18n/pl.ts +244 -0
  44. package/src/tool/safeZones/i18n/pt.ts +244 -0
  45. package/src/tool/safeZones/i18n/ru.ts +244 -0
  46. package/src/tool/safeZones/i18n/sv.ts +244 -0
  47. package/src/tool/safeZones/i18n/tr.ts +244 -0
  48. package/src/tool/safeZones/i18n/zh.ts +244 -0
  49. package/src/tool/safeZones/index.ts +17 -9
  50. package/src/tool/socialImageResizer/i18n/de.ts +211 -0
  51. package/src/tool/socialImageResizer/i18n/en.ts +1 -1
  52. package/src/tool/socialImageResizer/i18n/id.ts +211 -0
  53. package/src/tool/socialImageResizer/i18n/it.ts +211 -0
  54. package/src/tool/socialImageResizer/i18n/ja.ts +211 -0
  55. package/src/tool/socialImageResizer/i18n/ko.ts +211 -0
  56. package/src/tool/socialImageResizer/i18n/nl.ts +211 -0
  57. package/src/tool/socialImageResizer/i18n/pl.ts +211 -0
  58. package/src/tool/socialImageResizer/i18n/pt.ts +211 -0
  59. package/src/tool/socialImageResizer/i18n/ru.ts +211 -0
  60. package/src/tool/socialImageResizer/i18n/sv.ts +211 -0
  61. package/src/tool/socialImageResizer/i18n/tr.ts +211 -0
  62. package/src/tool/socialImageResizer/i18n/zh.ts +211 -0
  63. package/src/tool/socialImageResizer/index.ts +16 -8
  64. package/src/tool/socialValueCalculator/i18n/de.ts +306 -0
  65. package/src/tool/socialValueCalculator/i18n/es.ts +1 -1
  66. package/src/tool/socialValueCalculator/i18n/fr.ts +1 -1
  67. package/src/tool/socialValueCalculator/i18n/id.ts +306 -0
  68. package/src/tool/socialValueCalculator/i18n/it.ts +306 -0
  69. package/src/tool/socialValueCalculator/i18n/ja.ts +306 -0
  70. package/src/tool/socialValueCalculator/i18n/ko.ts +306 -0
  71. package/src/tool/socialValueCalculator/i18n/nl.ts +306 -0
  72. package/src/tool/socialValueCalculator/i18n/pl.ts +306 -0
  73. package/src/tool/socialValueCalculator/i18n/pt.ts +306 -0
  74. package/src/tool/socialValueCalculator/i18n/ru.ts +306 -0
  75. package/src/tool/socialValueCalculator/i18n/sv.ts +306 -0
  76. package/src/tool/socialValueCalculator/i18n/tr.ts +306 -0
  77. package/src/tool/socialValueCalculator/i18n/zh.ts +306 -0
  78. package/src/tool/socialValueCalculator/index.ts +17 -9
  79. package/src/tool/tinderPhotoOptimizer/i18n/de.ts +272 -0
  80. package/src/tool/tinderPhotoOptimizer/i18n/id.ts +272 -0
  81. package/src/tool/tinderPhotoOptimizer/i18n/it.ts +272 -0
  82. package/src/tool/tinderPhotoOptimizer/i18n/ja.ts +272 -0
  83. package/src/tool/tinderPhotoOptimizer/i18n/ko.ts +272 -0
  84. package/src/tool/tinderPhotoOptimizer/i18n/nl.ts +272 -0
  85. package/src/tool/tinderPhotoOptimizer/i18n/pl.ts +272 -0
  86. package/src/tool/tinderPhotoOptimizer/i18n/pt.ts +272 -0
  87. package/src/tool/tinderPhotoOptimizer/i18n/ru.ts +272 -0
  88. package/src/tool/tinderPhotoOptimizer/i18n/sv.ts +272 -0
  89. package/src/tool/tinderPhotoOptimizer/i18n/tr.ts +272 -0
  90. package/src/tool/tinderPhotoOptimizer/i18n/zh.ts +272 -0
  91. package/src/tool/tinderPhotoOptimizer/index.ts +17 -9
  92. package/src/tool/youtubeThumbnail/i18n/de.ts +207 -0
  93. package/src/tool/youtubeThumbnail/i18n/id.ts +207 -0
  94. package/src/tool/youtubeThumbnail/i18n/it.ts +207 -0
  95. package/src/tool/youtubeThumbnail/i18n/ja.ts +207 -0
  96. package/src/tool/youtubeThumbnail/i18n/ko.ts +207 -0
  97. package/src/tool/youtubeThumbnail/i18n/nl.ts +207 -0
  98. package/src/tool/youtubeThumbnail/i18n/pl.ts +207 -0
  99. package/src/tool/youtubeThumbnail/i18n/pt.ts +207 -0
  100. package/src/tool/youtubeThumbnail/i18n/ru.ts +207 -0
  101. package/src/tool/youtubeThumbnail/i18n/sv.ts +207 -0
  102. package/src/tool/youtubeThumbnail/i18n/tr.ts +207 -0
  103. package/src/tool/youtubeThumbnail/i18n/zh.ts +207 -0
  104. package/src/tool/youtubeThumbnail/index.ts +17 -9
  105. package/src/tool/youtubeThumbnailPreviewer/i18n/de.ts +321 -0
  106. package/src/tool/youtubeThumbnailPreviewer/i18n/en.ts +1 -1
  107. package/src/tool/youtubeThumbnailPreviewer/i18n/es.ts +1 -1
  108. package/src/tool/youtubeThumbnailPreviewer/i18n/fr.ts +2 -2
  109. package/src/tool/youtubeThumbnailPreviewer/i18n/id.ts +321 -0
  110. package/src/tool/youtubeThumbnailPreviewer/i18n/it.ts +321 -0
  111. package/src/tool/youtubeThumbnailPreviewer/i18n/ja.ts +321 -0
  112. package/src/tool/youtubeThumbnailPreviewer/i18n/ko.ts +321 -0
  113. package/src/tool/youtubeThumbnailPreviewer/i18n/nl.ts +321 -0
  114. package/src/tool/youtubeThumbnailPreviewer/i18n/pl.ts +321 -0
  115. package/src/tool/youtubeThumbnailPreviewer/i18n/pt.ts +321 -0
  116. package/src/tool/youtubeThumbnailPreviewer/i18n/ru.ts +321 -0
  117. package/src/tool/youtubeThumbnailPreviewer/i18n/sv.ts +321 -0
  118. package/src/tool/youtubeThumbnailPreviewer/i18n/tr.ts +321 -0
  119. package/src/tool/youtubeThumbnailPreviewer/i18n/zh.ts +321 -0
  120. package/src/tool/youtubeThumbnailPreviewer/index.ts +24 -0
@@ -0,0 +1,211 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SocialImageResizerUI } from '../ui';
4
+
5
+ const slug = 'zmiana-rozmiaru-zdjec-social-media';
6
+ const title = 'Social Media Image Resizer: Kadrowanie i zmiana rozmiaru pod każdą platformę';
7
+ const description =
8
+ 'Zmieniaj rozmiar i kadruj zdjęcia na Instagram, TikTok, YouTube i inne serwisy. Inteligentne przycinanie z aktualnymi oficjalnymi wymiarami na rok 2026.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Czy podczas zmiany rozmiaru stracę na jakości zdjęcia?',
13
+ answer:
14
+ 'Nie, używamy wysokiej jakości algorytmów wygładzania. Zalecamy jednak przesyłanie oryginalnego zdjęcia o rozdzielczości równej lub większej niż format docelowy.',
15
+ },
16
+ {
17
+ question: 'Czy przesyłanie tutaj moich zdjęć jest bezpieczne?',
18
+ answer:
19
+ 'Całkowicie. Przetwarzanie odbywa się lokalnie w Twojej przeglądarce przy użyciu Canvas API. Twoje zdjęcia nigdy nie są wysyłane na żaden serwer.',
20
+ },
21
+ {
22
+ question: 'Jakie formaty plików są obsługiwane?',
23
+ answer:
24
+ 'Obsługujemy przesyłanie plików JPG, PNG, WebP oraz AVIF. Pobrane pliki są optymalizowane jako wysokiej jakości JPG dla maksymalnej kompatybilności.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Prześlij zdjęcie',
31
+ text: 'Przeciągnij plik lub wybierz go z urządzenia, aby rozpocząć proces.',
32
+ },
33
+ {
34
+ name: 'Wybierz format',
35
+ text: 'Z menu bocznego wybierz serwis społecznościowy i typ publikacji, którego potrzebujesz.',
36
+ },
37
+ {
38
+ name: 'Dostosuj i pobierz',
39
+ text: 'Ustaw kadr, przeciągając zdjęcie, i użyj zoomu, aby idealnie je dopasować. Gdy skończysz, kliknij przycisk pobierania.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowToThing> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: title,
57
+ description,
58
+ step: howToData.map((step, i) => ({
59
+ '@type': 'HowToStep',
60
+ position: i + 1,
61
+ name: step.name,
62
+ text: step.text,
63
+ })),
64
+ };
65
+
66
+ const appSchema: WithContext<SoftwareApplication> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'SoftwareApplication',
69
+ name: title,
70
+ description,
71
+ applicationCategory: 'UtilityApplication',
72
+ operatingSystem: 'All',
73
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' },
74
+ inLanguage: 'pl',
75
+ };
76
+
77
+ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
+ slug,
79
+ title,
80
+ description,
81
+ faqTitle: 'Często Zadawane Pytania',
82
+ faq: faqData,
83
+ bibliographyTitle: 'Źródła',
84
+ bibliography: [
85
+ {
86
+ name: 'MDN Web Docs: Canvas API',
87
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
+ },
89
+ {
90
+ name: 'Sprout Social: Przewodnik po rozmiarach zdjęć w social media 2026',
91
+ url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
+ },
93
+ ],
94
+ howTo: howToData,
95
+ schemas: [faqSchema, howToSchema, appSchema],
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: 'Resizer zdjęć social media pod każdą platformę',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'paragraph',
104
+ html: 'W dzisiejszym cyfrowym ekosystemie pierwsze wrażenie budowane jest wizualnie. Każdy serwis społecznościowy działa w oparciu o specyficzne algorytmy, które faworyzują treści natywnie dopasowane do ich proporcji. Nasz resizer to nie tylko techniczne narzędzie — to Twój sojusznik, dzięki któremu Twój przekaz dotrze do odbiorców bez niechcianych ucięć czy straty jakości.',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Niezależnie od tego, czy potrzebujesz zamienić zdjęcie poziome w efektowny pion na Instagram Stories, czy dostosować projekt pod złożony baner YouTube, nasza aplikacja korzysta z inteligentnego systemu kadrowania, który pozwala na precyzyjne ustawienie i skalowanie obrazu bezpośrednio w przeglądarce.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Oficjalne wymiary zdjęć social media 2026',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ { title: 'Instagram — Post Kwadratowy', body: '1080 × 1080 px · Proporcja 1:1' },
119
+ { title: 'Instagram — Post Pionowy', body: '1080 × 1350 px · Proporcja 4:5' },
120
+ { title: 'TikTok / Reels — Pion', body: '1080 × 1920 px · Proporcja 9:16' },
121
+ { title: 'YouTube — Miniaturka', body: '1280 × 720 px · Proporcja 16:9' },
122
+ { title: 'YouTube — Baner Kanału', body: '2560 × 1440 px · Proporcja 16:9' },
123
+ { title: 'X (Twitter) — Standardowy Post', body: '1200 × 675 px · Proporcja 16:9' },
124
+ { title: 'LinkedIn — Tło Profilu', body: '1584 × 396 px · Proporcja 4:1' },
125
+ ],
126
+ },
127
+ {
128
+ type: 'grid',
129
+ columns: [
130
+ {
131
+ title: 'Instagram',
132
+ body: 'Format kwadratowy 1:1 pozostaje klasykiem, ale pion 4:5 zajmuje więcej miejsca na ekranie i generuje do 30% większe zaangażowanie w feedzie.',
133
+ },
134
+ {
135
+ title: 'Treści Short Form',
136
+ body: 'Dla TikTok i Reels standardem jest 9:16. Ten immersyjny format wymaga idealnego wycentrowania głównego punktu zdjęcia, aby nie został zasłonięty przez UI aplikacji.',
137
+ },
138
+ {
139
+ title: 'Wizualne Zaangażowanie',
140
+ body: 'Od miniaturek po banery — każdy element graficzny ma wpływ na klikalność (CTR). Precyzyjne kadrowanie gwarantuje, że teksty i kluczowe elementy będą zawsze czytelne.',
141
+ },
142
+ {
143
+ title: 'Profesjonalny Branding',
144
+ body: 'W sieciach biznesowych jak LinkedIn ostrość to autorytet. Nagłówki wymagają specyficznych proporcji, aby nie wyglądały na rozpikselowane na ekranach o wysokiej gęstości.',
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Dlaczego proporcje obrazu (Aspect Ratio) są ważne',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Proporcje to zależność między szerokością a wysokością obrazu. Ignorowanie ich zmusza platformy do stosowania zoomu lub dodawania czarnych pasów, co obniża estetykę i zasięgi organiczne.',
156
+ },
157
+ {
158
+ type: 'list',
159
+ items: [
160
+ 'Zapobiega ucinaniu tekstów lub logo przez natywne ikony aplikacji.',
161
+ 'Zachowuje optymalną gęstość pikseli bez zniekształcania lub rozciągania oryginalnego zdjęcia.',
162
+ 'Oszczędza czas dzięki zebraniu wszystkich oficjalnych wymiarów w jednym narzędziu online.',
163
+ 'Poprawia szybkość ładowania dzięki generowaniu plików o dokładnej wadze i wymiarach.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'tip',
168
+ title: 'Wskazówka kompozycyjna',
169
+ html: '<p>Korzystając z funkcji ręcznego ustawiania kadru, spróbuj umieścić główny temat zdjęcia w jednym z punktów przecięcia siatki (zasada trójpodziału). Tworzy to bardziej dynamiczne i profesjonalne kompozycje.</p>',
170
+ },
171
+ {
172
+ type: 'title',
173
+ text: 'Kroki do idealnego kadru',
174
+ level: 3,
175
+ },
176
+ {
177
+ type: 'list',
178
+ items: [
179
+ 'Wybierz format: Wybierz platformę i typ publikacji z menu bocznego.',
180
+ 'Prześlij obraz: Przeciągnij plik lub wybierz go z dysku, aby zaimportować zdjęcie.',
181
+ 'Dostosuj kadr: Przesuń zdjęcie w obszarze widocznym i użyj zoomu dla precyzji.',
182
+ 'Natychmiastowy eksport: Kliknij pobierz, aby otrzymać obraz gotowy do publikacji.',
183
+ ],
184
+ },
185
+ {
186
+ type: 'title',
187
+ text: 'Prywatność i lokalne przetwarzanie',
188
+ level: 3,
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'Twoja prywatność jest dla nas priorytetem. Ten resizer przetwarza zdjęcia lokalnie w Twojej przeglądarce przy użyciu Canvas API. Twoje pliki nigdy nie trafiają na zewnętrzne serwery, co gwarantuje pełne bezpieczeństwo i natychmiastową prędkość działania.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Profesjonalna optymalizacja dla Social Media',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'paragraph',
201
+ html: 'Profesjonalne dopasowanie treści wizualnych to bezpośrednia strategia wzrostu. Nasze narzędzie upraszcza pracę twórcom i community managerom, dbając o to, by każda publikacja wyglądała perfekcyjnie na każdym urządzeniu.',
202
+ },
203
+ ],
204
+ ui: {
205
+ sidebarTitle: 'Formaty Social',
206
+ uploadTitle: 'Prześlij zdjęcie',
207
+ uploadSubtitle: 'Przeciągnij zdjęcie tutaj lub kliknij, aby wybrać',
208
+ btnReset: 'Resetuj',
209
+ btnDownload: 'Pobierz zdjęcie',
210
+ },
211
+ };
@@ -0,0 +1,211 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SocialImageResizerUI } from '../ui';
4
+
5
+ const slug = 'redimensionar-fotos-redes-sociais';
6
+ const title = 'Social Media Image Resizer: Cortar e Redimensionar para todas as plataformas';
7
+ const description =
8
+ 'Redimensiona e corta as tuas fotos para Instagram, TikTok, YouTube e muito mais. Corte inteligente com dimensões oficiais atualizadas para 2026.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'A qualidade da imagem será perdida ao redimensionar?',
13
+ answer:
14
+ 'Não, utilizamos algoritmos de suavização de alta qualidade. Recomenda-se carregar uma imagem original com uma resolução igual ou superior ao formato de destino.',
15
+ },
16
+ {
17
+ question: 'É seguro carregar as minhas fotos aqui?',
18
+ answer:
19
+ 'Completamente. O processamento é feito localmente no teu navegador através da Canvas API. As tuas fotos nunca são enviadas para nenhum servidor.',
20
+ },
21
+ {
22
+ question: 'Quais os formatos suportados?',
23
+ answer:
24
+ 'Suportamos o carregamento de JPG, PNG, WebP e AVIF. Os downloads são otimizados como JPG de alta qualidade para a máxima compatibilidade.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Carrega a tua imagem',
31
+ text: 'Arrasta o teu ficheiro ou pesquisa no teu dispositivo para iniciar o processo.',
32
+ },
33
+ {
34
+ name: 'Escolhe o formato',
35
+ text: 'Seleciona a rede social e o tipo de publicação que precisas no menu lateral.',
36
+ },
37
+ {
38
+ name: 'Ajusta e descarrega',
39
+ text: 'Enquadra a tua foto arrastando-a e usa o zoom para um corte perfeito. Quando terminares, clica em descarregar.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowToThing> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: title,
57
+ description,
58
+ step: howToData.map((step, i) => ({
59
+ '@type': 'HowToStep',
60
+ position: i + 1,
61
+ name: step.name,
62
+ text: step.text,
63
+ })),
64
+ };
65
+
66
+ const appSchema: WithContext<SoftwareApplication> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'SoftwareApplication',
69
+ name: title,
70
+ description,
71
+ applicationCategory: 'UtilityApplication',
72
+ operatingSystem: 'All',
73
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
74
+ inLanguage: 'pt',
75
+ };
76
+
77
+ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
+ slug,
79
+ title,
80
+ description,
81
+ faqTitle: 'Perguntas Frequentes',
82
+ faq: faqData,
83
+ bibliographyTitle: 'Referências',
84
+ bibliography: [
85
+ {
86
+ name: 'MDN Web Docs: Canvas API',
87
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
+ },
89
+ {
90
+ name: 'Sprout Social: Guia de Tamanhos de Imagem para Redes Sociais 2026',
91
+ url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
+ },
93
+ ],
94
+ howTo: howToData,
95
+ schemas: [faqSchema, howToSchema, appSchema],
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: 'Redimensionador de fotos para Redes Sociais em todas as plataformas',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'paragraph',
104
+ html: 'No ecossistema digital de hoje, a primeira impressão é visual. Cada rede social funciona sob algoritmos específicos que privilegiam conteúdos nativamente adaptados às suas proporções. O nosso redimensionador não é apenas uma ferramenta técnica — é o teu aliado para garantir que a tua mensagem chega sem cortes indesejados ou perda de qualidade.',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Seja para converter uma foto de paisagem num vertical impactante para as Instagram Stories ou adaptar um design para um banner complexo de YouTube, a nossa utilidade usa um sistema de corte inteligente que te permite posicionar e escalar a tua imagem com precisão diretamente no teu navegador.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Tamanhos Oficiais de Imagem para Redes Sociais 2026',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ { title: 'Instagram — Post Quadrado', body: '1080 × 1080 px · Proporção 1:1' },
119
+ { title: 'Instagram — Post Vertical', body: '1080 × 1350 px · Proporção 4:5' },
120
+ { title: 'TikTok / Reels — Vertical', body: '1080 × 1920 px · Proporção 9:16' },
121
+ { title: 'YouTube — Miniatura', body: '1280 × 720 px · Proporção 16:9' },
122
+ { title: 'YouTube — Banner de Canal', body: '2560 × 1440 px · Proporção 16:9' },
123
+ { title: 'X (Twitter) — Post Padrão', body: '1200 × 675 px · Proporção 16:9' },
124
+ { title: 'LinkedIn — Capa de Perfil', body: '1584 × 396 px · Proporção 4:1' },
125
+ ],
126
+ },
127
+ {
128
+ type: 'grid',
129
+ columns: [
130
+ {
131
+ title: 'Instagram',
132
+ body: 'O formato quadrado 1:1 continua a ser um clássico, mas o vertical 4:5 ocupa mais espaço no ecrã e gera até 30% mais engagement no feed de notícias.',
133
+ },
134
+ {
135
+ title: 'Conteúdo de Formato Curto',
136
+ body: 'Para TikTok e Reels, o padrão é 9:16. Este formato imersivo requer que o ponto focal esteja perfeitamente alinhado para evitar ser coberto pela UI da aplicação.',
137
+ },
138
+ {
139
+ title: 'Engagement Visual',
140
+ body: 'Desde miniaturas a banners, cada elemento gráfico tem um peso específico na taxa de cliques. Um corte preciso garante que o texto e os elementos chave sejam sempre legíveis.',
141
+ },
142
+ {
143
+ title: 'Branding Profissional',
144
+ body: 'Em redes profissionais como o LinkedIn, a nitidez é autoridade. Os cabeçalhos requerem proporções específicas para evitar aparecerem pixelizados em ecrãs de alta densidade.',
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Porque é que a Proporção de Aspeto é importante',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'A proporção de aspeto é a relação proporcional entre a largura e a altura de uma imagem. Ignorá-la força as plataformas a aplicar zoom ou adicionar barras pretas, o que penaliza a estética e o alcance orgânico.',
156
+ },
157
+ {
158
+ type: 'list',
159
+ items: [
160
+ 'Evita que textos ou logótipos sejam cortados pelos ícones nativos das apps.',
161
+ 'Mantém a densidade de píxeis ideal sem distorcer ou esticar a foto original.',
162
+ 'Poupa tempo ao centralizar todas as medidas oficiais numa única ferramenta web.',
163
+ 'Melhora a velocidade de carregamento ao gerar ficheiros com o peso e dimensões exatos.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'tip',
168
+ title: 'Dica de Composição',
169
+ html: '<p>Ao usar a nossa funcionalidade de arrastamento manual, tenta colocar o assunto principal da tua foto num dos pontos de interseção da grelha. Isto cria composições mais dinâmicas e profissionais para as tuas redes sociais.</p>',
170
+ },
171
+ {
172
+ type: 'title',
173
+ text: 'Passos para um Corte Perfeito',
174
+ level: 3,
175
+ },
176
+ {
177
+ type: 'list',
178
+ items: [
179
+ 'Seleciona o teu formato: Escolhe a plataforma e o tipo de publicação no menu lateral.',
180
+ 'Carrega a imagem: Arrasta o teu ficheiro ou usa o seletor para importar a tua foto.',
181
+ 'Ajusta o enquadramento: Arrasta a foto dentro da área visível e usa o zoom para precisão.',
182
+ 'Exportação instantânea: Clica em descarregar para teres a tua imagem pronta para publicar.',
183
+ ],
184
+ },
185
+ {
186
+ type: 'title',
187
+ text: 'Privacidade e Processamento Local',
188
+ level: 3,
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'A tua privacidade é absoluta. Este redimensionador processa imagens localmente no teu navegador usando a Canvas API. As tuas fotos nunca são carregadas para nenhum servidor externo, garantindo segurança total e velocidade de processamento instantânea.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Otimização Profissional para Redes Sociais',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'paragraph',
201
+ html: 'Adaptar o teu conteúdo visual de forma profissional é uma estratégia de crescimento direto. A nossa ferramenta simplifica o fluxo de trabalho para criadores e gestores de comunidade, garantindo que cada post parece perfeito em qualquer dispositivo e plataforma.',
202
+ },
203
+ ],
204
+ ui: {
205
+ sidebarTitle: 'Formatos Sociais',
206
+ uploadTitle: 'Carregar Imagem',
207
+ uploadSubtitle: 'Arrasta a tua foto para aqui ou clica para procurar',
208
+ btnReset: 'Repor',
209
+ btnDownload: 'Descarregar Imagem',
210
+ },
211
+ };
@@ -0,0 +1,211 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SocialImageResizerUI } from '../ui';
4
+
5
+ const slug = 'izmeneniye-razmera-izobrazhenij-socialnyh-setej';
6
+ const title = 'Social Media Image Resizer: обрезка и изменение размера под любую платформу';
7
+ const description =
8
+ 'Изменяйте размер и обрезайте фотографии для Instagram, TikTok, YouTube и других сетей. Умная обрезка с учетом официальных размеров, актуальных на 2026 год.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Потеряется ли качество изображения при изменении размера?',
13
+ answer:
14
+ 'Нет, мы используем высококачественные алгоритмы сглаживания. Рекомендуется загружать оригинальное изображение с разрешением, равным или превышающим целевой формат.',
15
+ },
16
+ {
17
+ question: 'Безопасно ли загружать сюда свои фотографии?',
18
+ answer:
19
+ 'Полностью. Обработка выполняется локально в вашем браузере с помощью Canvas API. Ваши фотографии никогда не отправляются на сервер.',
20
+ },
21
+ {
22
+ question: 'Какие форматы поддерживаются?',
23
+ answer:
24
+ 'Для загрузки поддерживаются JPG, PNG, WebP и AVIF. Скачиваемые файлы оптимизируются как высококачественные JPG для максимальной совместимости.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Загрузите изображение',
31
+ text: 'Перетащите файл или выберите его на устройстве, чтобы начать процесс.',
32
+ },
33
+ {
34
+ name: 'Выберите формат',
35
+ text: 'Выберите нужную социальную сеть и тип публикации в боковом меню.',
36
+ },
37
+ {
38
+ name: 'Настройте и скачайте',
39
+ text: 'Отредактируйте положение фото перетаскиванием и используйте зум для идеальной обрезки. По завершении нажмите «Скачать».',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowToThing> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: title,
57
+ description,
58
+ step: howToData.map((step, i) => ({
59
+ '@type': 'HowToStep',
60
+ position: i + 1,
61
+ name: step.name,
62
+ text: step.text,
63
+ })),
64
+ };
65
+
66
+ const appSchema: WithContext<SoftwareApplication> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'SoftwareApplication',
69
+ name: title,
70
+ description,
71
+ applicationCategory: 'UtilityApplication',
72
+ operatingSystem: 'All',
73
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'RUB' },
74
+ inLanguage: 'ru',
75
+ };
76
+
77
+ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
+ slug,
79
+ title,
80
+ description,
81
+ faqTitle: 'Часто задаваемые вопросы',
82
+ faq: faqData,
83
+ bibliographyTitle: 'Источники',
84
+ bibliography: [
85
+ {
86
+ name: 'MDN Web Docs: Canvas API',
87
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
+ },
89
+ {
90
+ name: 'Sprout Social: руководство по размерам изображений для соцсетей 2026',
91
+ url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
+ },
93
+ ],
94
+ howTo: howToData,
95
+ schemas: [faqSchema, howToSchema, appSchema],
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: 'Изменение размера изображений для всех соцсетей',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'paragraph',
104
+ html: 'В современной цифровой экосистеме первое впечатление строится на визуале. Каждая социальная сеть работает на основе специфических алгоритмов, которые отдают приоритет контенту, нативно адаптированному под его пропорции. Наш инструмент — это не просто техническое средство, а ваш союзник в том, чтобы сообщение дошло до аудитории без нежелательных обрезок и потери качества.',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Нужно ли вам превратить пейзажное фото в эффектный вертикальный формат для Instagram Stories или адаптировать дизайн под сложный баннер YouTube — наше приложение использует систему умной обрезки, позволяющую точно позиционировать и масштабировать изображение прямо в браузере.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Официальные размеры изображений для соцсетей 2026',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ { title: 'Instagram — квадратный пост', body: '1080 × 1080 px · Соотношение 1:1' },
119
+ { title: 'Instagram — вертикальный пост', body: '1080 × 1350 px · Соотношение 4:5' },
120
+ { title: 'TikTok / Reels — вертикаль', body: '1080 × 1920 px · Соотношение 9:16' },
121
+ { title: 'YouTube — миниатюра', body: '1280 × 720 px · Соотношение 16:9' },
122
+ { title: 'YouTube — баннер канала', body: '2560 × 1440 px · Соотношение 16:9' },
123
+ { title: 'X (Twitter) — стандартный пост', body: '1200 × 675 px · Соотношение 16:9' },
124
+ { title: 'LinkedIn — обложка профиля', body: '1584 × 396 px · Соотношение 4:1' },
125
+ ],
126
+ },
127
+ {
128
+ type: 'grid',
129
+ columns: [
130
+ {
131
+ title: 'Instagram',
132
+ body: 'Квадратный формат 1:1 остается классикой, но вертикаль 4:5 занимает больше места на экране и дает до 30% больше вовлеченности в ленте новостей.',
133
+ },
134
+ {
135
+ title: 'Короткие видео',
136
+ body: 'Для TikTok и Reels стандартом является 9:16. Этот иммерсивный формат требует идеального выравнивания центра композиции, чтобы его не закрыл интерфейс приложения.',
137
+ },
138
+ {
139
+ title: 'Визуальный отклик',
140
+ body: 'От миниатюр до баннеров — каждый графический элемент влияет на CTR. Точная обрезка гарантирует, что тексты и ключевые детали всегда будут читаемы.',
141
+ },
142
+ {
143
+ title: 'Профессиональный брендинг',
144
+ body: 'В деловых сетях вроде LinkedIn четкость — это авторитет. Обложки требуют специфических пропорций, чтобы не выглядеть размытыми на экранах с высокой плотностью пикселей.',
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Почему важно соотношение сторон',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Соотношение сторон — это пропорциональная связь между шириной и высотой изображения. Игнорирование этого заставляет платформы применять зум или добавлять черные полосы, что портит эстетику и снижает охваты.',
156
+ },
157
+ {
158
+ type: 'list',
159
+ items: [
160
+ 'Предотвращает обрезку текста или логотипов нативными иконками приложений.',
161
+ 'Сохраняет оптимальную плотность пикселей без искажения или растягивания оригинала.',
162
+ 'Экономит время за счет объединения всех официальных размеров в одном онлайн-инструменте.',
163
+ 'Улучшает скорость загрузки благодаря генерации файлов с точными параметрами.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'tip',
168
+ title: 'Совет по композиции',
169
+ html: '<p>При ручной настройке кадра попробуйте поместить главный объект фото в одну из точек пересечения сетки (правило третей). Это создает более динамичную и профессиональную композицию.</p>',
170
+ },
171
+ {
172
+ type: 'title',
173
+ text: 'Шаги для идеальной обрезки',
174
+ level: 3,
175
+ },
176
+ {
177
+ type: 'list',
178
+ items: [
179
+ 'Выберите формат: укажите платформу и тип публикации в боковом меню.',
180
+ 'Загрузите фото: перетащите файл или используйте окно выбора для импорта.',
181
+ 'Настройте кадр: перемещайте фото внутри видимой области и используйте зум для точности.',
182
+ 'Мгновенный экспорт: нажмите кнопку скачать, чтобы получить готовое изображение.',
183
+ ],
184
+ },
185
+ {
186
+ type: 'title',
187
+ text: 'Конфиденциальность и локальная обработка',
188
+ level: 3,
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'Ваша конфиденциальность абсолютна. Этот инструмент обрабатывает изображения локально в браузере. Ваши фотографии никогда не загружаются на внешние серверы, что гарантирует полную безопасность и мгновенную скорость.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Профессиональная оптимизация контента',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'paragraph',
201
+ html: 'Профессиональная адаптация визуального контента — это прямая стратегия роста. Наше решение упрощает работу креаторам и менеджерам сообществ, делая каждый пост идеальным.',
202
+ },
203
+ ],
204
+ ui: {
205
+ sidebarTitle: 'Форматы сетей',
206
+ uploadTitle: 'Загрузить фото',
207
+ uploadSubtitle: 'Перетащите фото сюда или нажмите для выбора',
208
+ btnReset: 'Сбросить',
209
+ btnDownload: 'Скачать фото',
210
+ },
211
+ };