@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,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 = 'social-safe-zones';
6
+ const title = '소셜 세이프 존: 틱톡, 릴스 및 쇼츠용 동영상 시뮬레이터';
7
+ const description =
8
+ '실제 소셜 미디어 인터페이스를 통해 이미지와 동영상을 미리 확인하세요. 콘텐츠가 항상 잘 보이도록 하고 의도치 않은 잘림을 방지하세요.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: "소셜 미디어의 '세이프 존(Safe Zone)'이란 무엇인가요?",
13
+ answer:
14
+ "사용자 이름, 설명, 상호작용 버튼(좋아요, 공유)과 같은 인터페이스 요소에 가려지거나 일부 기기에서 적용되는 자동 잘림 현상 없이 콘텐츠가 안전하게 보일 수 있는 화면 영역을 말합니다.",
15
+ },
16
+ {
17
+ question: '왜 내 틱톡 영상의 상하단이 잘려 보이나요?',
18
+ answer:
19
+ '틱톡은 9:16 화면비를 사용합니다. 동영상이 이보다 가로로 넓으면 앱이 화면을 채우기 위해 확대하여 잘림이 발생합니다. 또한 하단 인터페이스가 영상의 일부를 가리므로 중요한 요소는 중앙에 배치해야 합니다.',
20
+ },
21
+ {
22
+ question: '인스타그램 릴스와 유튜브 쇼츠의 세이프 존은 동일한가요?',
23
+ answer:
24
+ '매우 유사하지만 동일하지는 않습니다. 유튜브 쇼츠 버튼은 릴스와 위치가 다릅니다. 저희 도구를 사용하면 플랫폼 간에 전환하여 모든 플랫폼에서 디자인을 검증할 수 있습니다.',
25
+ },
26
+ {
27
+ question: '오른쪽 하단 모서리에 텍스트를 넣으면 어떻게 되나요?',
28
+ answer:
29
+ '그곳에는 프로필, 하트, 댓글 아이콘이 위치하므로 텍스트가 보이지 않거나 읽기 매우 어려워질 가능성이 높습니다. 이상적으로는 텍스트와 얼굴을 중앙 상단 영역(세이프 존)에 배치하는 것이 좋습니다.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '이미지 또는 동영상 불러오기',
36
+ text: '미리 확인하고 싶은 파일을 업로드하세요. 프로세싱은 로컬에서 비공개로 이루어지며 인터넷으로 전송되지 않습니다.',
37
+ },
38
+ {
39
+ name: '플랫폼 선택',
40
+ text: '틱톡, 인스타그램 릴스, 또는 유튜브 쇼츠 중에서 선택하여 해당 인터페이스 오버레이를 활성화하세요.',
41
+ },
42
+ {
43
+ name: '가독성 확인',
44
+ text: '텍스트, 자막 또는 주요 브랜드 요소가 소셜 네트워크 아이콘에 가려지지 않는지 확인하세요.',
45
+ },
46
+ {
47
+ name: '조정 및 내보내기',
48
+ text: '가려지는 부분이 있다면 원본 동영상 편집기에서 요소를 이동하고 완벽하게 맞을 때까지 다시 테스트하세요.',
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: 'KRW' },
83
+ inLanguage: 'ko',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<SafeZonesUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: '자주 묻는 질문',
91
+ faq: faqData,
92
+ bibliographyTitle: '공식 플랫폼 문서',
93
+ bibliography: [
94
+ {
95
+ name: '틱톡 크리에이터 포털: 동영상 최적화 및 세이프 존',
96
+ url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
+ },
98
+ {
99
+ name: '인스타그램 비즈니스: 릴스를 위한 모범 사례',
100
+ url: 'https://business.instagram.com/creators/reels-best-practices',
101
+ },
102
+ {
103
+ name: '유튜브 고객센터: 유튜브 쇼츠 만들기',
104
+ url: 'https://support.google.com/youtube/answer/10343433',
105
+ },
106
+ {
107
+ name: '메타 크리에이터: 동영상의 세이프 존 및 화면비',
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: '세이프 존 마스터 가이드: 릴스, 틱톡 및 쇼츠 최적화하기',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '세로형 콘텐츠가 넘쳐나는 세상에서 첫인상은 기술적인 부분에서 결정됩니다. 제작자들이 하는 가장 큰 실수는 자신의 <strong>동영상이나 이미지</strong>가 플랫폼 고유의 인터페이스와 어떻게 상호작용하는지 무시하는 것입니다. 각 소셜 네트워크(틱톡, 인스타그램 릴스 및 유튜브 쇼츠)는 버튼, 텍스트, 프로필 레이어를 겹쳐서 표시하며, 이는 구성의 시각적 효과를 무효화할 수 있습니다.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '이 도구를 사용하면 미디어 파일을 불러와서 프레임의 어느 부분이 인터페이스에 의해 가려지는지 정확하게 확인할 수 있습니다. 이는 단순히 <strong>자막</strong>의 문제가 아닙니다. 동영상의 얼굴, 제품 또는 주요 동작이 "좋아요" 버튼이나 긴 설명 아래에 묻히지 않도록 하는 것입니다.',
126
+ },
127
+ {
128
+ type: 'grid',
129
+ columns: [
130
+ {
131
+ type: 'card',
132
+ title: '틱톡: 가장 침습적인 인터페이스',
133
+ html: '<p>틱톡은 가장 밀도 높은 인터페이스를 가지고 있습니다. 오른쪽에는 너비의 약 15%를 차지하는 아이콘 열이 있습니다. 하단에는 설명이 4~5줄까지 늘어날 수 있어 아래에서 화면의 거의 1/3을 가립니다.</p><ul><li><strong>하단 마진:</strong> 설명 텍스트와 사용자 이름을 피하기 위해 하단 250px를 비워두세요.</li><li><strong>오른쪽 마진:</strong> 오른쪽 끝에서 100px 이내에는 텍스트를 배치하지 마세요.</li><li><strong>상단:</strong> "팔로잉" 및 "추천" 버튼이 상단 중앙 띠를 차지합니다.</li></ul>',
134
+ },
135
+ {
136
+ type: 'card',
137
+ title: '인스타그램 릴스: 피드 요인',
138
+ html: '<p>틱톡과 달리 인스타그램 릴스는 메인 피드에서 볼 때 동영상을 4:5 비율로 자릅니다. 즉, 9:16 동영상의 상하단 15%에 중요한 정보를 배치하면 피드에서는 보이지 않게 됩니다.</p><ul><li><strong>4:5 규칙:</strong> 피드 가시성을 위해 제목과 핵심 요소를 중앙 영역에 유지하세요.</li><li><strong>인터페이스:</strong> 릴스 아이콘은 틱톡보다 덜 침습적이며 측면 마진이 약간 더 여유롭습니다.</li><li><strong>오디오 버튼:</strong> 오른쪽 하단에 위치하며, 보통 틱톡의 회전하는 디스크보다 훨씬 적은 영역을 가립니다.</li></ul>',
139
+ },
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '유튜브 쇼츠: 오른쪽을 주의하세요',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '유튜브 쇼츠는 비대칭 인터페이스를 가지고 있습니다. 구독 버튼은 매우 눈에 띄고 단색(주로 검정 또는 흰색)으로 되어 있어 오른쪽 하단에 중요한 시각적 사각지대를 만듭니다.',
150
+ },
151
+ {
152
+ type: 'list',
153
+ items: [
154
+ '<strong>오른쪽 마진:</strong> 오른쪽 하단 20% 영역에는 텍스트나 중요한 요소를 배치하지 마세요.',
155
+ '<strong>하단 마진:</strong> 설명 텍스트와 사용자 이름을 피하기 위해 하단 150px를 비워두세요.',
156
+ '<strong>상단:</strong> 구독 및 기타 버튼들이 상단 중앙 띠를 차지합니다.',
157
+ ],
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: '세어로형 디자인에 대한 핵심 질문',
162
+ level: 2,
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: '주요 요소(얼굴, 텍스트, 제품)를 어디에 배치해야 하나요?',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: '주요 동작을 위한 "골든 존"은 동영상의 중앙 1/3 지역입니다. 인물을 촬영하는 경우 눈과 입이 이 구역 안에 있도록 하세요. 중요한 그래픽 요소는 하단 설명을 피하기 위해 기하학적 중심에서 약간 위로 이동시켜야 합니다.',
172
+ },
173
+ {
174
+ type: 'title',
175
+ text: '업로드한 후 동영상이 왜 흐릿하게 보이나요?',
176
+ level: 3,
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: '대부분 품질 문제가 아니라 스케일링 문제입니다. 항상 1080x1920 해상도에서 30 또는 60fps로 녹화하세요. 무거운 효과를 많이 사용하는 경우 4K는 피하세요. 플랫폼이 대용량 파일을 공격적으로 압축하기 때문입니다.',
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: '휴대전화 베젤은 어떤가요?',
185
+ level: 3,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '최신 휴대전화에는 화면에 노치나 카메라 구멍이 있다는 점을 기억하세요. 이 도구는 콘텐츠가 시계나 시스템 아이콘(배터리, 신호)과 충돌하지 않도록 상단 안전 마진을 포함하고 있습니다.',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: '바이럴 동영상의 해부학',
194
+ level: 2,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: '소셜 미디어를 위한 디자인은 단순한 미학적 요소가 아니라 <strong>사용성</strong>의 문제입니다. 플랫폼 아이콘 때문에 텍스트를 읽기 힘들다면 사용자는 바로 다음 영상으로 넘겨버릴 것입니다. 시각적 불편함이 있을 때 시청 유지 시간(Watch Time)은 급격히 떨어집니다.',
199
+ },
200
+ {
201
+ type: 'paragraph',
202
+ html: '예를 들어 유튜브 쇼츠의 경우 인터페이스가 비대칭입니다. 구독 버튼이 매우 명확합니다. 이 시뮬레이터를 사용하여 불투명도를 조정함으로써 색상 팔레트가 네이티브 UI 색상과 어떻게 상호작용하는지 이해할 수 있습니다.',
203
+ },
204
+ {
205
+ type: 'tip',
206
+ title: '크리에이티브 품질 관리 도구',
207
+ html: '<p>어떤 것도 우연에 맡기지 않는 크리에이터들을 위해 설계되었습니다.</p>',
208
+ },
209
+ ],
210
+ ui: {
211
+ labelConfig: '설정',
212
+ labelPlatform: '대상 플랫폼',
213
+ labelUpload: '콘텐츠 업로드',
214
+ uploadPrompt: '이미지 또는 동영상 선택',
215
+ uploadLink: '또는 예시 사용',
216
+ loadContent: '콘텐츠 불러오기',
217
+ labelOpacity: '인터페이스 투명도',
218
+ labelMask: '위험 지역 어둡게 표시',
219
+ labelGrid: '3등분 법칙',
220
+ btnReset: '캔버스 초기화',
221
+ bannerTiktok: '틱톡 9:16 시뮬레이션 중',
222
+ bannerReels: '인스타그램 릴스 9:16 시뮬레이션 중',
223
+ bannerShorts: '유튜브 쇼츠 9:16 시뮬레이션 중',
224
+ nameTiktok: '틱톡',
225
+ nameReels: '인스타 릴스',
226
+ nameShorts: '유튜브 쇼츠',
227
+ ttFollowing: '팔로잉',
228
+ ttForYou: '추천',
229
+ ttDescription: '콘텐츠 크리에이터를 위한 실제 인터페이스 디자인. #uxdesign #socialmedia',
230
+ ttAudio: 'jjlmoya - 원본 버전',
231
+ ttNavHome: '홈',
232
+ ttNavFriends: '친구',
233
+ ttNavInbox: '수신함',
234
+ ttNavProfile: '프로필',
235
+ reelsFollow: '팔로우',
236
+ reelsDescription: '이 인터페이스는 실제와 동일합니다. #reels #ux #simulator',
237
+ reelsAudio: 'Trending Music - 원본 오디오',
238
+ shortsSubscribe: '구독',
239
+ shortsDislike: '싫어요',
240
+ shortsShare: '공유',
241
+ shortsRemix: '리믹스',
242
+ shortsDescription: '쇼츠 실제 인터페이스 시뮬레이션! #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 = 'sociale-veilige-zones';
6
+ const title = 'Social Safe Zones: Videosimulator voor TikTok, Reels & Shorts';
7
+ const description =
8
+ 'Bekijk een voorbeeld van uw afbeeldingen en video\'s met de echte social media interface. Zorg ervoor dat uw content altijd zichtbaar is en voorkom dat deze per ongeluk wordt afgesneden.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: "Wat zijn 'Safe Zones' op sociale media?",
13
+ answer:
14
+ "Dit zijn de delen van het scherm waar content zichtbaar is zonder het risico dat deze wordt bedekt door interface-elementen, zoals de gebruikersnaam, beschrijving, interactieknoppen (like, delen) of automatische uitsneden die door sommige apparaten worden toegepast.",
15
+ },
16
+ {
17
+ question: 'Waarom lijkt mijn TikTok-video aan de boven- en onderkant afgesneden?',
18
+ answer:
19
+ 'TikTok gebruikt een aspectratio van 9:16. Als uw video breder is, zal de app inzoomen om het scherm te vullen, wat resulteert in uitsnijden. Bovendien bedekt de interface aan de onderkant een deel van de video, dus belangrijke elementen moeten gecentreerd worden.',
20
+ },
21
+ {
22
+ question: 'Is de safe zone hetzelfde voor Instagram Reels en YouTube Shorts?',
23
+ answer:
24
+ 'Ze lijken erg op elkaar maar zijn niet identiek. De knoppen van YouTube Shorts zijn anders gepositioneerd dan die van Reels. Met onze tool kunt u schakelen tussen platforms om uw ontwerp op alle platforms te verifiëren.',
25
+ },
26
+ {
27
+ question: 'Wat gebeurt er als ik tekst in de rechteronderhoek plaats?',
28
+ answer:
29
+ 'Deze zal waarschijnlijk onzichtbaar of erg moeilijk leesbaar zijn, omdat daar de iconen voor profiel, hartje en reacties staan. Idealiter houdt u tekst en gezichten in het midden-bovengedeelte (Safe Zone).',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Laad uw afbeelding of video',
36
+ text: 'Upload het bestand waarvan u een voorbeeld wilt zien. De verwerking is lokaal en privé — er wordt niets naar internet geüpload.',
37
+ },
38
+ {
39
+ name: 'Selecteer het platform',
40
+ text: 'Kies tussen TikTok, Instagram Reels of YouTube Shorts om de bijbehorende interface-overlay te activeren.',
41
+ },
42
+ {
43
+ name: 'Controleer leesbaarheid',
44
+ text: 'Controleer of teksten, ondertitels of belangrijke merkelementen worden bedekt door de iconen van het sociale netwerk.',
45
+ },
46
+ {
47
+ name: 'Pas aan en exporteer',
48
+ text: 'Als er iets verborgen is, verplaats het element dan in uw originele video-editor en test opnieuw totdat het perfect past.',
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: 'nl',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<SafeZonesUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Veelgestelde Vragen',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Officiële Platform Documentatie',
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: Best practices voor Reels',
100
+ url: 'https://business.instagram.com/creators/reels-best-practices',
101
+ },
102
+ {
103
+ name: 'YouTube Help: YouTube Shorts maken',
104
+ url: 'https://support.google.com/youtube/answer/10343433',
105
+ },
106
+ {
107
+ name: 'Meta for Creators: Veilige zones en aspectratio\'s voor video',
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: 'Master Gids voor Safe Zones: Optimaliseer uw Reels, TikToks en Shorts',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'In de verzadigde wereld van verticale content is de eerste indruk technisch. De grootste fout die makers maken is negeren hoe hun <strong>video of afbeelding</strong> reageert op de eigen interface van het platform. Elk sociaal netwerk (TikTok, Instagram Reels en YouTube Shorts) plaatst lagen knoppen, tekst en profielen over de video die de visuele impact van uw compositie teniet kunnen doen.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Met deze tool kunt u uw mediabestanden laden en precies zien welke delen van uw frame door de interface worden bedekt. Het gaat niet alleen om <strong>ondertitels</strong>; het gaat erom dat gezichten, producten of belangrijke acties in uw video niet worden bedolven onder een "Like"-knop of een lange beschrijving.',
126
+ },
127
+ {
128
+ type: 'grid',
129
+ columns: [
130
+ {
131
+ type: 'card',
132
+ title: 'TikTok: De meest invasieve interface',
133
+ html: '<p>TikTok heeft de drukste interface. Aan de rechterkant bevindt zich een kolom met iconen die ongeveer 15% van de breedte beslaat. Aan de onderkant kan de beschrijving tot 4 of 5 regels beslaan, waardoor bijna een derde van het scherm van onderaf wordt bedekt.</p><ul><li><strong>Ondermarge:</strong> Laat de laatste 250px vrij om de beschrijvingstekst en gebruikersnaam te vermijden.</li><li><strong>Rechtermarge:</strong> Plaats geen tekst binnen 100px van de rechterrand.</li><li><strong>Bovenkant:</strong> De knoppen "Volgend" en "Voor jou" beslaan de bovenste centrale strook.</li></ul>',
134
+ },
135
+ {
136
+ type: 'card',
137
+ title: 'IG Reels: De feed factor',
138
+ html: '<p>In tegenstelling doTikTok snijdt Instagram Reels de video bij tot een 4:5 formaat wanneer deze in de feed wordt bekeken. Dit betekent dat als u vitale informatie in de bovenste of onderste 15% van uw 9:16 video plaatst, deze verdwijnt in de feed.</p><ul><li><strong>De 4:5 regel:</strong> Houd titels en sleutelelementen in de centrale zone voor zichtbaarheid in de feed.</li><li><strong>Interface:</strong> Reels-iconen zijn subtieler dan die van TikTok, waardoor er iets meer ruimte is aan de zijkanten.</li><li><strong>Audioknop:</strong> Geplaatst in de rechteronderhoek, deze bedekt meestal veel minder dan de draaiende schijf van TikTok.</li></ul>',
139
+ },
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'YouTube Shorts: Let op de rechterkant',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'YouTube Shorts heeft een asymmetrische interface. De abonneerknop is zeer prominent en effen gekleurd (meestal zwart of wit), wat een belangrijke visuele dode hoek creëert in de rechteronderhoek.',
150
+ },
151
+ {
152
+ type: 'list',
153
+ items: [
154
+ '<strong>Rechtermarge:</strong> Plaats geen tekst of belangrijke elementen in de onderste 20% rechtsonder.',
155
+ '<strong>Ondermarge:</strong> Laat de laatste 150px vrij om de beschrijvingstekst en gebruikersnaam te vermijden.',
156
+ '<strong>Bovenkant:</strong> De knoppen voor abonneren en andere opties beslaan de bovenste centrale strook.',
157
+ ],
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Cruciale Vragen over Verticaal Ontwerp',
162
+ level: 2,
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: 'Waar plaats je sleutelelementen (gezichten, tekst, product)?',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: 'De "Gouden Zone" voor de belangrijkste actie is het middelste derde deel van de video. Als u een persoon filmt, zorg er dan voor dat hun ogen en mond zich in deze zone bevinden. Belangrijke grafische elementen moeten iets naar boven worden verschoven vanuit het geometrische midden om de beschrijving aan de onderkant te vermijden.',
172
+ },
173
+ {
174
+ type: 'title',
175
+ text: 'Waarom ziet mijn video er wazig uit na het uploaden?',
176
+ level: 3,
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: 'Het is vaak niet de kwaliteit maar de schaling. Neem altijd op in 1080x1920 bij 30 of 60 fps. Vermijd 4K als u veel zware effecten toepast, omdat platforms grote bestanden agressief comprimeren.',
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: 'Hoe zit het met de schermranden?',
185
+ level: 3,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: 'Houd er rekening mee dat moderne telefoons inkepingen (notches) of cameragat in het scherm hebben. Deze tool bevat een veiligheidsmarge aan de bovenkant zodat uw content niet botst met de klok of systeemiconen (batterij, signaal).',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: 'Anatomie van een Virale Video',
194
+ level: 2,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: 'Ontwerpen voor sociale media gaat niet alleen over esthetiek — het gaat over <strong>gebruiksvriendelijkheid</strong>. Als een gebruiker moeite moet doen om tekst te lezen omdat de iconen van het platform deze bedekken, zullen ze simpelweg naar de volgende video swipen. Retentie (kijkduur) daalt scherp als er visuele wrijving is.',
199
+ },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'In YouTube Shorts bijvoorbeeld is de interface asymmetrisch. De abonneerknop is zeer aanwezig. Door deze simulator te gebruiken, kunt u de transparantie aanpassen om te begrijpen hoe uw kleurenpalet reageert op de oorspronkelijke kleuren van de gebruikersinterface.',
203
+ },
204
+ {
205
+ type: 'tip',
206
+ title: 'Creatieve Kwaliteitscontrole Tool',
207
+ html: '<p>Ontworpen voor makers die niets aan het toeval overlaten.</p>',
208
+ },
209
+ ],
210
+ ui: {
211
+ labelConfig: 'Instellingen',
212
+ labelPlatform: 'Doelplatform',
213
+ labelUpload: 'Content Uploaden',
214
+ uploadPrompt: 'Selecteer afbeelding of video',
215
+ uploadLink: 'Of gebruik een voorbeeld',
216
+ loadContent: 'Laad uw content',
217
+ labelOpacity: 'Interface Reliëf',
218
+ labelMask: 'Grijze Kritieke Zones',
219
+ labelGrid: 'Regel van Derden',
220
+ btnReset: 'Canvas Herstellen',
221
+ bannerTiktok: 'TikTok 9:16 simuleren',
222
+ bannerReels: 'Instagram Reels 9:16 simuleren',
223
+ bannerShorts: 'YouTube Shorts 9:16 simuleren',
224
+ nameTiktok: 'TikTok',
225
+ nameReels: 'IG Reels',
226
+ nameShorts: 'YT Shorts',
227
+ ttFollowing: 'Volgend',
228
+ ttForYou: 'Voor jou',
229
+ ttDescription: 'Echt interface-ontwerp voor contentmakers. #uxdesign #socialmedia',
230
+ ttAudio: 'jjlmoya - Origineel geluid',
231
+ ttNavHome: 'Start',
232
+ ttNavFriends: 'Vrienden',
233
+ ttNavInbox: 'Inbox',
234
+ ttNavProfile: 'Profiel',
235
+ reelsFollow: 'Volgen',
236
+ reelsDescription: 'Deze interface is identiek aan de echte. #reels #ux #simulator',
237
+ reelsAudio: 'Trending Music - Originele audio',
238
+ shortsSubscribe: 'ABONNEREN',
239
+ shortsDislike: 'Niet leuk',
240
+ shortsShare: 'Delen',
241
+ shortsRemix: 'Remix',
242
+ shortsDescription: 'Echte interfaces simuleren voor Shorts! #youtube #shorts',
243
+ },
244
+ };