@jjlmoya/utils-audiovisual 1.6.0 → 1.8.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 (175) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/fr.ts +1 -1
  4. package/src/category/i18n/id.ts +198 -0
  5. package/src/category/i18n/it.ts +198 -0
  6. package/src/category/i18n/ja.ts +198 -0
  7. package/src/category/i18n/ko.ts +198 -0
  8. package/src/category/i18n/nl.ts +198 -0
  9. package/src/category/i18n/pl.ts +198 -0
  10. package/src/category/i18n/pt.ts +198 -0
  11. package/src/category/i18n/ru.ts +198 -0
  12. package/src/category/i18n/sv.ts +198 -0
  13. package/src/category/i18n/tr.ts +198 -0
  14. package/src/category/i18n/zh.ts +198 -0
  15. package/src/category/index.ts +31 -3
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/schemas_fulfillment.test.ts +23 -0
  18. package/src/tests/title_quality.test.ts +55 -0
  19. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/en.ts +1 -1
  21. package/src/tool/chromaticLens/i18n/es.ts +1 -1
  22. package/src/tool/chromaticLens/i18n/fr.ts +1 -1
  23. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  29. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  30. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  31. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  32. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  33. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  34. package/src/tool/chromaticLens/index.ts +15 -7
  35. package/src/tool/collageMaker/i18n/de.ts +233 -0
  36. package/src/tool/collageMaker/i18n/en.ts +1 -1
  37. package/src/tool/collageMaker/i18n/es.ts +1 -1
  38. package/src/tool/collageMaker/i18n/fr.ts +1 -1
  39. package/src/tool/collageMaker/i18n/id.ts +233 -0
  40. package/src/tool/collageMaker/i18n/it.ts +233 -0
  41. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  42. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  43. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  44. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  45. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  46. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  47. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  48. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  49. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  50. package/src/tool/collageMaker/index.ts +15 -6
  51. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/en.ts +2 -2
  53. package/src/tool/exifCleaner/i18n/es.ts +2 -2
  54. package/src/tool/exifCleaner/i18n/fr.ts +4 -4
  55. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  56. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  57. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  58. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  59. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  60. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  61. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  62. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  63. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  64. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  65. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  66. package/src/tool/exifCleaner/index.ts +16 -8
  67. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/en.ts +2 -2
  69. package/src/tool/imageCompressor/i18n/es.ts +2 -2
  70. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  71. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  72. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  73. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  74. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  75. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  76. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  77. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  78. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  79. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  80. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  81. package/src/tool/imageCompressor/index.ts +15 -7
  82. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
  84. package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
  85. package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
  86. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  87. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  88. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  89. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  90. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  91. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  92. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  93. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  94. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  95. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  96. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  97. package/src/tool/printQualityCalculator/index.ts +15 -7
  98. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  99. package/src/tool/privacyBlur/i18n/en.ts +1 -1
  100. package/src/tool/privacyBlur/i18n/es.ts +1 -1
  101. package/src/tool/privacyBlur/i18n/fr.ts +1 -1
  102. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  103. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  104. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  105. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  106. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  107. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  108. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  109. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  110. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  111. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  112. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  113. package/src/tool/privacyBlur/index.ts +15 -7
  114. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  115. package/src/tool/subtitleSync/i18n/en.ts +1 -1
  116. package/src/tool/subtitleSync/i18n/es.ts +1 -1
  117. package/src/tool/subtitleSync/i18n/fr.ts +8 -8
  118. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  119. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  120. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  121. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  122. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  123. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  124. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  125. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  126. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  127. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  128. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  129. package/src/tool/subtitleSync/index.ts +15 -7
  130. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  131. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  132. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  133. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  134. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  135. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  136. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  137. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  138. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  139. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  140. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  141. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  142. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  143. package/src/tool/timelapseCalculator/index.ts +16 -8
  144. package/src/tool/tvDistance/i18n/de.ts +223 -0
  145. package/src/tool/tvDistance/i18n/en.ts +1 -1
  146. package/src/tool/tvDistance/i18n/es.ts +1 -1
  147. package/src/tool/tvDistance/i18n/fr.ts +1 -1
  148. package/src/tool/tvDistance/i18n/id.ts +223 -0
  149. package/src/tool/tvDistance/i18n/it.ts +223 -0
  150. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  151. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  152. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  153. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  154. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  155. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  156. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  157. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  158. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  159. package/src/tool/tvDistance/index.ts +15 -7
  160. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  161. package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
  162. package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
  163. package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
  164. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  165. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  166. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  167. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  168. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  169. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  170. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  171. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  172. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  173. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  174. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  175. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,277 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ExifCleanerUI, ExifCleanerLocaleContent } from '../index';
