docs: organize tool pages by modality under /tools/<modality>/

Move all 157 tool pages into image/video/audio/pdf/data subfolders so URLs read /tools/<modality>/<id> (e.g. /tools/image/crop). Nest the image sub-categories under an Image group in the sidebar so the nav reads by modality. Add public/_redirects (301, clean + .html forms) mapping every old flat /tools/<id> URL to its new path so inbound links keep working. Rewrite all internal /tools links. Verified with a clean docs build (no dead links).
This commit is contained in:
SnapOtter
2026-06-18 14:12:28 +08:00
parent 03c1a5e36f
commit d24e244af4
162 changed files with 874 additions and 554 deletions
+164 -158
View File
@@ -90,7 +90,7 @@ export default defineConfig({
nav: [
{ text: "Home", link: "/" },
{ text: "Guide", link: "/guide/getting-started" },
{ text: "Tools", link: "/tools/resize" },
{ text: "Tools", link: "/tools/image/resize" },
{ text: "API Reference", link: "/api/rest" },
{ text: "Changelog", link: "/changelog" },
{
@@ -121,221 +121,227 @@ export default defineConfig({
{
text: "Tools",
items: [
{
text: "Image",
collapsed: false,
items: [
{
text: "Essentials",
items: [
{ text: "Resize", link: "/tools/resize" },
{ text: "Crop", link: "/tools/crop" },
{ text: "Rotate & Flip", link: "/tools/rotate" },
{ text: "Convert", link: "/tools/convert" },
{ text: "Compress", link: "/tools/compress" },
{ text: "Resize", link: "/tools/image/resize" },
{ text: "Crop", link: "/tools/image/crop" },
{ text: "Rotate & Flip", link: "/tools/image/rotate" },
{ text: "Convert", link: "/tools/image/convert" },
{ text: "Compress", link: "/tools/image/compress" },
],
},
{
text: "Optimization",
items: [
{ text: "Optimize for Web", link: "/tools/optimize-for-web" },
{ text: "Remove Metadata", link: "/tools/strip-metadata" },
{ text: "Edit Metadata", link: "/tools/edit-metadata" },
{ text: "Bulk Rename", link: "/tools/bulk-rename" },
{ text: "Image to PDF", link: "/tools/image-to-pdf" },
{ text: "Favicon Generator", link: "/tools/favicon" },
{ text: "Optimize for Web", link: "/tools/image/optimize-for-web" },
{ text: "Remove Metadata", link: "/tools/image/strip-metadata" },
{ text: "Edit Metadata", link: "/tools/image/edit-metadata" },
{ text: "Bulk Rename", link: "/tools/image/bulk-rename" },
{ text: "Image to PDF", link: "/tools/image/image-to-pdf" },
{ text: "Favicon Generator", link: "/tools/image/favicon" },
],
},
{
text: "Adjustments",
items: [
{ text: "Adjust Colors", link: "/tools/adjust-colors" },
{ text: "Sharpening", link: "/tools/sharpening" },
{ text: "Replace & Invert Color", link: "/tools/replace-color" },
{ text: "Color Blindness Simulation", link: "/tools/color-blindness" },
{ text: "Duotone", link: "/tools/duotone" },
{ text: "Pixelate", link: "/tools/pixelate" },
{ text: "Vignette", link: "/tools/vignette" },
{ text: "Adjust Colors", link: "/tools/image/adjust-colors" },
{ text: "Sharpening", link: "/tools/image/sharpening" },
{ text: "Replace & Invert Color", link: "/tools/image/replace-color" },
{ text: "Color Blindness Simulation", link: "/tools/image/color-blindness" },
{ text: "Duotone", link: "/tools/image/duotone" },
{ text: "Pixelate", link: "/tools/image/pixelate" },
{ text: "Vignette", link: "/tools/image/vignette" },
],
},
{
text: "Watermark & Overlay",
items: [
{ text: "Text Watermark", link: "/tools/watermark-text" },
{ text: "Image Watermark", link: "/tools/watermark-image" },
{ text: "Text Overlay", link: "/tools/text-overlay" },
{ text: "Image Composition", link: "/tools/compose" },
{ text: "Meme Generator", link: "/tools/meme-generator" },
{ text: "Text Watermark", link: "/tools/image/watermark-text" },
{ text: "Image Watermark", link: "/tools/image/watermark-image" },
{ text: "Text Overlay", link: "/tools/image/text-overlay" },
{ text: "Image Composition", link: "/tools/image/compose" },
{ text: "Meme Generator", link: "/tools/image/meme-generator" },
],
},
{
text: "Utilities",
items: [
{ text: "Image Info", link: "/tools/info" },
{ text: "Image Compare", link: "/tools/compare" },
{ text: "Find Duplicates", link: "/tools/find-duplicates" },
{ text: "Color Palette", link: "/tools/color-palette" },
{ text: "QR Code Generator", link: "/tools/qr-generate" },
{ text: "HTML to Image", link: "/tools/html-to-image" },
{ text: "Barcode Reader", link: "/tools/barcode-read" },
{ text: "Image to Base64", link: "/tools/image-to-base64" },
{ text: "Histogram", link: "/tools/histogram" },
{ text: "LQIP Placeholder", link: "/tools/lqip-placeholder" },
{ text: "Barcode Generator", link: "/tools/barcode-generate" },
{ text: "Image Info", link: "/tools/image/info" },
{ text: "Image Compare", link: "/tools/image/compare" },
{ text: "Find Duplicates", link: "/tools/image/find-duplicates" },
{ text: "Color Palette", link: "/tools/image/color-palette" },
{ text: "QR Code Generator", link: "/tools/image/qr-generate" },
{ text: "HTML to Image", link: "/tools/image/html-to-image" },
{ text: "Barcode Reader", link: "/tools/image/barcode-read" },
{ text: "Image to Base64", link: "/tools/image/image-to-base64" },
{ text: "Histogram", link: "/tools/image/histogram" },
{ text: "LQIP Placeholder", link: "/tools/image/lqip-placeholder" },
{ text: "Barcode Generator", link: "/tools/image/barcode-generate" },
],
},
{
text: "Layout",
items: [
{ text: "Collage / Grid", link: "/tools/collage" },
{ text: "Stitch / Combine", link: "/tools/stitch" },
{ text: "Image Splitting", link: "/tools/split" },
{ text: "Border & Frame", link: "/tools/border" },
{ text: "Beautify Screenshot", link: "/tools/beautify" },
{ text: "Circle Crop", link: "/tools/circle-crop" },
{ text: "Image Pad", link: "/tools/image-pad" },
{ text: "Sprite Sheet", link: "/tools/sprite-sheet" },
{ text: "Collage / Grid", link: "/tools/image/collage" },
{ text: "Stitch / Combine", link: "/tools/image/stitch" },
{ text: "Image Splitting", link: "/tools/image/split" },
{ text: "Border & Frame", link: "/tools/image/border" },
{ text: "Beautify Screenshot", link: "/tools/image/beautify" },
{ text: "Circle Crop", link: "/tools/image/circle-crop" },
{ text: "Image Pad", link: "/tools/image/image-pad" },
{ text: "Sprite Sheet", link: "/tools/image/sprite-sheet" },
],
},
{
text: "Format",
items: [
{ text: "SVG to Raster", link: "/tools/svg-to-raster" },
{ text: "Image to SVG", link: "/tools/vectorize" },
{ text: "GIF Tools", link: "/tools/gif-tools" },
{ text: "GIF/WebP Converter", link: "/tools/gif-webp" },
{ text: "SVG to Raster", link: "/tools/image/svg-to-raster" },
{ text: "Image to SVG", link: "/tools/image/vectorize" },
{ text: "GIF Tools", link: "/tools/image/gif-tools" },
{ text: "GIF/WebP Converter", link: "/tools/image/gif-webp" },
],
},
{
text: "AI Tools",
items: [
{ text: "Remove Background", link: "/tools/remove-background" },
{ text: "Image Upscaling", link: "/tools/upscale" },
{ text: "Object Eraser", link: "/tools/erase-object" },
{ text: "OCR / Text Extraction", link: "/tools/ocr" },
{ text: "Face / PII Blur", link: "/tools/blur-faces" },
{ text: "Smart Crop", link: "/tools/smart-crop" },
{ text: "Image Enhancement", link: "/tools/image-enhancement" },
{ text: "Face Enhancement", link: "/tools/enhance-faces" },
{ text: "AI Colorization", link: "/tools/colorize" },
{ text: "Noise Removal", link: "/tools/noise-removal" },
{ text: "Red Eye Removal", link: "/tools/red-eye-removal" },
{ text: "Photo Restoration", link: "/tools/restore-photo" },
{ text: "Passport Photo", link: "/tools/passport-photo" },
{ text: "Content-Aware Resize", link: "/tools/content-aware-resize" },
{ text: "AI Canvas Expand", link: "/tools/ai-canvas-expand" },
{ text: "PNG Transparency Fixer", link: "/tools/transparency-fixer" },
{ text: "Background Replace", link: "/tools/background-replace" },
{ text: "Blur Background", link: "/tools/blur-background" },
{ text: "Remove Background", link: "/tools/image/remove-background" },
{ text: "Image Upscaling", link: "/tools/image/upscale" },
{ text: "Object Eraser", link: "/tools/image/erase-object" },
{ text: "OCR / Text Extraction", link: "/tools/image/ocr" },
{ text: "Face / PII Blur", link: "/tools/image/blur-faces" },
{ text: "Smart Crop", link: "/tools/image/smart-crop" },
{ text: "Image Enhancement", link: "/tools/image/image-enhancement" },
{ text: "Face Enhancement", link: "/tools/image/enhance-faces" },
{ text: "AI Colorization", link: "/tools/image/colorize" },
{ text: "Noise Removal", link: "/tools/image/noise-removal" },
{ text: "Red Eye Removal", link: "/tools/image/red-eye-removal" },
{ text: "Photo Restoration", link: "/tools/image/restore-photo" },
{ text: "Passport Photo", link: "/tools/image/passport-photo" },
{ text: "Content-Aware Resize", link: "/tools/image/content-aware-resize" },
{ text: "AI Canvas Expand", link: "/tools/image/ai-canvas-expand" },
{ text: "PNG Transparency Fixer", link: "/tools/image/transparency-fixer" },
{ text: "Background Replace", link: "/tools/image/background-replace" },
{ text: "Blur Background", link: "/tools/image/blur-background" },
],
},
],
},
{
text: "Video",
items: [
{ text: "Convert Video", link: "/tools/convert-video" },
{ text: "Compress Video", link: "/tools/compress-video" },
{ text: "Trim Video", link: "/tools/trim-video" },
{ text: "Mute Video", link: "/tools/mute-video" },
{ text: "Video to GIF", link: "/tools/video-to-gif" },
{ text: "Resize Video", link: "/tools/resize-video" },
{ text: "Crop Video", link: "/tools/crop-video" },
{ text: "Rotate Video", link: "/tools/rotate-video" },
{ text: "Change FPS", link: "/tools/change-fps" },
{ text: "Video Color", link: "/tools/video-color" },
{ text: "Video Speed", link: "/tools/video-speed" },
{ text: "Reverse Video", link: "/tools/reverse-video" },
{ text: "Normalize Audio", link: "/tools/video-loudnorm" },
{ text: "Aspect Pad", link: "/tools/aspect-pad" },
{ text: "Blur Pad", link: "/tools/blur-pad" },
{ text: "Watermark Video", link: "/tools/watermark-video" },
{ text: "Stabilize Video", link: "/tools/stabilize-video" },
{ text: "GIF to Video", link: "/tools/gif-to-video" },
{ text: "Video to WebP", link: "/tools/video-to-webp" },
{ text: "Video to Frames", link: "/tools/video-to-frames" },
{ text: "Merge Videos", link: "/tools/merge-videos" },
{ text: "Replace Audio", link: "/tools/replace-audio" },
{ text: "Burn Subtitles", link: "/tools/burn-subtitles" },
{ text: "Embed Subtitles", link: "/tools/embed-subtitles" },
{ text: "Extract Subtitles", link: "/tools/extract-subtitles" },
{ text: "Images to Video", link: "/tools/images-to-video" },
{ text: "Clean Video Metadata", link: "/tools/video-metadata" },
{ text: "Auto Subtitles", link: "/tools/auto-subtitles" },
{ text: "Extract Audio", link: "/tools/extract-audio" },
{ text: "Convert Video", link: "/tools/video/convert-video" },
{ text: "Compress Video", link: "/tools/video/compress-video" },
{ text: "Trim Video", link: "/tools/video/trim-video" },
{ text: "Mute Video", link: "/tools/video/mute-video" },
{ text: "Video to GIF", link: "/tools/video/video-to-gif" },
{ text: "Resize Video", link: "/tools/video/resize-video" },
{ text: "Crop Video", link: "/tools/video/crop-video" },
{ text: "Rotate Video", link: "/tools/video/rotate-video" },
{ text: "Change FPS", link: "/tools/video/change-fps" },
{ text: "Video Color", link: "/tools/video/video-color" },
{ text: "Video Speed", link: "/tools/video/video-speed" },
{ text: "Reverse Video", link: "/tools/video/reverse-video" },
{ text: "Normalize Audio", link: "/tools/video/video-loudnorm" },
{ text: "Aspect Pad", link: "/tools/video/aspect-pad" },
{ text: "Blur Pad", link: "/tools/video/blur-pad" },
{ text: "Watermark Video", link: "/tools/video/watermark-video" },
{ text: "Stabilize Video", link: "/tools/video/stabilize-video" },
{ text: "GIF to Video", link: "/tools/video/gif-to-video" },
{ text: "Video to WebP", link: "/tools/video/video-to-webp" },
{ text: "Video to Frames", link: "/tools/video/video-to-frames" },
{ text: "Merge Videos", link: "/tools/video/merge-videos" },
{ text: "Replace Audio", link: "/tools/video/replace-audio" },
{ text: "Burn Subtitles", link: "/tools/video/burn-subtitles" },
{ text: "Embed Subtitles", link: "/tools/video/embed-subtitles" },
{ text: "Extract Subtitles", link: "/tools/video/extract-subtitles" },
{ text: "Images to Video", link: "/tools/video/images-to-video" },
{ text: "Clean Video Metadata", link: "/tools/video/video-metadata" },
{ text: "Auto Subtitles", link: "/tools/video/auto-subtitles" },
{ text: "Extract Audio", link: "/tools/video/extract-audio" },
],
},
{
text: "Audio",
items: [
{ text: "Convert Audio", link: "/tools/convert-audio" },
{ text: "Trim Audio", link: "/tools/trim-audio" },
{ text: "Volume Adjust", link: "/tools/volume-adjust" },
{ text: "Normalize Audio", link: "/tools/normalize-audio" },
{ text: "Fade Audio", link: "/tools/fade-audio" },
{ text: "Reverse Audio", link: "/tools/reverse-audio" },
{ text: "Audio Speed", link: "/tools/audio-speed" },
{ text: "Pitch Shift", link: "/tools/pitch-shift" },
{ text: "Audio Channels", link: "/tools/audio-channels" },
{ text: "Silence Removal", link: "/tools/silence-removal" },
{ text: "Noise Reduction", link: "/tools/noise-reduction" },
{ text: "Merge Audio", link: "/tools/merge-audio" },
{ text: "Split Audio", link: "/tools/split-audio" },
{ text: "Ringtone Maker", link: "/tools/ringtone-maker" },
{ text: "Waveform Image", link: "/tools/waveform-image" },
{ text: "Audio Metadata", link: "/tools/audio-metadata" },
{ text: "Transcribe Audio", link: "/tools/transcribe-audio" },
{ text: "Convert Audio", link: "/tools/audio/convert-audio" },
{ text: "Trim Audio", link: "/tools/audio/trim-audio" },
{ text: "Volume Adjust", link: "/tools/audio/volume-adjust" },
{ text: "Normalize Audio", link: "/tools/audio/normalize-audio" },
{ text: "Fade Audio", link: "/tools/audio/fade-audio" },
{ text: "Reverse Audio", link: "/tools/audio/reverse-audio" },
{ text: "Audio Speed", link: "/tools/audio/audio-speed" },
{ text: "Pitch Shift", link: "/tools/audio/pitch-shift" },
{ text: "Audio Channels", link: "/tools/audio/audio-channels" },
{ text: "Silence Removal", link: "/tools/audio/silence-removal" },
{ text: "Noise Reduction", link: "/tools/audio/noise-reduction" },
{ text: "Merge Audio", link: "/tools/audio/merge-audio" },
{ text: "Split Audio", link: "/tools/audio/split-audio" },
{ text: "Ringtone Maker", link: "/tools/audio/ringtone-maker" },
{ text: "Waveform Image", link: "/tools/audio/waveform-image" },
{ text: "Audio Metadata", link: "/tools/audio/audio-metadata" },
{ text: "Transcribe Audio", link: "/tools/audio/transcribe-audio" },
],
},
{
text: "PDF & Documents",
items: [
{ text: "PDF to Image", link: "/tools/pdf-to-image" },
{ text: "Merge PDFs", link: "/tools/merge-pdf" },
{ text: "Split PDF", link: "/tools/split-pdf" },
{ text: "Compress PDF", link: "/tools/compress-pdf" },
{ text: "Rotate PDF", link: "/tools/rotate-pdf" },
{ text: "Convert Document", link: "/tools/convert-document" },
{ text: "Convert Presentation", link: "/tools/convert-presentation" },
{ text: "Convert Spreadsheet", link: "/tools/convert-spreadsheet" },
{ text: "Excel to PDF", link: "/tools/excel-to-pdf" },
{ text: "Word to PDF", link: "/tools/word-to-pdf" },
{ text: "Extract Pages", link: "/tools/extract-pages" },
{ text: "Remove Pages", link: "/tools/remove-pages" },
{ text: "Organize PDF", link: "/tools/organize-pdf" },
{ text: "Protect PDF", link: "/tools/protect-pdf" },
{ text: "Unlock PDF", link: "/tools/unlock-pdf" },
{ text: "Repair PDF", link: "/tools/repair-pdf" },
{ text: "Web-Optimize PDF", link: "/tools/linearize-pdf" },
{ text: "Grayscale PDF", link: "/tools/grayscale-pdf" },
{ text: "PDF/A Convert", link: "/tools/pdfa-convert" },
{ text: "Crop PDF", link: "/tools/crop-pdf" },
{ text: "N-up PDF", link: "/tools/nup-pdf" },
{ text: "Booklet PDF", link: "/tools/booklet-pdf" },
{ text: "Watermark PDF", link: "/tools/watermark-pdf" },
{ text: "PDF Page Numbers", link: "/tools/pdf-page-numbers" },
{ text: "Flatten PDF", link: "/tools/flatten-pdf" },
{ text: "Redact PDF", link: "/tools/redact-pdf" },
{ text: "PDF to Text", link: "/tools/pdf-to-text" },
{ text: "PDF to Word", link: "/tools/pdf-to-word" },
{ text: "PDF Metadata", link: "/tools/pdf-metadata" },
{ text: "PowerPoint to PDF", link: "/tools/powerpoint-to-pdf" },
{ text: "HTML to PDF", link: "/tools/html-to-pdf" },
{ text: "Markdown to Word", link: "/tools/markdown-to-docx" },
{ text: "Markdown to HTML", link: "/tools/markdown-to-html" },
{ text: "Markdown to PDF", link: "/tools/markdown-to-pdf" },
{ text: "Convert EPUB", link: "/tools/epub-convert" },
{ text: "Convert to EPUB", link: "/tools/to-epub" },
{ text: "PDF OCR", link: "/tools/ocr-pdf" },
{ text: "PDF to Image", link: "/tools/pdf/pdf-to-image" },
{ text: "Merge PDFs", link: "/tools/pdf/merge-pdf" },
{ text: "Split PDF", link: "/tools/pdf/split-pdf" },
{ text: "Compress PDF", link: "/tools/pdf/compress-pdf" },
{ text: "Rotate PDF", link: "/tools/pdf/rotate-pdf" },
{ text: "Convert Document", link: "/tools/pdf/convert-document" },
{ text: "Convert Presentation", link: "/tools/pdf/convert-presentation" },
{ text: "Convert Spreadsheet", link: "/tools/pdf/convert-spreadsheet" },
{ text: "Excel to PDF", link: "/tools/pdf/excel-to-pdf" },
{ text: "Word to PDF", link: "/tools/pdf/word-to-pdf" },
{ text: "Extract Pages", link: "/tools/pdf/extract-pages" },
{ text: "Remove Pages", link: "/tools/pdf/remove-pages" },
{ text: "Organize PDF", link: "/tools/pdf/organize-pdf" },
{ text: "Protect PDF", link: "/tools/pdf/protect-pdf" },
{ text: "Unlock PDF", link: "/tools/pdf/unlock-pdf" },
{ text: "Repair PDF", link: "/tools/pdf/repair-pdf" },
{ text: "Web-Optimize PDF", link: "/tools/pdf/linearize-pdf" },
{ text: "Grayscale PDF", link: "/tools/pdf/grayscale-pdf" },
{ text: "PDF/A Convert", link: "/tools/pdf/pdfa-convert" },
{ text: "Crop PDF", link: "/tools/pdf/crop-pdf" },
{ text: "N-up PDF", link: "/tools/pdf/nup-pdf" },
{ text: "Booklet PDF", link: "/tools/pdf/booklet-pdf" },
{ text: "Watermark PDF", link: "/tools/pdf/watermark-pdf" },
{ text: "PDF Page Numbers", link: "/tools/pdf/pdf-page-numbers" },
{ text: "Flatten PDF", link: "/tools/pdf/flatten-pdf" },
{ text: "Redact PDF", link: "/tools/pdf/redact-pdf" },
{ text: "PDF to Text", link: "/tools/pdf/pdf-to-text" },
{ text: "PDF to Word", link: "/tools/pdf/pdf-to-word" },
{ text: "PDF Metadata", link: "/tools/pdf/pdf-metadata" },
{ text: "PowerPoint to PDF", link: "/tools/pdf/powerpoint-to-pdf" },
{ text: "HTML to PDF", link: "/tools/pdf/html-to-pdf" },
{ text: "Markdown to Word", link: "/tools/pdf/markdown-to-docx" },
{ text: "Markdown to HTML", link: "/tools/pdf/markdown-to-html" },
{ text: "Markdown to PDF", link: "/tools/pdf/markdown-to-pdf" },
{ text: "Convert EPUB", link: "/tools/pdf/epub-convert" },
{ text: "Convert to EPUB", link: "/tools/pdf/to-epub" },
{ text: "PDF OCR", link: "/tools/pdf/ocr-pdf" },
],
},
{
text: "Data",
items: [
{ text: "Chart Maker", link: "/tools/chart-maker" },
{ text: "CSV to Excel", link: "/tools/csv-excel" },
{ text: "CSV to JSON", link: "/tools/csv-json" },
{ text: "JSON to XML", link: "/tools/json-xml" },
{ text: "Split CSV", link: "/tools/split-csv" },
{ text: "Merge CSVs", link: "/tools/merge-csvs" },
{ text: "YAML / JSON", link: "/tools/yaml-json" },
{ text: "XML to CSV", link: "/tools/xml-to-csv" },
{ text: "Create ZIP", link: "/tools/create-zip" },
{ text: "Extract ZIP", link: "/tools/extract-zip" },
{ text: "Chart Maker", link: "/tools/data/chart-maker" },
{ text: "CSV to Excel", link: "/tools/data/csv-excel" },
{ text: "CSV to JSON", link: "/tools/data/csv-json" },
{ text: "JSON to XML", link: "/tools/data/json-xml" },
{ text: "Split CSV", link: "/tools/data/split-csv" },
{ text: "Merge CSVs", link: "/tools/data/merge-csvs" },
{ text: "YAML / JSON", link: "/tools/data/yaml-json" },
{ text: "XML to CSV", link: "/tools/data/xml-to-csv" },
{ text: "Create ZIP", link: "/tools/data/create-zip" },
{ text: "Extract ZIP", link: "/tools/data/extract-zip" },
],
},
],