@jjlmoya/utils-social 1.13.0 → 1.15.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 +4 -2
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/ru.ts +1 -1
- package/src/env.d.ts +5 -0
- package/src/layouts/PreviewLayout.astro +7 -2
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +4 -14
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/pagespeed_best_practices.test.ts +198 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/redditFormatter/bibliography.astro +2 -10
- package/src/tool/redditFormatter/bibliography.ts +12 -0
- package/src/tool/redditFormatter/i18n/de.ts +3 -13
- package/src/tool/redditFormatter/i18n/en.ts +3 -13
- package/src/tool/redditFormatter/i18n/es.ts +3 -13
- package/src/tool/redditFormatter/i18n/fr.ts +5 -15
- package/src/tool/redditFormatter/i18n/id.ts +3 -13
- package/src/tool/redditFormatter/i18n/it.ts +3 -13
- package/src/tool/redditFormatter/i18n/ja.ts +3 -13
- package/src/tool/redditFormatter/i18n/ko.ts +3 -13
- package/src/tool/redditFormatter/i18n/nl.ts +3 -13
- package/src/tool/redditFormatter/i18n/pl.ts +7 -17
- package/src/tool/redditFormatter/i18n/pt.ts +3 -13
- package/src/tool/redditFormatter/i18n/ru.ts +5 -15
- package/src/tool/redditFormatter/i18n/sv.ts +3 -13
- package/src/tool/redditFormatter/i18n/tr.ts +3 -13
- package/src/tool/redditFormatter/i18n/zh.ts +4 -14
- package/src/tool/redditFormatter/seo.astro +2 -1
- package/src/tool/safeZones/bibliography.astro +2 -10
- package/src/tool/safeZones/bibliography.ts +20 -0
- package/src/tool/safeZones/component.astro +1 -1
- package/src/tool/safeZones/i18n/de.ts +5 -23
- package/src/tool/safeZones/i18n/en.ts +5 -23
- package/src/tool/safeZones/i18n/es.ts +3 -21
- package/src/tool/safeZones/i18n/fr.ts +14 -32
- package/src/tool/safeZones/i18n/id.ts +5 -23
- package/src/tool/safeZones/i18n/it.ts +9 -27
- package/src/tool/safeZones/i18n/ja.ts +3 -21
- package/src/tool/safeZones/i18n/ko.ts +3 -21
- package/src/tool/safeZones/i18n/nl.ts +5 -23
- package/src/tool/safeZones/i18n/pl.ts +10 -28
- package/src/tool/safeZones/i18n/pt.ts +5 -23
- package/src/tool/safeZones/i18n/ru.ts +12 -30
- package/src/tool/safeZones/i18n/sv.ts +5 -23
- package/src/tool/safeZones/i18n/tr.ts +3 -21
- package/src/tool/safeZones/i18n/zh.ts +7 -25
- package/src/tool/safeZones/seo.astro +2 -1
- package/src/tool/socialImageResizer/bibliography.astro +2 -10
- package/src/tool/socialImageResizer/bibliography.ts +12 -0
- package/src/tool/socialImageResizer/component.astro +2 -2
- package/src/tool/socialImageResizer/i18n/de.ts +8 -18
- package/src/tool/socialImageResizer/i18n/en.ts +11 -21
- package/src/tool/socialImageResizer/i18n/es.ts +10 -20
- package/src/tool/socialImageResizer/i18n/fr.ts +14 -24
- package/src/tool/socialImageResizer/i18n/id.ts +11 -21
- package/src/tool/socialImageResizer/i18n/it.ts +19 -29
- package/src/tool/socialImageResizer/i18n/ja.ts +10 -20
- package/src/tool/socialImageResizer/i18n/ko.ts +10 -20
- package/src/tool/socialImageResizer/i18n/nl.ts +11 -21
- package/src/tool/socialImageResizer/i18n/pl.ts +12 -22
- package/src/tool/socialImageResizer/i18n/pt.ts +11 -21
- package/src/tool/socialImageResizer/i18n/ru.ts +17 -27
- package/src/tool/socialImageResizer/i18n/sv.ts +11 -21
- package/src/tool/socialImageResizer/i18n/tr.ts +10 -20
- package/src/tool/socialImageResizer/i18n/zh.ts +10 -20
- package/src/tool/socialImageResizer/seo.astro +2 -1
- package/src/tool/socialValueCalculator/bibliography.astro +2 -10
- package/src/tool/socialValueCalculator/bibliography.ts +16 -0
- package/src/tool/socialValueCalculator/component.astro +1 -2
- package/src/tool/socialValueCalculator/i18n/de.ts +5 -19
- package/src/tool/socialValueCalculator/i18n/en.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/es.ts +5 -19
- package/src/tool/socialValueCalculator/i18n/fr.ts +9 -23
- package/src/tool/socialValueCalculator/i18n/id.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/it.ts +17 -31
- package/src/tool/socialValueCalculator/i18n/ja.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/ko.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/nl.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/pl.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/pt.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/ru.ts +10 -24
- package/src/tool/socialValueCalculator/i18n/sv.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/tr.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/zh.ts +7 -21
- package/src/tool/socialValueCalculator/seo.astro +2 -1
- package/src/tool/tinderPhotoOptimizer/bibliography.astro +2 -10
- package/src/tool/tinderPhotoOptimizer/bibliography.ts +12 -0
- package/src/tool/tinderPhotoOptimizer/component.astro +23 -6
- package/src/tool/tinderPhotoOptimizer/i18n/de.ts +6 -16
- package/src/tool/tinderPhotoOptimizer/i18n/en.ts +4 -14
- package/src/tool/tinderPhotoOptimizer/i18n/es.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/fr.ts +28 -38
- package/src/tool/tinderPhotoOptimizer/i18n/id.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/it.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ja.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ko.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/nl.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/pl.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/pt.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ru.ts +12 -22
- package/src/tool/tinderPhotoOptimizer/i18n/sv.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/tr.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/zh.ts +5 -15
- package/src/tool/tinderPhotoOptimizer/seo.astro +2 -1
- package/src/tool/youtubeThumbnail/bibliography.astro +2 -10
- package/src/tool/youtubeThumbnail/bibliography.ts +16 -0
- package/src/tool/youtubeThumbnail/component.astro +1 -0
- package/src/tool/youtubeThumbnail/i18n/de.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/en.ts +4 -18
- package/src/tool/youtubeThumbnail/i18n/es.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/fr.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/id.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/it.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ja.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ko.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/nl.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/pl.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/pt.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ru.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/sv.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/tr.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/zh.ts +5 -19
- package/src/tool/youtubeThumbnail/seo.astro +2 -1
- package/src/tool/youtubeThumbnailPreviewer/bibliography.astro +2 -10
- package/src/tool/youtubeThumbnailPreviewer/bibliography.ts +16 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/de.ts +11 -25
- package/src/tool/youtubeThumbnailPreviewer/i18n/en.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/es.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/fr.ts +12 -26
- package/src/tool/youtubeThumbnailPreviewer/i18n/id.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/it.ts +24 -38
- package/src/tool/youtubeThumbnailPreviewer/i18n/ja.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/ko.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/nl.ts +7 -21
- package/src/tool/youtubeThumbnailPreviewer/i18n/pl.ts +10 -24
- package/src/tool/youtubeThumbnailPreviewer/i18n/pt.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/ru.ts +14 -28
- package/src/tool/youtubeThumbnailPreviewer/i18n/sv.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/tr.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/zh.ts +13 -27
- package/src/tool/youtubeThumbnailPreviewer/seo.astro +2 -1
- package/src/types.ts +0 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialImageResizerUI } from '../ui';
|
|
@@ -36,7 +37,7 @@ const howToData = [
|
|
|
36
37
|
},
|
|
37
38
|
{
|
|
38
39
|
name: 'Настройте и скачайте',
|
|
39
|
-
text: 'Отредактируйте положение фото перетаскиванием и используйте зум для идеальной обрезки. По завершении нажмите
|
|
40
|
+
text: 'Отредактируйте положение фото перетаскиванием и используйте зум для идеальной обрезки. По завершении нажмите \"Скачать\".',
|
|
40
41
|
},
|
|
41
42
|
];
|
|
42
43
|
|
|
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
78
79
|
slug,
|
|
79
80
|
title,
|
|
80
81
|
description,
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
],
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliography,
|
|
94
84
|
howTo: howToData,
|
|
95
85
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
86
|
seo: [
|
|
@@ -101,11 +91,11 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
101
91
|
},
|
|
102
92
|
{
|
|
103
93
|
type: 'paragraph',
|
|
104
|
-
html: 'В современной цифровой экосистеме первое впечатление строится на визуале. Каждая социальная сеть работает на основе специфических алгоритмов, которые отдают приоритет контенту, нативно адаптированному под его пропорции. Наш инструмент
|
|
94
|
+
html: 'В современной цифровой экосистеме первое впечатление строится на визуале. Каждая социальная сеть работает на основе специфических алгоритмов, которые отдают приоритет контенту, нативно адаптированному под его пропорции. Наш инструмент - это не просто техническое средство, а ваш союзник в том, чтобы сообщение дошло до аудитории без нежелательных обрезок и потери качества.',
|
|
105
95
|
},
|
|
106
96
|
{
|
|
107
97
|
type: 'paragraph',
|
|
108
|
-
html: 'Нужно ли вам превратить пейзажное фото в эффектный вертикальный формат для Instagram Stories или адаптировать дизайн под сложный баннер YouTube
|
|
98
|
+
html: 'Нужно ли вам превратить пейзажное фото в эффектный вертикальный формат для Instagram Stories или адаптировать дизайн под сложный баннер YouTube - наше приложение использует систему умной обрезки, позволяющую точно позиционировать и масштабировать изображение прямо в браузере.',
|
|
109
99
|
},
|
|
110
100
|
{
|
|
111
101
|
type: 'title',
|
|
@@ -115,13 +105,13 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
115
105
|
{
|
|
116
106
|
type: 'grid',
|
|
117
107
|
columns: [
|
|
118
|
-
{ title: 'Instagram
|
|
119
|
-
{ title: 'Instagram
|
|
120
|
-
{ title: 'TikTok / Reels
|
|
121
|
-
{ title: 'YouTube
|
|
122
|
-
{ title: 'YouTube
|
|
123
|
-
{ title: 'X (Twitter)
|
|
124
|
-
{ title: 'LinkedIn
|
|
108
|
+
{ title: 'Instagram: квадратный пост', body: '1080 × 1080 px · Соотношение 1:1' },
|
|
109
|
+
{ title: 'Instagram: вертикальный пост', body: '1080 × 1350 px · Соотношение 4:5' },
|
|
110
|
+
{ title: 'TikTok / Reels: вертикаль', body: '1080 × 1920 px · Соотношение 9:16' },
|
|
111
|
+
{ title: 'YouTube: миниатюра', body: '1280 × 720 px · Соотношение 16:9' },
|
|
112
|
+
{ title: 'YouTube: баннер канала', body: '2560 × 1440 px · Соотношение 16:9' },
|
|
113
|
+
{ title: 'X (Twitter): стандартный пост', body: '1200 × 675 px · Соотношение 16:9' },
|
|
114
|
+
{ title: 'LinkedIn: обложка профиля', body: '1584 × 396 px · Соотношение 4:1' },
|
|
125
115
|
],
|
|
126
116
|
},
|
|
127
117
|
{
|
|
@@ -137,11 +127,11 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
137
127
|
},
|
|
138
128
|
{
|
|
139
129
|
title: 'Визуальный отклик',
|
|
140
|
-
body: 'От миниатюр до баннеров
|
|
130
|
+
body: 'От миниатюр до баннеров - каждый графический элемент влияет на CTR. Точная обрезка гарантирует, что тексты и ключевые детали всегда будут читаемы.',
|
|
141
131
|
},
|
|
142
132
|
{
|
|
143
133
|
title: 'Профессиональный брендинг',
|
|
144
|
-
body: 'В деловых сетях вроде LinkedIn четкость
|
|
134
|
+
body: 'В деловых сетях вроде LinkedIn четкость - это авторитет. Обложки требуют специфических пропорций, чтобы не выглядеть размытыми на экранах с высокой плотностью пикселей.',
|
|
145
135
|
},
|
|
146
136
|
],
|
|
147
137
|
},
|
|
@@ -152,7 +142,7 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
152
142
|
},
|
|
153
143
|
{
|
|
154
144
|
type: 'paragraph',
|
|
155
|
-
html: 'Соотношение сторон
|
|
145
|
+
html: 'Соотношение сторон - это пропорциональная связь между шириной и высотой изображения. Игнорирование этого заставляет платформы применять зум или добавлять черные полосы, что портит эстетику и снижает охваты.',
|
|
156
146
|
},
|
|
157
147
|
{
|
|
158
148
|
type: 'list',
|
|
@@ -198,7 +188,7 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
198
188
|
},
|
|
199
189
|
{
|
|
200
190
|
type: 'paragraph',
|
|
201
|
-
html: 'Профессиональная адаптация визуального контента
|
|
191
|
+
html: 'Профессиональная адаптация визуального контента - это прямая стратегия роста. Наше решение упрощает работу креаторам и менеджерам сообществ, делая каждый пост идеальным.',
|
|
202
192
|
},
|
|
203
193
|
],
|
|
204
194
|
ui: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialImageResizerUI } from '../ui';
|
|
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
78
79
|
slug,
|
|
79
80
|
title,
|
|
80
81
|
description,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
bibliographyTitle: 'Referenser',
|
|
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: Guide för bildstorlekar på sociala medier 2026',
|
|
91
|
-
url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
|
|
92
|
-
},
|
|
93
|
-
],
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliography,
|
|
94
84
|
howTo: howToData,
|
|
95
85
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
86
|
seo: [
|
|
@@ -101,7 +91,7 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
101
91
|
},
|
|
102
92
|
{
|
|
103
93
|
type: 'paragraph',
|
|
104
|
-
html: 'I dagens digitala ekosystem är det första intrycket visuellt. Varje socialt nätverk arbetar under specifika algoritmer som prioriterar innehåll som är inbyggt anpassat till dess proportioner. Vår bildstorleksändrare för sociala medier är inte bara ett tekniskt verktyg
|
|
94
|
+
html: 'I dagens digitala ekosystem är det första intrycket visuellt. Varje socialt nätverk arbetar under specifika algoritmer som prioriterar innehåll som är inbyggt anpassat till dess proportioner. Vår bildstorleksändrare för sociala medier är inte bara ett tekniskt verktyg - det är din partner för att säkerställa att ditt budskap når fram utan oönskad beskärning eller kvalitetsförlust.',
|
|
105
95
|
},
|
|
106
96
|
{
|
|
107
97
|
type: 'paragraph',
|
|
@@ -115,13 +105,13 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
115
105
|
{
|
|
116
106
|
type: 'grid',
|
|
117
107
|
columns: [
|
|
118
|
-
{ title: 'Instagram
|
|
119
|
-
{ title: 'Instagram
|
|
120
|
-
{ title: 'TikTok / Reels
|
|
121
|
-
{ title: 'YouTube
|
|
122
|
-
{ title: 'YouTube
|
|
123
|
-
{ title: 'X (Twitter)
|
|
124
|
-
{ title: 'LinkedIn
|
|
108
|
+
{ title: 'Instagram: Kvadratiskt inlägg', body: '1080 × 1080 px · Ratio 1:1' },
|
|
109
|
+
{ title: 'Instagram: Vertikalt inlägg', body: '1080 × 1350 px · Ratio 4:5' },
|
|
110
|
+
{ title: 'TikTok / Reels: Vertikalt', body: '1080 × 1920 px · Ratio 9:16' },
|
|
111
|
+
{ title: 'YouTube: Miniatyrbild', body: '1280 × 720 px · Ratio 16:9' },
|
|
112
|
+
{ title: 'YouTube: Kanalbanner', body: '2560 × 1440 px · Ratio 16:9' },
|
|
113
|
+
{ title: 'X (Twitter): Standardinlägg', body: '1200 × 675 px · Ratio 16:9' },
|
|
114
|
+
{ title: 'LinkedIn: Profilomslag', body: '1584 × 396 px · Ratio 4:1' },
|
|
125
115
|
],
|
|
126
116
|
},
|
|
127
117
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialImageResizerUI } from '../ui';
|
|
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
78
79
|
slug,
|
|
79
80
|
title,
|
|
80
81
|
description,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
bibliographyTitle: 'Referanslar',
|
|
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: Sosyal Medya Resim Boyutları Kılavuzu 2026',
|
|
91
|
-
url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
|
|
92
|
-
},
|
|
93
|
-
],
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliography,
|
|
94
84
|
howTo: howToData,
|
|
95
85
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
86
|
seo: [
|
|
@@ -115,13 +105,13 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
115
105
|
{
|
|
116
106
|
type: 'grid',
|
|
117
107
|
columns: [
|
|
118
|
-
{ title: 'Instagram
|
|
119
|
-
{ title: 'Instagram
|
|
120
|
-
{ title: 'TikTok / Reels
|
|
121
|
-
{ title: 'YouTube
|
|
122
|
-
{ title: 'YouTube
|
|
123
|
-
{ title: 'X (Twitter)
|
|
124
|
-
{ title: 'LinkedIn
|
|
108
|
+
{ title: 'Instagram: Kare Gönderi', body: '1080 × 1080 px · Oran 1:1' },
|
|
109
|
+
{ title: 'Instagram: Dikey Gönderi', body: '1080 × 1350 px · Oran 4:5' },
|
|
110
|
+
{ title: 'TikTok / Reels: Dikey', body: '1080 × 1920 px · Oran 9:16' },
|
|
111
|
+
{ title: 'YouTube: Küçük Resim', body: '1280 × 720 px · Oran 16:9' },
|
|
112
|
+
{ title: 'YouTube: Kanal Banner\'ı', body: '2560 × 1440 px · Oran 16:9' },
|
|
113
|
+
{ title: 'X (Twitter): Standart Gönderi', body: '1200 × 675 px · Oran 16:9' },
|
|
114
|
+
{ title: 'LinkedIn: Profil Kapağı', body: '1584 × 396 px · Oran 4:1' },
|
|
125
115
|
],
|
|
126
116
|
},
|
|
127
117
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialImageResizerUI } from '../ui';
|
|
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
78
79
|
slug,
|
|
79
80
|
title,
|
|
80
81
|
description,
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
],
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliography,
|
|
94
84
|
howTo: howToData,
|
|
95
85
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
86
|
seo: [
|
|
@@ -115,13 +105,13 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
|
|
|
115
105
|
{
|
|
116
106
|
type: 'grid',
|
|
117
107
|
columns: [
|
|
118
|
-
{ title: 'Instagram
|
|
119
|
-
{ title: 'Instagram
|
|
120
|
-
{ title: 'TikTok / Reels
|
|
121
|
-
{ title: 'YouTube
|
|
122
|
-
{ title: 'YouTube
|
|
123
|
-
{ title: 'X (Twitter)
|
|
124
|
-
{ title: 'LinkedIn
|
|
108
|
+
{ title: 'Instagram: 正方形帖子', body: '1080 × 1080 px · 比例 1:1' },
|
|
109
|
+
{ title: 'Instagram: 垂直帖子', body: '1080 × 1350 px · 比例 4:5' },
|
|
110
|
+
{ title: 'TikTok / Reels: 垂直', body: '1080 × 1920 px · 比例 9:16' },
|
|
111
|
+
{ title: 'YouTube: 缩略图', body: '1280 × 720 px · 比例 16:9' },
|
|
112
|
+
{ title: 'YouTube: 频道横幅', body: '2560 × 1440 px · 比例 16:9' },
|
|
113
|
+
{ title: 'X (Twitter): 标准帖子', body: '1200 × 675 px · 比例 16:9' },
|
|
114
|
+
{ title: 'LinkedIn: 个人资料封面', body: '1584 × 396 px · 比例 4:1' },
|
|
125
115
|
],
|
|
126
116
|
},
|
|
127
117
|
{
|
|
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
|
|
|
11
11
|
const content = await socialImageResizer.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
4
|
-
import type { KnownLocale } from '../../types';
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
locale?: KnownLocale;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await socialValueCalculator.i18n[locale]?.();
|
|
3
|
+
import { bibliography } from './bibliography';
|
|
12
4
|
---
|
|
13
5
|
|
|
14
|
-
|
|
6
|
+
<SharedBibliography links={bibliography} />
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
{
|
|
5
|
+
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
6
|
+
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'HypeAuditor: TikTok & Instagram Engagement Report',
|
|
10
|
+
url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'Social Blade: Social Media Statistics',
|
|
14
|
+
url: 'https://socialblade.com/',
|
|
15
|
+
},
|
|
16
|
+
];
|
|
@@ -248,8 +248,7 @@ const ICON_INFO = `<svg viewBox="0 0 24 24" fill="currentColor" width="16" heigh
|
|
|
248
248
|
els.emptyState.classList.add('svc-hidden');
|
|
249
249
|
els.results.classList.remove('svc-hidden');
|
|
250
250
|
els.results.classList.remove('svc-fadein');
|
|
251
|
-
|
|
252
|
-
els.results.classList.add('svc-fadein');
|
|
251
|
+
requestAnimationFrame(() => els.results.classList.add('svc-fadein'));
|
|
253
252
|
}
|
|
254
253
|
|
|
255
254
|
function calculate() {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialValueCalculatorUI } from '../ui';
|
|
@@ -21,7 +22,7 @@ const faqData = [
|
|
|
21
22
|
{
|
|
22
23
|
question: 'Was ist eine gute Engagement-Rate, um mehr verlangen zu können?',
|
|
23
24
|
answer:
|
|
24
|
-
'Im Allgemeinen gilt ein Engagement von über 3 % als gesund. Konten mit mehr als 10 % Engagement gelten als
|
|
25
|
+
'Im Allgemeinen gilt ein Engagement von über 3 % als gesund. Konten mit mehr als 10 % Engagement gelten als \"Premium-Profile\" und können einen deutlichen Aufschlag verlangen.',
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
28
|
question: 'Beeinflusst die Nische den Preis wirklich so stark?',
|
|
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Quellen & Marktstudien',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
96
|
-
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'HypeAuditor: TikTok & Instagram Engagement Report',
|
|
100
|
-
url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Social Blade: Social Media Statistiken',
|
|
104
|
-
url: 'https://socialblade.com/',
|
|
105
|
-
},
|
|
106
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
107
93
|
howTo: howToData,
|
|
108
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
109
95
|
seo: [
|
|
@@ -145,7 +131,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
145
131
|
},
|
|
146
132
|
{
|
|
147
133
|
type: 'card',
|
|
148
|
-
title: '15
|
|
134
|
+
title: '15€ bis 50€',
|
|
149
135
|
html: '<p>Durchschnittlicher CPM in wertvollen Nischen</p>',
|
|
150
136
|
},
|
|
151
137
|
],
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialValueCalculatorUI } from '../ui';
|
|
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Sources & Market Studies',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
96
|
-
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'HypeAuditor: TikTok & Instagram Engagement Report',
|
|
100
|
-
url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Social Blade: Social Media Statistics',
|
|
104
|
-
url: 'https://socialblade.com/',
|
|
105
|
-
},
|
|
106
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
107
93
|
howTo: howToData,
|
|
108
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
109
95
|
seo: [
|
|
@@ -145,7 +131,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
145
131
|
},
|
|
146
132
|
{
|
|
147
133
|
type: 'card',
|
|
148
|
-
title: '$15
|
|
134
|
+
title: '$15 to $50',
|
|
149
135
|
html: '<p>Average CPM in high-value niches (stable)</p>',
|
|
150
136
|
},
|
|
151
137
|
],
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialValueCalculatorUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'calculadora-valor-cuenta-redes-sociales';
|
|
6
|
-
const title = 'Calculadora de Valor de Cuenta TikTok & Instagram
|
|
7
|
+
const title = 'Calculadora de Valor de Cuenta TikTok & Instagram: Precios';
|
|
7
8
|
const description =
|
|
8
9
|
'Descubre cuánto cobrar por tus publicaciones patrocinadas. Nuestra calculadora analiza seguidores, engagement y nicho para darte un valor de mercado justo.';
|
|
9
10
|
|
|
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Fuentes y Estudios de Mercado',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
96
|
-
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'HypeAuditor: Reporte de Engagement en TikTok e Instagram',
|
|
100
|
-
url: 'https://hypeauditor.com/es/free-tools/tiktok-engagement-calculator/',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Social Blade: Estadísticas de Redes Sociales',
|
|
104
|
-
url: 'https://socialblade.com/',
|
|
105
|
-
},
|
|
106
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
107
93
|
howTo: howToData,
|
|
108
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
109
95
|
seo: [
|
|
@@ -145,7 +131,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
145
131
|
},
|
|
146
132
|
{
|
|
147
133
|
type: 'card',
|
|
148
|
-
title: '15
|
|
134
|
+
title: '15 € a 50 €',
|
|
149
135
|
html: '<p>CPM promedio en nichos de alto valor (estable)</p>',
|
|
150
136
|
},
|
|
151
137
|
],
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialValueCalculatorUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'calculateur-valeur-compte-reseaux-sociaux';
|
|
6
|
-
const title = 'Calculateur de Valeur de Compte TikTok & Instagram
|
|
7
|
+
const title = 'Calculateur de Valeur de Compte TikTok & Instagram: Tarifs';
|
|
7
8
|
const description =
|
|
8
9
|
"Découvrez combien facturer pour vos publications sponsorisées. Notre calculateur analyse les abonnés, l'engagement et le créneau pour vous donner une valeur de marché juste.";
|
|
9
10
|
|
|
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Sources et Études de Marché',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
96
|
-
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: "HypeAuditor: Rapport d'engagement TikTok & Instagram",
|
|
100
|
-
url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Social Blade: Statistiques des réseaux sociaux',
|
|
104
|
-
url: 'https://socialblade.com/',
|
|
105
|
-
},
|
|
106
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
107
93
|
howTo: howToData,
|
|
108
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
109
95
|
seo: [
|
|
@@ -114,12 +100,12 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
114
100
|
},
|
|
115
101
|
{
|
|
116
102
|
type: 'title',
|
|
117
|
-
text: 'Calculateur de Valeur de Compte
|
|
103
|
+
text: 'Calculateur de Valeur de Compte: Combien facturer une promotion sur TikTok ou Instagram ?',
|
|
118
104
|
level: 2,
|
|
119
105
|
},
|
|
120
106
|
{
|
|
121
107
|
type: 'paragraph',
|
|
122
|
-
html: 'Si vous êtes créateur de contenu, influenceur ou simplement une communauté active sur les réseaux sociaux, vous vous êtes probablement demandé à un moment
|
|
108
|
+
html: 'Si vous êtes créateur de contenu, influenceur ou simplement une communauté active sur les réseaux sociaux, vous vous êtes probablement demandé à un moment: <strong>combien vaut vraiment mon compte ?</strong> ou <strong>combien devrais-je demander pour une collaboration avec une marque ?</strong>.',
|
|
123
109
|
},
|
|
124
110
|
{
|
|
125
111
|
type: 'title',
|
|
@@ -145,7 +131,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
145
131
|
},
|
|
146
132
|
{
|
|
147
133
|
type: 'card',
|
|
148
|
-
title: '15
|
|
134
|
+
title: '15 € à 50 €',
|
|
149
135
|
html: '<p>CPM moyen dans les créneaux de haute valeur (stable)</p>',
|
|
150
136
|
},
|
|
151
137
|
],
|
|
@@ -207,7 +193,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
207
193
|
},
|
|
208
194
|
{
|
|
209
195
|
type: 'title',
|
|
210
|
-
text: "TikTok vs Instagram
|
|
196
|
+
text: "TikTok vs Instagram: Où est l'argent ?",
|
|
211
197
|
level: 2,
|
|
212
198
|
},
|
|
213
199
|
{
|
|
@@ -241,7 +227,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
241
227
|
{
|
|
242
228
|
type: 'tip',
|
|
243
229
|
title: 'Modèle de négociation',
|
|
244
|
-
html: "<p>Bonjour [Nom de la Marque], merci de m'avoir contacté. En me basant sur mes métriques actuelles de portée (moyenne de [X] vues) et mon taux d'engagement de [X]%, mon tarif pour une intégration dans un [Reel/TikTok] est de [Prix €]. Cela inclut
|
|
230
|
+
html: "<p>Bonjour [Nom de la Marque], merci de m'avoir contacté. En me basant sur mes métriques actuelles de portée (moyenne de [X] vues) et mon taux d'engagement de [X]%, mon tarif pour une intégration dans un [Reel/TikTok] est de [Prix €]. Cela inclut: scénarisation et production vidéo, 1 lien en bio 24h, 2 Stories d'amplification, droits d'utilisation 30 jours.</p>",
|
|
245
231
|
},
|
|
246
232
|
{
|
|
247
233
|
type: 'title',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { SocialValueCalculatorUI } from '../ui';
|
|
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Sumber & Studi Pasar',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Influencer Marketing Hub: Influencer Rates 2026',
|
|
96
|
-
url: 'https://influencermarketinghub.com/influencer-rates/',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'HypeAuditor: Laporan Keterlibatan TikTok & Instagram',
|
|
100
|
-
url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Social Blade: Statistik Media Sosial',
|
|
104
|
-
url: 'https://socialblade.com/',
|
|
105
|
-
},
|
|
106
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
107
93
|
howTo: howToData,
|
|
108
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
109
95
|
seo: [
|
|
@@ -145,7 +131,7 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
|
|
|
145
131
|
},
|
|
146
132
|
{
|
|
147
133
|
type: 'card',
|
|
148
|
-
title: 'Rp15rb
|
|
134
|
+
title: 'Rp15rb hingga Rp50rb',
|
|
149
135
|
html: '<p>Rata-rata CPM di ceruk bernilai tinggi (per 1.000 tayangan)</p>',
|
|
150
136
|
},
|
|
151
137
|
],
|