@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,207 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { YoutubeThumbnailUI } from '../ui';
4
+
5
+ const slug = 'ladda-ner-youtube-miniatyr-hd';
6
+ const title = 'YouTube Thumbnail Downloader (HD)';
7
+ const description =
8
+ 'Extrahera och ladda ner den ursprungliga miniatyrbilden från valfri YouTube-video i högsta upplösning och utan vattenstämplar med hjälp av enbart URL:en.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Vilken upplösning extraheras miniatyrerna i?',
13
+ answer:
14
+ "Verktyget försöker alltid hämta bilden i 'MaxRes'-upplösning (1280x720 eller 1920x1080), vilket är den originalkvalitet som laddats upp av videoskaparen. Om skaparen inte har laddat upp en miniatyrbild i HD kommer den automatiskt att visa nästa högsta tillgängliga upplösning.",
15
+ },
16
+ {
17
+ question: 'Vilka typer av länkar stöds?',
18
+ answer:
19
+ 'Den stöder traditionella youtube.com/watch-URL:er, korta youtu.be-länkar, mobila länkar och till och med YouTube Shorts-URL:er på ett sömlöst sätt.',
20
+ },
21
+ {
22
+ question: 'Är det lagligt att ladda ner YouTube-miniatyrer?',
23
+ answer:
24
+ 'Ja, nedladdning är helt laglig för personligt bruk, design, parodier och inspiration (Fair Use). Var försiktig om du tänker använda upphovsrättsskyddade miniatyrer för rent kommersiella ändamål; i dessa fall är det viktigt att kontrollera videons licens.',
25
+ },
26
+ {
27
+ question: 'Finns det någon daglig användningsgräns?',
28
+ answer:
29
+ 'Det finns inga månatliga eller dagliga gränser. Eftersom denna programvara körs på klientsidan genom att tolka URL-mönstret internt i din webbläsare, interagerar vi inte med traditionella restriktiva API:er.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Kopiera videons URL',
36
+ text: 'Gå till YouTube och kopiera länken till videon från webbläsarens adressfält eller via dela-knappen.',
37
+ },
38
+ {
39
+ name: 'Klistra in länken',
40
+ text: 'Ange URL:en i extraheringsfältet eller använd knappen för att klistra in från urklipp.',
41
+ },
42
+ {
43
+ name: 'Välj kvalitet',
44
+ text: 'Verktyget visar alla tillgängliga upplösningar, från högsta kvalitet (1080p) till den lägsta.',
45
+ },
46
+ {
47
+ name: 'Ladda ner bilden',
48
+ text: 'Klicka på nedladdningsknappen för att spara miniatyrbilden på din enhet.',
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: 'SEK' },
83
+ inLanguage: 'sv',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Vanliga frågor',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Dokumentation och referenser',
93
+ bibliography: [
94
+ {
95
+ name: 'YouTube-hjälp: Lägg till en anpassad videominiatyr',
96
+ url: 'https://support.google.com/youtube/answer/72431',
97
+ },
98
+ {
99
+ name: 'YouTube Creator Academy: Så skapar du effektiva miniatyrer',
100
+ url: 'https://creatoracademy.youtube.com/',
101
+ },
102
+ {
103
+ name: 'Google Developers: YouTube Data API — Thumbnails',
104
+ url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: 'Ladda ner YouTube-miniatyrer i HD gratis',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Om du behöver <strong>ladda ner miniatyrbilden från en YouTube-video</strong> i dess originalstorlek eller högsta kvalitet (Full HD eller 4K), är detta kostnadsfria verktyg den snabbaste lösningen. Du kan hämta omslagsbilden från valfri kanal för att få inspiration, skapa dina egna designer eller använda den i presentationer.',
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: 'Extrahera omslagsbild utan program',
122
+ html: '<p>Du behöver inte installera någon programvara eller registrera dig. Det är bara att kopiera och klistra in videolänken så kan du <strong>spara YouTube-miniatyrbilden</strong> direkt på din dator eller mobil.</p>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Hur får man tag på miniatyrbilden från en YouTube-video?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Processen för att <strong>ta ut bilden från en YouTube-video</strong> är mycket enkel. Följ dessa steg för att få bilden på några sekunder:',
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ '<strong>1. Kopiera URL:en:</strong> Gå till YouTube och kopiera videolänken (antingen från webbläsarens adressfält eller via dela-knappen).',
137
+ '<strong>2. Klistra in länken:</strong> Ange URL:en i sökfältet i vår miniatyrextraherare.',
138
+ '<strong>3. Välj kvalitet:</strong> Vi visar alla tillgängliga upplösningar, från högsta kvalitet (1080p) till den lägsta (360p).',
139
+ '<strong>4. Ladda ner bilden:</strong> Klicka på nedladdningsknappen för att spara <i>thumbnailen</i> på din enhet.',
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Format och upplösningar som stöds',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'Att ladda ner omslag till YouTube-videor har aldrig varit enklare. Verktyget söker automatiskt efter den bästa möjliga bilden (känd som <strong>maxresdefault</strong>), vilket vanligtvis är designer som skapats i Photoshop av YouTubers. Om skaparen inte har laddat upp en HD-bild ger vi dig det näst bästa alternativet (<strong>hqdefault</strong> eller <strong>mqdefault</strong>).',
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Detta verktyg är perfekt för <i>Community Managers</i>, grafiska formgivare, innehållsskapare, mem-skapare eller vem som helst som behöver <strong>ladda ner ett videoomslag</strong> för sina projekt. Dessutom är det kompatibelt med <strong>YouTube Shorts</strong>, så du kan även hämta deras miniatyrer på samma sätt.',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Professionell användning av YouTube-miniatyrer',
158
+ level: 2,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'YouTube-miniatyrer är värdefulla visuella tillgångar. De representerar timmar av designarbete, A/B-testning och CTR-optimering av skaparna. Att veta hur man kommer åt dem och laddar ner dem öppnar upp en rad professionella möjligheter.',
163
+ },
164
+ {
165
+ type: 'grid',
166
+ columns: [
167
+ {
168
+ type: 'card',
169
+ title: 'Innehållsskapare',
170
+ html: '<p>Analysera miniatyrer från virala videor i din nisch för att förstå vilka visuella element som genererar flest klick: typografi, dominanta färger, användning av ansikten eller text.</p><ul><li><strong>Visuell benchmarking:</strong> Jämför dina miniatyrer med ledarna i din bransch.</li><li><strong>Designiteration:</strong> Ladda ner och använd miniatyrer som referens i Photoshop eller Canva.</li><li><strong>Inspirationsarkiv:</strong> Bygg upp ett bibliotek med miniatyrer som har hög konvertering.</li></ul>',
171
+ },
172
+ {
173
+ type: 'card',
174
+ title: 'Designers och marknadsförare',
175
+ html: '<p>För en grafisk formgivare eller en <i>social media manager</i> är snabb åtkomst till YouTube-miniatyrer nödvändigt för presentationer, kundförslag och visuella revisioner.</p><ul><li><strong>Kundpresentationer:</strong> Inkludera riktiga skärmdumpar från konkurrenter i dina förslag.</li><li><strong>Varumärkesrevisioner:</strong> Utvärdera den visuella konsekvensen i en YouTube-kanal.</li><li><strong>Mood boards:</strong> Samla visuella referenser av hög kvalitet utan suddiga skärmdumpar.</li></ul>',
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'title',
181
+ text: 'Kompatibilitet med YouTube Shorts',
182
+ level: 3,
183
+ },
184
+ {
185
+ type: 'paragraph',
186
+ html: 'Extractor-verktyget fungerar perfekt med <strong>YouTube Shorts</strong>. Shorts har sitt eget vertikala miniatyrformat (9:16) som genereras automatiskt från videon. Det här verktyget känner igen Shorts-URL:er (<code>youtube.com/shorts/ID</code>) och extraherar den bästa tillgängliga miniatyrbilden på samma sätt som för standardvideor.',
187
+ },
188
+ {
189
+ type: 'tip',
190
+ title: 'Garanterad integritet',
191
+ html: '<p>Hela extraheringen sker i din webbläsare. Inga URL:er eller data skickas till någon extern server.</p>',
192
+ },
193
+ ],
194
+ ui: {
195
+ urlPlaceholder: 'Klistra in YouTube-länken här...',
196
+ pasteAriaLabel: 'Klistra in från urklipp',
197
+ helperText: 'Format som stöds: youtube.com, youtu.be, shorts.',
198
+ ribbonLabel: 'Högsta kvalitet',
199
+ downloadBtn: 'Ladda ner i högsta upplösning',
200
+ qualityMedium: 'Medelkvalitet',
201
+ qualityStandard: 'Standardkvalitet',
202
+ qualityLow: 'Låg kvalitet',
203
+ viewImage: 'Visa bild',
204
+ errorInvalid: 'Ogiltig YouTube-URL. Vänligen kontrollera den.',
205
+ imgAlt: 'YouTube HD Miniatyrbild',
206
+ },
207
+ };
@@ -0,0 +1,207 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { YoutubeThumbnailUI } from '../ui';
4
+
5
+ const slug = 'youtube-kucuk-resim-indir-hd';
6
+ const title = 'YouTube Küçük Resim İndirici (HD)';
7
+ const description =
8
+ 'Sadece URL\'yi kullanarak herhangi bir YouTube videosunun orijinal küçük resmini maksimum çözünürlükte ve filigransız olarak ayıklayın ve indirin.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Küçük resimler hangi çözünürlükte ayıklanıyor?',
13
+ answer:
14
+ "Araç her zaman, video oluşturucusu tarafından yüklenen orijinal kalite olan 'MaxRes' (1280x720 veya 1920x1080) çözünürlüğünde görseli almaya çalışır. Eğer içerik üreticisi HD bir küçük resim yüklemediyse, otomatik olarak mevcut olan bir sonraki en yüksek çözünürlüğü gösterecektir.",
15
+ },
16
+ {
17
+ question: 'Hangi bağlantı türlerini destekliyor?',
18
+ answer:
19
+ 'Geleneksel youtube.com/watch URL\'lerini, youtu.be kısa bağlantılarını, mobil bağlantıları ve hatta YouTube Shorts URL\'lerini sorunsuz bir şekilde destekler.',
20
+ },
21
+ {
22
+ question: 'YouTube küçük resimlerini indirmek yasal mı?',
23
+ answer:
24
+ 'Evet, kişisel kullanım, tasarım, parodi ve ilham (Adil Kullanım) amaçlı indirme tamamen yasaldır. Telif hakkıyla korunan küçük resimleri tamamen ticari amaçlarla kullanacaksanız dikkatli olun; bu durumlarda videonun lisansını kontrol etmek önemlidir.',
25
+ },
26
+ {
27
+ question: 'Günlük kullanım sınırı var mı?',
28
+ answer:
29
+ 'Aylık veya günlük bir sınır yoktur. Bu yazılım, URL desenini tarayıcınızın içinde dahili olarak çözerek istemci tarafında çalıştığı için geleneksel kısıtlayıcı API\'larla etkileşime girmiyoruz.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Video URL\'sini kopyalayın',
36
+ text: 'YouTube\'a gidin ve tarayıcı çubuğundan veya paylaş düğmesinden video bağlantısını kopyalayın.',
37
+ },
38
+ {
39
+ name: 'Bağlantıyı yapıştırın',
40
+ text: 'URL\'yi ayıklayıcı alanına girin veya panodan yapıştır düğmesini kullanın.',
41
+ },
42
+ {
43
+ name: 'Kaliteyi seçin',
44
+ text: 'Araç, maksimum kaliteden (1080p) en düşüğe kadar mevcut tüm çözünürlükleri gösterecektir.',
45
+ },
46
+ {
47
+ name: 'Görseli indirin',
48
+ text: 'Küçük resmi cihazınıza kaydetmek için indir düğmesine tıklayın.',
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: 'TRY' },
83
+ inLanguage: 'tr',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Sıkça Sorulan Sorular',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Dökümantasyon ve Referanslar',
93
+ bibliography: [
94
+ {
95
+ name: 'YouTube Yardımı: Özel video küçük resmi ekleme',
96
+ url: 'https://support.google.com/youtube/answer/72431',
97
+ },
98
+ {
99
+ name: 'YouTube Creator Academy: Etkili küçük resimler nasıl oluşturulur',
100
+ url: 'https://creatoracademy.youtube.com/',
101
+ },
102
+ {
103
+ name: 'Google Developers: YouTube Data API — Thumbnails',
104
+ url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: 'HD YouTube Küçük Resimlerini Ücretsiz İndirin',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Bir <strong>YouTube videosunun küçük resmini</strong> orijinal boyutunda veya maksimum kalitede (Full HD veya 4K) indirmeniz gerekiyorsa, bu ücretsiz araç en hızlı çözümdür. İlham almak, kendi tasarımlarınızı oluşturmak veya sunumlarda kullanmak için herhangi bir kanalın kapak görselini alabilirsiniz.',
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: 'Programsız Kapak Fotoğrafı Ayıklama',
122
+ html: '<p>Yazılım yüklemeye veya kayıt olmaya gerek yoktur. Sadece video bağlantısını kopyalayıp yapıştırmanız yeterlidir; <strong>YouTube küçük resmini</strong> doğrudan bilgisayarınıza veya cep telefonunuza kaydedebilirsiniz.</p>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Bir YouTube videosunun küçük resmi nasıl alınır?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Bir <strong>YouTube videosundan fotoğraf çıkarma</strong> işlemi çok basittir. Görseli saniyeler içinde almak için şu adımları izleyin:',
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ '<strong>1. URL\'yi Kopyalayın:</strong> YouTube\'a gidin ve video bağlantısını kopyalayın (tarayıcı çubuğundan veya paylaş düğmesinden).',
137
+ '<strong>2. Bağlantıyı Yapıştırın:</strong> URL\'yi küçük resim ayıklayıcımızın arama alanına girin.',
138
+ '<strong>3. Kaliteyi Seçin:</strong> Maksimum kaliteden (1080p) en düşüğe (360p) kadar mevcut tüm çözünürlükleri size göstereceğiz.',
139
+ '<strong>4. Görseli İndirin:</strong> <i>Küçük resmi</i> cihazınıza kaydetmek için indir düğmesine tıklayın.',
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Desteklenen Formatlar ve Çözünürlükler',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'YouTube video kapaklarını indirmek hiç bu kadar kolay olmamıştı. Araç, genellikle YouTuber\'lar tarafından Photoshop\'ta üzerinde çalışılmış tasarımlar olan mümkün olan en iyi görseli (<strong>maxresdefault</strong> olarak bilinir) otomatik olarak arar. İçerik oluşturucu HD bir görsel yüklemediyse, size mevcut olan bir sonraki en iyi seçeneği (<strong>hqdefault</strong> veya <strong>mqdefault</strong>) sunacağız.',
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Bu yardımcı program <i>Topluluk Yöneticileri</i>, grafik tasarımcılar, içerik üreticileri, meme yapımcıları veya projeleri için bir <strong>video kapağını indirmesi</strong> gereken herkes için mükemmeldir. Ayrıca, <strong>YouTube Shorts</strong> ile de uyumludur, böylece onların küçük resimlerini de aynı şekilde alabilirsiniz.',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'YouTube Küçük Resimlerinin Profesyonel Kullanımları',
158
+ level: 2,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'YouTube küçük resimleri yüksek değerli görsel varlıklardır. İçerik üreticileri tarafından harcanan saatlerce tasarım çalışmasını, A/B testlerini ve CTR optimizasyonunu temsil ederler. Bunlara nasıl erişeceğinizi ve indireceğinizi bilmek, profesyonel olasılıklar yelpazesini açar.',
163
+ },
164
+ {
165
+ type: 'grid',
166
+ columns: [
167
+ {
168
+ type: 'card',
169
+ title: 'İçerik Üreticileri',
170
+ html: '<p>Hangi görsel öğelerin daha fazla tıklama sağladığını anlamak için nişinizdeki viral videoların küçük resimlerini analiz edin: tipografi, baskın renkler, yüz veya metin kullanımı.</p><ul><li><strong>Görsel kıyaslama:</strong> Küçük resimlerinizi sektörünüzdeki liderlerle karşılaştırın.</li><li><strong>Tasarım yinelemesi:</strong> Küçük resimleri indirin ve Photoshop veya Canva\'da referans olarak kullanın.</li><li><strong>İlham arşivi:</strong> Yüksek dönüşümlü küçük resimlerden oluşan bir kütüphane oluşturun.</li></ul>',
171
+ },
172
+ {
173
+ type: 'card',
174
+ title: 'Tasarımcılar ve Pazarlamacılar',
175
+ html: '<p>Bir grafik tasarımcı veya <i>sosyal medya yöneticisi</i> için YouTube küçük resimlerine hızlıca erişmek sunumlar, müşteri teklifleri ve görsel denetimler için gereklidir.</p><ul><li><strong>Müşteri sunumları:</strong> Tekliflerinize rakiplerin gerçek ekran görüntülerini ekleyin.</li><li><strong>Marka denetimleri:</strong> Bir YouTube kanalının görsel tutarlılığını değerlendirin.</li><li><strong>Moodboard\'lar:</strong> Bulanık ekran görüntüleri yerine yüksek kaliteli görsel referanslar toplayın.</li></ul>',
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'title',
181
+ text: 'YouTube Shorts Uyumluluğu',
182
+ level: 3,
183
+ },
184
+ {
185
+ type: 'paragraph',
186
+ html: 'Ayıklayıcı, <strong>YouTube Shorts</strong> ile mükemmel çalışır. Shorts videoları, videodan otomatik olarak oluşturulan kendi dikey küçük resim formatına (9:16) sahiptir. Bu araç Shorts URL\'lerini (<code>youtube.com/shorts/ID</code>) tanır ve standart videolarda olduğu gibi mevcut en iyi küçük resmi çıkarır.',
187
+ },
188
+ {
189
+ type: 'tip',
190
+ title: 'Gizlilik Garantili',
191
+ html: '<p>Tüm ayıklama işlemi tarayıcınızda gerçekleşir. Hiçbir URL veya veri harici bir sunucuya gönderilmez.</p>',
192
+ },
193
+ ],
194
+ ui: {
195
+ urlPlaceholder: 'YouTube bağlantısını buraya yapıştırın...',
196
+ pasteAriaLabel: 'Panodan yapıştır',
197
+ helperText: 'Desteklenen formatlar: youtube.com, youtu.be, shorts.',
198
+ ribbonLabel: 'Maksimum Kalite',
199
+ downloadBtn: 'Maksimum Çözünürlükte İndir',
200
+ qualityMedium: 'Orta Kalite',
201
+ qualityStandard: 'Standart Kalite',
202
+ qualityLow: 'Düşük Kalite',
203
+ viewImage: 'Resmi Görüntüle',
204
+ errorInvalid: 'Geçersiz YouTube URL\'si. Lütfen kontrol edin.',
205
+ imgAlt: 'YouTube HD Küçük Resim',
206
+ },
207
+ };
@@ -0,0 +1,207 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { YoutubeThumbnailUI } from '../ui';
4
+
5
+ const slug = 'youtube-thumbnail-extractor';
6
+ const title = 'YouTube 缩略图下载器 (HD)';
7
+ const description =
8
+ '只需提供 URL,即可提取并下载任何 YouTube 视频的最佳分辨率原图,无水印。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '提取的缩略图分辨率是多少?',
13
+ answer:
14
+ "本工具始终尝试获取视频作者上传的最佳画质图,即 'MaxRes' (1280x720 或 1920x1080)。如果作者未上传 HD 缩略图,系统将自动显示当前可用的最高分辨率。 ",
15
+ },
16
+ {
17
+ question: '支持哪些类型的链接?',
18
+ answer:
19
+ '支持传统的 youtube.com/watch URL、缩短链接 youtu.be、移动端链接,甚至是 YouTube Shorts 短视频链接。',
20
+ },
21
+ {
22
+ question: '下载 YouTube 缩略图合法吗?',
23
+ answer:
24
+ '是的,出于个人使用、设计参考、模仿及引用(合理使用)目的的下载是完全合法的。但在将受版权保护的缩略图用于纯商业用途时请务必小心,这种情况下建议查看视频的授权许可。',
25
+ },
26
+ {
27
+ question: '有每日使用限制吗?',
28
+ answer:
29
+ '没有每月或每日限制。由于本软件在客户端运行,通过在浏览器内部解析 URL 模式,我们不与传统的受限 API 进行交互。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '复制视频 URL',
36
+ text: '访问 YouTube 并从浏览器地址栏或通过“分享”按钮复制视频链接。',
37
+ },
38
+ {
39
+ name: '粘贴链接',
40
+ text: '在提取器的输入框中输入 URL,或使用“从剪贴板粘贴”按钮。',
41
+ },
42
+ {
43
+ name: '选择画质',
44
+ text: '工具将显示所有可用的分辨率,从最高画质 (1080p) 到最低画质。',
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: 'CNY' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: '常见问题',
91
+ faq: faqData,
92
+ bibliographyTitle: '文档与参考资料',
93
+ bibliography: [
94
+ {
95
+ name: 'YouTube 帮助:添加自定义视频缩略图',
96
+ url: 'https://support.google.com/youtube/answer/72431',
97
+ },
98
+ {
99
+ name: 'YouTube 创作者学院:如何制作高效的缩略图',
100
+ url: 'https://creatoracademy.youtube.com/',
101
+ },
102
+ {
103
+ name: 'Google Developers: YouTube Data API — Thumbnails',
104
+ url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: '免费下载 YouTube HD 高清缩略图',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: '如果您需要以原始尺寸或最高画质(Full HD 或 4K)<strong>下载 YouTube 视频缩略图</strong>,这款免费工具是最快的解决方案。您可以获取任何频道的封面图片来获取灵感、创建自己的设计或在演示文稿中使用。',
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: '免安装程序提取封面图',
122
+ html: '<p>无需安装软件,也无需注册。您只需复制并粘贴视频链接,即可将 <strong>YouTube 缩略图直接保存</strong>到您的电脑或手机中。</p>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: '如何获取 YouTube 视频的缩略图?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: '从 <strong>YouTube 视频中提取照片</strong>的过程非常简单。按照以下步骤,几秒钟内即可获得图片:',
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ '<strong>1. 复制 URL:</strong> 前往 YouTube 并复制视频链接(从浏览器地址栏或通过分享按钮)。',
137
+ '<strong>2. 粘贴链接:</strong> 在我们的缩略图提取器搜索框中输入该 URL。',
138
+ '<strong>3. 选择画质:</strong> 我们将向您展示所有可用的分辨率,从最高画质 (1080p) 到最低画质 (360p)。',
139
+ '<strong>4. 下载图片:</strong> 点击下载按钮将 <i>缩略图</i> 保存到您的设备。',
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '支持的格式和分辨率',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '下载 YouTube 视频封面从未如此简单。该工具会自动搜索最佳可能的图片(即 <strong>maxresdefault</strong>),这些图片通常是 YouTuber 在 Photoshop 中精心设计的。如果创作者未上传 HD 图片,我们将为您提供次优选项(<strong>hqdefault</strong> 或 <strong>mqdefault</strong>)。',
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: '这款工具非常适合社交媒体经理、平面设计师、内容创作者、表情包制作者,或任何需要为项目<strong>下载视频封面图</strong>的人。此外,它还兼容 <strong>YouTube Shorts</strong>,因此您也可以以同样的方式获取短视频缩略图。',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'YouTube 缩略图的专业用途',
158
+ level: 2,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'YouTube 缩略图是极具价值的视觉资产。它们代表了创作者数小时的设计工作、A/B 测试和 CTR 优化。了解如何获取并下载它们为您开启了各种专业可能性。',
163
+ },
164
+ {
165
+ type: 'grid',
166
+ columns: [
167
+ {
168
+ type: 'card',
169
+ title: '内容创作者',
170
+ html: '<p>分析您所在领域的热门视频缩略图,了解哪些视觉元素更容易获得点击:排版、主色调、人脸或文字的使用。</p><ul><li><strong>视觉基准测试:</strong> 将您的缩略图与行业领先者进行对比。</li><li><strong>设计迭代:</strong> 下载缩略图并在 Photoshop 或 Canva 中作为参考使用。</li><li><strong>灵感库:</strong> 建立一个高转化率缩略图库。</li></ul>',
171
+ },
172
+ {
173
+ type: 'card',
174
+ title: '设计师与营销人员',
175
+ html: '<p>对于平面设计师或社交媒体经理来说,快速访问 YouTube 缩略图对于演示、客户提案和视觉审计至关重要。</p><ul><li><strong>客户提案:</strong> 在您的提案中包含真实的竞品截图。</li><li><strong>品牌审计:</strong> 评估 YouTube 频道的视觉一致性。</li><li><strong>情绪板 (Moodboards):</strong> 收集高质量的视觉参考,告别模糊的屏幕截图。</li></ul>',
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'title',
181
+ text: '兼容 YouTube Shorts',
182
+ level: 3,
183
+ },
184
+ {
185
+ type: 'paragraph',
186
+ html: '提取器完美支持 <strong>YouTube Shorts</strong>。Shorts 有视频自动生成的独特垂直缩略图格式 (9:16)。此工具可识别 Shorts URL (<code>youtube.com/shorts/ID</code>),并以与标准视频相同的方式提取最佳可用缩略图。',
187
+ },
188
+ {
189
+ type: 'tip',
190
+ title: '隐私保障',
191
+ html: '<p>所有提取过程均在您的浏览器中完成。URL 和数据不会发送到任何外部服务器。</p>',
192
+ },
193
+ ],
194
+ ui: {
195
+ urlPlaceholder: '在此处粘贴 YouTube 链接...',
196
+ pasteAriaLabel: '从剪贴板粘贴',
197
+ helperText: '支持的格式:youtube.com, youtu.be, shorts.',
198
+ ribbonLabel: '最高画质',
199
+ downloadBtn: '以最高分辨率下载',
200
+ qualityMedium: '中等画质',
201
+ qualityStandard: '标准画质',
202
+ qualityLow: '低画质',
203
+ viewImage: '查看图片',
204
+ errorInvalid: '无效的 YouTube URL。请仔细检查。',
205
+ imgAlt: 'YouTube HD 缩略图',
206
+ },
207
+ };
@@ -7,20 +7,28 @@ import YoutubeThumbnailBibliography from './bibliography.astro';
7
7
  import type { YoutubeThumbnailUI } from './ui';
8
8
  export type YoutubeThumbnailLocaleContent = ToolLocaleContent<YoutubeThumbnailUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const youtubeThumbnail: SocialToolEntry<YoutubeThumbnailUI> = {
15
- id: 'youtube-thumbnail',
11
+ id: 'youtube-thumbnail-extractor',
16
12
  icons: {
17
13
  bg: 'mdi:youtube',
18
- fg: 'mdi:image-search',
14
+ fg: 'mdi:image-search-outline',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ es: () => import('./i18n/es').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ fr: () => import('./i18n/fr').then((m) => m.content),
20
+ de: () => import('./i18n/de').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
32
  },
25
33
  };
26
34