3
+
4
+ const slug = 'exif-metadata-cleaner-remove-gps-photo-privacy';
5
+ const title = 'EXIFメタデータクリーナー:写真からGPSと隠しデータを削除';
6
+ const description = '共有前に画像からEXIFメタデータ、GPS座標、カメラ仕様を消去する無料オンラインツール。100%プライベート:写真をインターネットにアップロードせずに動作します。';
7
+
8
+ const ui: ExifCleanerUI = {
9
+ dropTitle: "ここに画像をドラッグ",
10
+ dropSubtitle: "GPSメタデータ、カメラモデル、隠し設定を削除します。",
11
+ dropLocalInfo: "100%ローカル処理。クラウドへのアップロードは一切ありません。",
12
+ selectButton: "画像を選択",
13
+ processingText: "メタデータをクリーンアップ中...",
14
+ analysisCompleted: "解析完了",
15
+ downloadButton: "クリーンな画像をダウンロード",
16
+ resetButton: "別の画像をクリーンアップ",
17
+ privacyRiskTitle: "検出されたプライバシーリスク:",
18
+ gpsLabel: "GPS:",
19
+ gpsDetected: "検出あり",
20
+ gpsNotFound: "未検出",
21
+ cameraLabel: "カメラ:",
22
+ softwareLabel: "ソフトウェア:",
23
+ dateLabel: "日付:",
24
+ otherTechnicalDetails: "その他の技術詳細",
25
+ noMetadataFound: "読み取り可能なEXIFメタデータは見つかりませんでした。",
26
+ alreadyCleanInfo: "画像はすでにクリーンである可能性があります。",
27
+ previewLabel: "プレビュー",
28
+ faqTitle: "写真のプライバシーに関するよくある質問",
29
+ bibliographyTitle: "リソースと技術的なEXIFドキュメント",
30
+ };
31
+
32
+ const faq: ExifCleanerLocaleContent['faq'] = [
33
+ {
34
+ question: "EXIFメタデータとは何ですか?",
35
+ answer: "EXIF(Exchangeable Image File Format)は、カメラやスマートフォンがすべての写真の中に保存する隠し情報です。これには、正確な日付、デバイスのモデル、撮影設定(ISO、絞り)、そして最も重要なのは、写真が撮影された場所のGPS座標が含まれます。",
36
+ },
37
+ {
38
+ question: "このオンラインツールを使用するのは安全ですか?",
39
+ answer: "はい。処理はブラウザ内で100%ローカルに行われるためです。写真はサーバーにアップロードされることはなく、クリーンアップはデバイスのメモリ内で直接行われるため、絶対的なプライバシーが保証されます。",
40
+ },
41
+ {
42
+ question: "クリーナーは具体的にどのようなデータを削除しますか?",
43
+ answer: "すべてのEXIFタグ(GPS、カメラブランド、シリアル番号)、IPTC(著作権、作成者)、およびXMP(編集履歴)を消去します。画像は「クリーン」になり、視覚的な画素(ピクセル)のみが保持されます。",
44
+ },
45
+ {
46
+ question: "メタデータのクリーンアップにより画質は低下しますか?",
47
+ answer: "いいえ。ファイルの技術データ「ヘッダー」のみを削除します。画像データ(ピクセル)はそのまま残るため、視覚的な品質にはまったく影響しません。",
48
+ },
49
+ ];
50
+
51
+ const howTo: ExifCleanerLocaleContent['howTo'] = [
52
+ {
53
+ name: "画像を選択",
54
+ text: "写真をドラッグするか、ファイルエクスプローラーから選択します。一度に複数の写真を処理できます。",
55
+ },
56
+ {
57
+ name: "現在のデータを解析",
58
+ text: "ツールは、検出された機密情報(例:「GPS座標を検出」)を表示します。",
59
+ },
60
+ {
61
+ name: "処理してクリーンアップ",
62
+ text: "クリーンアップボタンをクリックして、すべてのメタデータタグを即座に削除します。",
63
+ },
64
+ {
65
+ name: "安全な写真をダウンロード",
66
+ text: "匿名化され、SNSで安全に共有できるようになった新しいバージョンの画像を保存します。",
67
+ },
68
+ ];
69
+
70
+ const bibliography: ExifCleanerLocaleContent['bibliography'] = [
71
+ {
72
+ name: "EXIF - ウィキペディア",
73
+ url: "https://ja.wikipedia.org/wiki/Exchangeable_image_file_format",
74
+ },
75
+ {
76
+ name: "W3C - 画像内のメタデータ",
77
+ url: "https://www.w3.org/community/image-metadata/",
78
+ },
79
+ ];
80
+
81
+ const seo: ExifCleanerLocaleContent['seo'] = [
82
+ {
83
+ type: 'summary',
84
+ title: 'EXIFメタデータクリーナー:プライバシーを保護',
85
+ items: [
86
+ '写真からGPS座標と位置情報を即座に削除',
87
+ 'カメラモデル、シリアル番号、技術情報を消去',
88
+ '100%ブラウザベースの処理 - 画像がデバイスから離れることはありません',
89
+ '画質を維持 - 隠しデータのみを削除'
90
+ ]
91
+ },
92
+ { type: 'title', text: 'デジタル写真におけるプライバシーとEXIFメタデータの完全ガイド', level: 2 },
93
+ { type: 'paragraph', html: 'SNSに写真をアップロードするとき、どれだけの個人情報を共有しているか考えたことはありますか?EXIFメタデータは、<strong>目に見えない指紋</strong>のようなもので、自宅の正確な場所からカメラ機材の価格まで、あらゆる情報を明らかにする可能性があります。このガイドでは、プライバシーを効果的に保護する方法を説明します。' },
94
+
95
+ { type: 'stats', items: [
96
+ { value: '100%', label: 'プライバシー - ローカル処理', icon: 'mdi:shield-check' },
97
+ { value: '0%', label: 'サーバー保存データ', icon: 'mdi:database' },
98
+ { value: '即時', label: 'メタデータ削除', icon: 'mdi:lightning-bolt' }
99
+ ], columns: 3 },
100
+
101
+ { type: 'title', text: '写真に隠されている情報とは?', level: 3 },
102
+ { type: 'paragraph', html: 'デジタル写真の90%以上には、セキュリティを損なう可能性のある機密情報が含まれています。明らかになる可能性のあるデータは以下の通りです:' },
103
+ { type: 'list', items: [
104
+ '<strong>GPS座標:</strong> 撮影が行われた正確な緯度と経度(自宅住所、職場、頻繁に訪れる場所)。',
105
+ '<strong>機材の識別:</strong> カメラやスマートフォンのメーカー、モデル、シリアル番号(貴重な情報)。',
106
+ '<strong>技術設定:</strong> ISO、絞り(f値)、露出時間、焦点距離(特定の機材の特定が可能になります)。',
107
+ '<strong>正確な日時:</strong> 日々の活動の完全なタイムライン。',
108
+ '<strong>編集履歴:</strong> 使用されたソフトウェア、編集ソフト、最終更新日。',
109
+ '<strong>著作権データ:</strong> 写真家、著作権、個人的なメモ。'
110
+ ] },
111
+
112
+ { type: 'title', text: '現実のセキュリティリスク:活用事例', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'プロ写真家',
116
+ description: 'シリアル番号で特定された高価な機材の盗難リスク',
117
+ icon: 'mdi:camera',
118
+ points: [
119
+ '窃盗犯は高価な機材を持つ写真家を探している',
120
+ 'GPSが所有者の自宅住所を特定する',
121
+ 'シリアル番号がダークウェブでの転売を容易にする'
122
+ ]
123
+ },
124
+ {
125
+ title: '保護者とインフルエンサー',
126
+ description: '極めて危険:子供のリアルタイムの位置情報',
127
+ icon: 'mdi:alert',
128
+ points: [
129
+ '犯罪者はOSINTを使用して場所を追跡する',
130
+ '日々のルーチンが特定される可能性がある',
131
+ 'ストーキングや物理的な追跡のリスク'
132
+ ],
133
+ highlight: true
134
+ },
135
+ {
136
+ title: 'SNSユーザー',
137
+ description: '個人および仕事のプライバシーの露出',
138
+ icon: 'mdi:share-variant',
139
+ points: [
140
+ 'オフィスからの投稿が職場の場所を明らかにする',
141
+ 'ジオロケーションからおおよその給与を推測される',
142
+ '公開データにより標的型のプロファイリングが可能になる'
143
+ ]
144
+ },
145
+ {
146
+ title: '旅行者とノマド',
147
+ description: '留守中の自宅での盗難の危険',
148
+ icon: 'mdi:map',
149
+ points: [
150
+ '公開されたGPSが旅行中の空き家を示す',
151
+ '機材データが犯罪者を引き寄せる',
152
+ '旅行履歴がスケジュールやパターンを明らかにする'
153
+ ]
154
+ }
155
+ ], columns: 2 },
156
+
157
+ { type: 'title', text: 'このツールの仕組み', level: 3 },
158
+ { type: 'list', items: [
159
+ '<strong>1. 画像を選択:</strong> 写真をドラッグするかセレクターを使用します。一度に複数を処理できます。',
160
+ '<strong>2. 自動解析:</strong> ツールは存在するすべてのメタデータ(GPS、カメラモデル、日付など)を検出し表示します。',
161
+ '<strong>3. 即時クリーンアップ:</strong> ワンクリックで、有害なメタデータを100%削除します。',
162
+ '<strong>4. 安全なダウンロード:</strong> リスクなしでSNSに共有できる匿名化された画像を受け取ります。',
163
+ '<strong>5. 残留物なし:</strong> クリーンな画像は元の視覚的な品質をすべて保持します。'
164
+ ], icon: 'mdi:check' },
165
+
166
+ { type: 'card', title: 'プライバシー技術', icon: 'mdi:shield-check', html: 'このツールは、<strong>ブラウザのCanvas API</strong>を使用して、画像をピクセル単位でクリーンにコピーを作成します。これにより、以下のことが保証されます:<br><br>- サーバーにデータは送信されません<br>- 画像がデバイスから離れることはありません<br>- 100%匿名で安全な処理<br>- 初回ロード後はインターネット接続なしでも使用可能' },
167
+
168
+ { type: 'title', text: '具体的に削除されるデータは?', level: 3 },
169
+ { type: 'table', headers: ['メタデータタイプ', '例', 'リスク'], rows: [
170
+ ['EXIF (交換可能)', 'GPS、ISO、絞り、シャッタースピード、カメラモデル', '致命的'],
171
+ ['IPTC (出版用)', '著作権、作成者、キーワード、シーンの場所', '高い'],
172
+ ['XMP (XML)', '編集履歴、使用ソフトウェア、行われた編集', '中'],
173
+ ['基本ファイルデータ', '作成日、正確な時間、デバイス', '高い']
174
+ ] },
175
+
176
+ { type: 'proscons', items: [
177
+ {
178
+ pro: '完全なプライバシー - 100%ブラウザベースの処理',
179
+ con: 'JavaScriptをサポートする最新のブラウザが必要です'
180
+ },
181
+ {
182
+ pro: '即時 - 写真のクリーンアップは1秒未満で完了',
183
+ con: '古いデバイスでは大きな写真の処理が遅くなる場合があります'
184
+ },
185
+ {
186
+ pro: '画質の低下ゼロ - 技術データのみを削除し、ピクセルは削除しません',
187
+ con: '画像の編集(切り抜き、回転など)は行いません'
188
+ },
189
+ {
190
+ pro: '制限なしで完全無料 - 無制限に写真を処理可能',
191
+ con: 'プレミアムサポートやクラウドストレージはありません'
192
+ }
193
+ ], proTitle: '主なメリット', conTitle: '制限事項' },
194
+
195
+ { type: 'tip', title: 'デジタルセキュリティのヒント', html: 'SNSに投稿する<strong>前に</strong>写真をクリーンアップしましょう。投稿を削除しても、メタデータが検索エンジンやアーカイブにインデックスされている可能性があります。予防は治療に勝ります。習慣にしましょう:<br><br><em>写真 → EXIFをクリーンアップ → 投稿</em>' },
196
+
197
+ { type: 'diagnostic', variant: 'warning', title: 'クリーンアップしない場合の現実のリスク', icon: 'mdi:alert-circle', badge: '重大なセキュリティ', html: '<strong>文書化された事例:</strong><br>- 子供の写真を投稿した保護者 - 犯罪者がGPSを追跡<br>- 旅行中の写真家 - 留守中に自宅が強盗に遭う<br>- インフルエンサー - 熱狂的なファンに居住場所を特定される<br><br>これは被害妄想ではありません。2026年における基本的なデジタル衛生管理です。' },
198
+
199
+ { type: 'glossary', items: [
200
+ {
201
+ term: 'EXIF',
202
+ definition: 'Exchangeable Image File Format。画像ファイルに技術的なメタデータ(GPS、カメラデータ、露出設定)を保存する標準規格。ユーザーの意図に関わらず、デジタル写真の約90%に含まれています。'
203
+ },
204
+ {
205
+ term: 'GPS座標',
206
+ definition: '写真が撮影された正確な場所の正確な緯度と経度。SNSと組み合わせることで、人物の物理的な追跡が可能になります。'
207
+ },
208
+ {
209
+ term: 'IPTC',
210
+ definition: 'International Press Telecommunications Council。著作権、作成者、キーワード、説明など、読み取り可能な出版用メタデータ。プロの写真撮影における標準。'
211
+ },
212
+ {
213
+ term: 'XMP',
214
+ definition: 'Extensible Metadata Platform。LightroomやPhotoshopなどのソフトウェアでの編集履歴を記録するXML形式。行われたすべての編集を明らかにすることができます。'
215
+ },
216
+ {
217
+ term: 'OSINT',
218
+ definition: 'Open Source Intelligence(オープンソース・インテリジェンス)。公開情報(SNS、メタデータ、記録)を収集して、本人に知られずに人物のプロファイリングを行う手法。'
219
+ },
220
+ {
221
+ term: 'デジタル匿名化',
222
+ definition: '識別可能な情報(場所、デバイス、行動パターン)を削除または隠蔽するプロセス。オンラインプライバシーに不可欠です。'
223
+ }
224
+ ] },
225
+
226
+ { type: 'message', title: 'プライバシー保護はあなたの責任です', ariaLabel: 'プライバシーとデータ権利に関する情報', html: '当社はあなたの画像を保存、処理、共有することはありません。<strong>あなたがすべてをコントロールします。</strong> すべての操作はブラウザ内でのみ行われます。このタブを閉じると、活動の記録は一切残りません。これこそがインターネットでプライバシーを守る方法です:あなたのデータを尊重するツールです。' },
227
+
228
+ { type: 'title', text: '結論:痕跡を残さずに共有', level: 3 },
229
+ { type: 'paragraph', html: 'デジタルアイデンティティの保護は、小さな詳細から始まります。公開前に写真をクリーンアップすることは、2026年において<strong>不可欠なデジタル衛生習慣</strong>です。それは単に場所を守るだけでなく、あなたの家族、資産、そして仕事のプライバシーを守ることにつながります。一見無害な写真が、あなたが想像する以上に多くのことを明らかにする可能性があるのです。' }
230
+ ];
231
+
232
+ const faqSchema: WithContext<FAQPage> = {
233
+ '@context': 'https://schema.org',
234
+ '@type': 'FAQPage',
235
+ mainEntity: faq.map((item) => ({
236
+ '@type': 'Question',
237
+ name: item.question,
238
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
239
+ })),
240
+ };
241
+
242
+ const howToSchema: WithContext<HowTo> = {
243
+ '@context': 'https://schema.org',
244
+ '@type': 'HowTo',
245
+ name: title,
246
+ description,
247
+ step: howTo.map((step) => ({
248
+ '@type': 'HowToStep',
249
+ name: step.name,
250
+ text: step.text,
251
+ })),
252
+ };
253
+
254
+ const appSchema: WithContext<SoftwareApplication> = {
255
+ '@context': 'https://schema.org',
256
+ '@type': 'SoftwareApplication',
257
+ name: title,
258
+ description,
259
+ applicationCategory: 'UtilitiesApplication',
260
+ operatingSystem: 'Web',
261
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
262
+ inLanguage: 'ja',
263
+ };
264
+
265
+ export const content: ExifCleanerLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faqTitle: "よくある質問",
272
+ faq,
273
+ bibliographyTitle: "リファレンス",
274
+ bibliography,
275
+ howTo,
276
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
277
+ };
@@ -0,0 +1,277 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ExifCleanerUI, ExifCleanerLocaleContent } from '../index';
3
+
4
+ const slug = 'exif-metadata-cleaner-remove-gps-photo-privacy';
5
+ const title = 'EXIF 메타데이터 클리너: 사진에서 GPS 및 숨겨진 데이터 삭제';
6
+ const description = '공유하기 전 이미지에서 EXIF 메타데이터, GPS 좌표 및 카메라 사양을 삭제하는 무료 온라인 도구입니다. 100% 프라이빗: 인터넷에 사진을 업로드하지 않고 작동합니다.';
7
+
8
+ const ui: ExifCleanerUI = {
9
+ dropTitle: "여기에 이미지를 드래그하세요",
10
+ dropSubtitle: "GPS 메타데이터, 카메라 모델 및 숨겨진 설정을 제거합니다.",
11
+ dropLocalInfo: "100% 로컬 처리. 클라우드에 아무것도 업로드되지 않습니다.",
12
+ selectButton: "이미지 선택",
13
+ processingText: "메타데이터 클리닝 중...",
14
+ analysisCompleted: "분석 완료",
15
+ downloadButton: "클린한 이미지 다운로드",
16
+ resetButton: "다른 이미지 클리닝",
17
+ privacyRiskTitle: "개인정보 위험 감지됨:",
18
+ gpsLabel: "GPS:",
19
+ gpsDetected: "감지됨",
20
+ gpsNotFound: "찾을 수 없음",
21
+ cameraLabel: "카메라:",
22
+ softwareLabel: "소프트웨어:",
23
+ dateLabel: "날짜:",
24
+ otherTechnicalDetails: "기타 기술 세부 정보",
25
+ noMetadataFound: "읽을 수 있는 EXIF 메타데이터를 찾을 수 없습니다.",
26
+ alreadyCleanInfo: "이미지가 이미 깨끗할 수 있습니다.",
27
+ previewLabel: "미리보기",
28
+ faqTitle: "사진 개인정보 보호에 관한 자주 묻는 질문",
29
+ bibliographyTitle: "리소스 및 기술 EXIF 문서",
30
+ };
31
+
32
+ const faq: ExifCleanerLocaleContent['faq'] = [
33
+ {
34
+ question: "EXIF 메타데이터란 무엇인가요?",
35
+ answer: "EXIF(Exchangeable Image File Format)는 카메라나 휴대폰이 모든 사진 내부에 저장하는 숨겨진 정보입니다. 정확한 날짜, 기기 모델, 촬영 설정(ISO, 조리개) 및 가장 중요하게는 사진이 촬영된 위치의 GPS 좌표가 포함됩니다.",
36
+ },
37
+ {
38
+ question: "이 온라인 도구를 사용하는 것이 안전한가요?",
39
+ answer: "네, 처리가 브라우저 내에서 100% 로컬로 이루어지기 때문입니다. 사진은 서버에 업로드되지 않으며, 클리닝은 기기의 메모리에서 직접 수행되므로 절대적인 개인정보 보호가 보장됩니다.",
40
+ },
41
+ {
42
+ question: "클리너는 어떤 특정 데이터를 제거하나요?",
43
+ answer: "모든 EXIF 태그(GPS, 카메라 브랜드, 일련번호), IPTC(저작권, 저자) 및 XMP(편집 이력)를 삭제합니다. 이미지는 시각적 픽셀만 보존된 '깨끗한' 상태가 됩니다.",
44
+ },
45
+ {
46
+ question: "메타데이터 클리닝 시 화질이 저하되나요?",
47
+ answer: "아니요. 파일의 기술 데이터 '헤더'만 제거합니다. 이미지 데이터(픽셀)는 동일하게 유지되므로 시각적 품질에는 전혀 영향을 미치지 않습니다.",
48
+ },
49
+ ];
50
+
51
+ const howTo: ExifCleanerLocaleContent['howTo'] = [
52
+ {
53
+ name: "이미지 선택",
54
+ text: "사진을 드래그하거나 파일 탐색기에서 선택하세요. 한 번에 여러 장을 처리할 수 있습니다.",
55
+ },
56
+ {
57
+ name: "현재 데이터 분석",
58
+ text: "도구가 어떤 민감한 정보가 감지되었는지 보여줍니다(예: 'GPS 좌표 감지됨').",
59
+ },
60
+ {
61
+ name: "처리 및 클리닝",
62
+ text: "클리닝 버튼을 클릭하여 모든 메타데이터 태그를 즉시 제거하세요.",
63
+ },
64
+ {
65
+ name: "안전한 사진 다운로드",
66
+ text: "익명화되어 소셜 미디어에 안전하게 공유할 수 있게 된 새로운 버전의 이미지를 저장하세요.",
67
+ },
68
+ ];
69
+
70
+ const bibliography: ExifCleanerLocaleContent['bibliography'] = [
71
+ {
72
+ name: "EXIF - 위키백과",
73
+ url: "https://ko.wikipedia.org/wiki/EXIF",
74
+ },
75
+ {
76
+ name: "W3C - 이미지 내 메타데이터",
77
+ url: "https://www.w3.org/community/image-metadata/",
78
+ },
79
+ ];
80
+
81
+ const seo: ExifCleanerLocaleContent['seo'] = [
82
+ {
83
+ type: 'summary',
84
+ title: 'EXIF 메타데이터 클리너: 개인정보 보호',
85
+ items: [
86
+ '사진에서 GPS 좌표 및 위치 정보를 즉시 제거',
87
+ '카메라 모델, 일련번호 및 기술 정보 삭제',
88
+ '100% 브라우저 기반 처리 - 이미지가 기기를 떠나지 않음',
89
+ '화질 유지 - 숨겨진 데이터만 제거'
90
+ ]
91
+ },
92
+ { type: 'title', text: '디지털 사진의 개인정보 보호 및 EXIF 메타데이터 가이드', level: 2 },
93
+ { type: 'paragraph', html: '소셜 미디어에 사진을 올릴 때 얼마나 많은 개인정보가 공유되는지 생각해 본 적 있나요? EXIF 메타데이터는 <strong>보이지 않는 지문</strong>과 같아서 집 주소부터 카메라 장비 가격까지 모든 것을 드러낼 수 있습니다. 이 가이드는 개인정보를 효과적으로 보호하는 방법을 설명합니다.' },
94
+
95
+ { type: 'stats', items: [
96
+ { value: '100%', label: '프라이버시 - 로컬 처리', icon: 'mdi:shield-check' },
97
+ { value: '0%', label: '서버 저장 데이터 없음', icon: 'mdi:database' },
98
+ { value: '즉시', label: '메타데이터 제거', icon: 'mdi:lightning-bolt' }
99
+ ], columns: 3 },
100
+
101
+ { type: 'title', text: '사진 속에 숨겨진 정보는 무엇인가요?', level: 3 },
102
+ { type: 'paragraph', html: '디지털 사진의 90% 이상에는 보안을 위협할 수 있는 민감한 정보가 포함되어 있습니다. 공개될 수 있는 데이터는 다음과 같습니다.' },
103
+ { type: 'list', items: [
104
+ '<strong>GPS 좌표:</strong> 촬영이 이루어진 정확한 위도와 경도(집, 직장, 자주 방문하는 장소).',
105
+ '<strong>장비 식별:</strong> 카메라나 스마트폰의 제조사, 모델 및 일련번호(귀중한 정보).',
106
+ '<strong>기술 설정:</strong> ISO, 조리개(f/), 노출 시간 및 초점 거리(특정 장비 식별 가능).',
107
+ '<strong>정확한 날짜 및 시간:</strong> 일상 활동의 전체 타임라인.',
108
+ '<strong>편집 이력:</strong> 사용된 소프트웨어, 편집 도구 및 최종 수정일.',
109
+ '<strong>저작권 데이터:</strong> 사진가, 저작권 및 개인 메모.'
110
+ ] },
111
+
112
+ { type: 'title', text: '실제 보안 위험: 활용 사례', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: '전문 사진가',
116
+ description: '일련번호로 식별된 고가 장비의 도난 위험',
117
+ icon: 'mdi:camera',
118
+ points: [
119
+ '절도범은 값비싼 장비를 가진 사진가를 찾음',
120
+ 'GPS는 소유자의 집 주소를 식별함',
121
+ '일련번호는 다크웹에서의 재판매를 용이하게 함'
122
+ ]
123
+ },
124
+ {
125
+ title: '학부모 및 인플루언서',
126
+ description: '극도로 위험: 자녀의 실시간 위치 노출',
127
+ icon: 'mdi:alert',
128
+ points: [
129
+ '범죄자는 OSINT를 사용하여 위치를 추적함',
130
+ '일상적인 동선이 파악될 수 있음',
131
+ '스토킹 및 물리적 추적 위험'
132
+ ],
133
+ highlight: true
134
+ },
135
+ {
136
+ title: '소셜 미디어 사용자',
137
+ description: '개인 및 직업적 프라이버시 노출',
138
+ icon: 'mdi:share-variant',
139
+ points: [
140
+ '사무실에서 올린 게시물은 직장 위치를 드러냄',
141
+ '지오로케이션으로 대략적인 수입 추정 가능',
142
+ '공개된 데이터로 타겟 프로파일링 가능'
143
+ ]
144
+ },
145
+ {
146
+ title: '여행자 및 노마드',
147
+ description: '비어 있는 집의 도난 위험',
148
+ icon: 'mdi:map',
149
+ points: [
150
+ '게시된 GPS는 여행 중 비어 있는 집을 나타냄',
151
+ '장비 데이터는 범죄자를 유인함',
152
+ '여행 기록은 일정과 패턴을 드러냄'
153
+ ]
154
+ }
155
+ ], columns: 2 },
156
+
157
+ { type: 'title', text: '도구 작동 방식', level: 3 },
158
+ { type: 'list', items: [
159
+ '<strong>1. 이미지 선택:</strong> 사진을 드래그하거나 선택기를 사용하세요. 한 번에 여러 장 처리가 가능합니다.',
160
+ '<strong>2. 자동 분석:</strong> 도구가 존재하는 모든 메타데이터(GPS, 카메라 모델, 날짜 등)를 감지하고 표시합니다.',
161
+ '<strong>3. 즉시 클리닝:</strong> 클릭 한 번으로 유해한 메타데이터를 100% 제거합니다.',
162
+ '<strong>4. 안전한 다운로드:</strong> 위험 없이 소셜에 공유할 수 있는 익명화된 이미지를 받습니다.',
163
+ '<strong>5. 잔여물 없음:</strong> 클린한 이미지는 원래의 시각적 품질을 모두 유지합니다.'
164
+ ], icon: 'mdi:check' },
165
+
166
+ { type: 'card', title: '프라이버시 기술', icon: 'mdi:shield-check', html: '이 도구는 <strong>브라우저의 Canvas API</strong>를 사용하여 이미지를 픽셀 단위로 깨끗하게 복사합니다. 이를 통해 다음을 보장합니다.<br><br>- 서버로 데이터가 전송되지 않음<br>- 이미지가 기기를 떠나지 않음<br>- 100% 익명 및 안전한 처리<br>- 초기 로드 후에는 인터넷 연결 없이도 사용 가능' },
167
+
168
+ { type: 'title', text: '구체적으로 어떤 데이터가 제거되나요?', level: 3 },
169
+ { type: 'table', headers: ['메타데이터 유형', '예시', '위험도'], rows: [
170
+ ['EXIF (교환 가능)', 'GPS, ISO, 조리개, 셔터 속도, 카메라 모델', '치명적'],
171
+ ['IPTC (출판)', '저작권, 저자, 키워드, 장면 위치', '높음'],
172
+ ['XMP (XML)', '편집 이력, 사용 소프트웨어, 수정 사항', '중간'],
173
+ ['기본 파일 데이터', '생성 날짜, 정확한 시간, 기기', '높음']
174
+ ] },
175
+
176
+ { type: 'proscons', items: [
177
+ {
178
+ pro: '완전한 프라이버시 - 100% 브라우저 기반 처리',
179
+ con: 'JavaScript를 지원하는 최신 브라우저 필요'
180
+ },
181
+ {
182
+ pro: '즉각적 - 사진 한 장 클리닝에 1초 미만 소요',
183
+ con: '대용량 사진 처리는 구형 기기에서 느릴 수 있음'
184
+ },
185
+ {
186
+ pro: '화질 저하 제로 - 기술 데이터만 제거, 픽셀은 보존',
187
+ con: '이미지 편집(자르기, 회전 등)은 수행하지 않음'
188
+ },
189
+ {
190
+ pro: '제한 없는 완전 무료 - 무제한 사진 처리 가능',
191
+ con: '프리미엄 지원이나 클라우드 저장 공간 없음'
192
+ }
193
+ ], proTitle: '주요 장점', conTitle: '제한 사항' },
194
+
195
+ { type: 'tip', title: '디지털 보안 팁', html: '소셜 네트워크에 게시하기 <strong>전에</strong> 사진을 클리닝하세요. 게시물을 삭제하더라도 메타데이터는 이미 검색 엔진이나 아카이브에 인덱싱되었을 수 있습니다. 예방이 최선입니다. 습관으로 만드세요. <br><br><em>사진 → EXIF 클리닝 → 게시</em>' },
196
+
197
+ { type: 'diagnostic', variant: 'warning', title: '클리닝하지 않을 때의 실제 위험', icon: 'mdi:alert-circle', badge: '중대한 보안', html: '<strong>확인된 사례:</strong><br>- 자녀 사진을 올린 부모 - 범죄자가 GPS 추적<br>- 여행 중인 사진가 - 자리를 비운 사이 빈집 털이 발생<br>- 인플루언서 - 열성 팬에 의해 거주지 노출<br><br>과도한 걱정이 아닙니다. 2026년을 살아가는 기본적인 디지털 에티켓입니다.' },
198
+
199
+ { type: 'glossary', items: [
200
+ {
201
+ term: 'EXIF',
202
+ definition: 'Exchangeable Image File Format. 이미지 파일에 GPS, 카메라 데이터, 노출 설정과 같은 기술적 메타데이터를 저장하는 표준입니다. 사용자 의도와 상관없이 디지털 사진의 약 90%에 포함되어 있습니다.'
203
+ },
204
+ {
205
+ term: 'GPS 좌표',
206
+ definition: '사진이 촬영된 정확한 지점의 위도와 경도입니다. 소셜 미디어와 결합하면 인물의 물리적 추적이 가능해집니다.'
207
+ },
208
+ {
209
+ term: 'IPTC',
210
+ definition: 'International Press Telecommunications Council. 저작권, 저자, 키워드, 설명 등 읽기 가능한 출판 메타데이터입니다. 전문 사진 분야의 표준입니다.'
211
+ },
212
+ {
213
+ term: 'XMP',
214
+ definition: 'Extensible Metadata Platform. Lightroom이나 Photoshop 같은 소프트웨어에서의 편집 이력을 기록하는 XML 형식입니다. 수행된 모든 수정을 드러낼 수 있습니다.'
215
+ },
216
+ {
217
+ term: 'OSINT',
218
+ definition: 'Open Source Intelligence(오픈 소스 인텔리전스). 소셜 미디어, 메타데이터, 기록 등 공개된 정보를 수집하여 본인 모르게 인물 프로파일링을 수행하는 기법입니다.'
219
+ },
220
+ {
221
+ term: '디지털 익명화',
222
+ definition: '위치, 기기, 행동 패턴과 같은 식별 가능한 정보를 제거하거나 가리는 프로세스입니다. 온라인 개인정보 보호에 필수적입니다.'
223
+ }
224
+ ] },
225
+
226
+ { type: 'message', title: '개인정보 보호는 당신의 책임입니다', ariaLabel: '개인정보 및 데이터 권리에 관한 정보', html: '당사는 귀하의 이미지를 저장, 처리 또는 공유하지 않습니다. <strong>귀하가 모든 권한을 갖습니다.</strong> 모든 작업은 브라우저에서만 이루어집니다. 이 탭을 닫으면 활동 기록이 남지 않습니다. 이것이 인터넷에서 프라이버시를 지키는 방법입니다. 귀하의 데이터를 존중하는 도구를 사용하세요.' },
227
+
228
+ { type: 'title', text: '결론: 흔적 없이 공유하세요', level: 3 },
229
+ { type: 'paragraph', html: '디지털 정체성을 보호하는 것은 작은 디테일에서 시작됩니다. 게시 전 사진을 클리닝하는 것은 2026년의 <strong>필수적인 디지털 위생 습관</strong>입니다. 이는 단순한 위치 정보뿐만 아니라 가족, 자산, 전문적인 프라이버시를 보호합니다. 아무런 해가 없어 보이는 사진 한 장이 당신에 대해 상상 이상의 많은 것을 드러낼 수 있습니다.' }
230
+ ];
231
+
232
+ const faqSchema: WithContext<FAQPage> = {
233
+ '@context': 'https://schema.org',
234
+ '@type': 'FAQPage',
235
+ mainEntity: faq.map((item) => ({
236
+ '@type': 'Question',
237
+ name: item.question,
238
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
239
+ })),
240
+ };
241
+
242
+ const howToSchema: WithContext<HowTo> = {
243
+ '@context': 'https://schema.org',
244
+ '@type': 'HowTo',
245
+ name: title,
246
+ description,
247
+ step: howTo.map((step) => ({
248
+ '@type': 'HowToStep',
249
+ name: step.name,
250
+ text: step.text,
251
+ })),
252
+ };
253
+
254
+ const appSchema: WithContext<SoftwareApplication> = {
255
+ '@context': 'https://schema.org',
256
+ '@type': 'SoftwareApplication',
257
+ name: title,
258
+ description,
259
+ applicationCategory: 'UtilitiesApplication',
260
+ operatingSystem: 'Web',
261
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
262
+ inLanguage: 'ko',
263
+ };
264
+
265
+ export const content: ExifCleanerLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faqTitle: "자주 묻는 질문",
272
+ faq,
273
+ bibliographyTitle: "참고 문헌",
274
+ bibliography,
275
+ howTo,
276
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
277
+ };