Chỉ với 2 dòng lệnh PowerShell kết hợp công cụ CLI, toàn bộ ảnh trong thư mục sẽ tự động đổi tên theo từ khóa SEO (có gắn thẻ thumbnail) và nén tối ưu sang WebP, AVIF hoặc JPG chỉ trong vài giây.
- Nỗi khổ của dân content sau mỗi bài viết
- Dùng dòng lệnh hay các web nén ảnh online
- Thực hành ngay với 2 dòng lệnh PowerShell
- -Bước 1: Mở PowerShell tại thư mục ảnh
- -Bước 2: Chạy lệnh đổi tên ảnh chuẩn SEO (Lệnh 1)
- -Bước 3: Chạy lệnh nén và chuyển đổi định dạng (Lệnh 2)
- Kết quả thực tế qua 2 bước xử lý
- -Phần 1: Tự động đổi tên chuẩn cấu trúc SEO (Lệnh 1)
- -Phần 2: Hiệu quả nén PNG tối ưu vs. WebP thế hệ mới (Lệnh 2)
- Câu hỏi thường gặp
Nỗi khổ của dân content sau mỗi bài viết
Nếu bạn làm nội dung cho website, chắc hẳn các trường hợp này xảy ra hàng ngày:
- Ảnh tải từ Canva về bị đặt tên mặc định dạng số (
1.avif,2.avif), còn ảnh chụp màn hình thì dính tên layer nháp. - Ảnh gốc thường đi kèm các dữ liệu ẩn như thẻ EXIF, lịch sử máy ảnh và bảng màu ICC, làm tăng dung lượng lên 2-3 MB mỗi ảnh. Điều này làm giảm điểm Core Web Vitals (đặc biệt là chỉ số LCP) trên Google PageSpeed Insights.
- Kéo thả từng ảnh lên TinyPNG hoặc Squoosh, chờ tải về, giải nén rồi đổi tên từng file sang dạng
tu-khoa-seo-1.webp... Với một bài hướng dẫn 15-20 ảnh, quy trình lặp lại này tốn khá nhiều thời gian.
Để giải phóng thời gian làm nội dung, bạn chỉ cần một thao tác tự động hóa giải quyết 3 khâu: quét ảnh, đổi tên theo từ khóa SEO, nén nhẹ và đổi sang định dạng mong muốn chỉ với 2 dòng lệnh.
Dùng dòng lệnh hay các web nén ảnh online
"Dùng web nén ảnh online tiện hơn chứ?" Bảng so sánh dưới đây sẽ cho bạn câu trả lời:
| Yêu cầu | Dùng dòng lệnh | Dùng web nén ảnh |
| Tốc độ xử lý | Xong trong 1-2 giây cho cả chục ảnh | Mất vài phút tải lên, nén, tải về |
| Tự động đổi tên chuẩn SEO | Tự động 100% (Gán -thumbnail, -1, -2...) | Phải ngồi gõ đổi tên thủ công từng file |
| Chuyển đổi định dạng | Tùy ý chọn WebP, AVIF, JPG, PNG | Thường chỉ cố định 1 định dạng duy nhất |
| Giới hạn số lượng ảnh | Không giới hạn (nén 100 ảnh cùng lúc) | Bị giới hạn dung lượng hoặc số ảnh/lượt |
| Bảo mật hình ảnh | Xử lý 100% trên máy tính | Phải tải ảnh nội bộ lên máy chủ bên thứ ba |
- Qua bảng so sánh trên, có thể thấy việc sử dụng dòng lệnh mang lại hiệu suất và khả năng tự động hóa vượt trội so với các công cụ xử lý online.
- Trong dự án này, chúng ta sẽ kết hợp sức mạnh của:
- PowerShell (để tự động hóa thao tác hệ thống, đổi tên hàng loạt)
- Thư viện Sharp thông qua Node.js (công cụ nén và chuyển đổi định dạng ảnh tốc độ cao hàng đầu hiện nay)
- Để giải quyết triệt để bài toán tối ưu ảnh.
Thực hành ngay với 2 dòng lệnh PowerShell
Bước 1: Mở PowerShell tại thư mục ảnh
Trước tiên, hãy đảm bảo máy tính của bạn đã cài Node.js. Sau đó:
- Mở thư mục chứa ảnh cần tối ưu của bạn.
- Click chuột vào thanh địa chỉ của thư mục, gõ
powershellrồi ấnEnter.
Lưu ý: Nếu vừa cài Node.js xong, hãy tắt cửa sổ PowerShell đi và mở lại để hệ thống nhận diện lệnh npx.
Mẹo chọn ảnh thumbnail: Hệ thống sẽ lấy ảnh đứng đầu theo bảng chữ cái để đặt làm -thumbnail. Hãy đổi tên ảnh bạn muốn làm ảnh đại diện thành 0.avif hoặc 1.avif trước khi chạy lệnh.
Bước 2: Chạy lệnh đổi tên ảnh chuẩn SEO (Lệnh 1)
Copy đoạn mã dưới đây và dán vào cửa sổ PowerShell, sau đó ấn Enter. Lệnh này sẽ tự động quét các ảnh .avif, .avif, .avif và .webp hiện có và đổi tên chúng theo từ khóa bạn muốn. Ảnh đầu tiên sẽ mang đuôi -thumbnail, các ảnh tiếp theo mang đuôi -1, -2...
$i=0; dir *.avif, *.avif, *.avif, *.webp -ErrorAction SilentlyContinue | % { Rename-Item $_ -NewName ("huong-dan-seo-onpage" + $(if($i++ -eq 0){"-thumbnail"}else{"-$($i-1)"}) + $_.Extension) }(Lưu ý: Bạn hãy thay chữ huong-dan-seo-onpage trong đoạn mã trên thành từ khóa chính của bài viết nhé).
Bước 3: Chạy lệnh nén và chuyển đổi định dạng (Lệnh 2)
Tiếp tục dán đoạn mã thứ 2 này vào PowerShell. Hệ thống sẽ tạo thư mục con tên là optimized, dùng npx sharp-cli nén toàn bộ ảnh và lưu thành định dạng WebP.
$ext="webp"; md optimized -ErrorAction SilentlyContinue; dir *.avif, *.avif, *.avif, *.webp -ErrorAction SilentlyContinue | % { npx -y sharp-cli@latest -i $_.Name -f $ext -o "optimized/$($_.BaseName).$ext" }(Lưu ý: Mặc định ảnh xuất ra là .webp. Nếu muốn xuất sang định dạng khác, bạn chỉ cần đổi chữ webp ở đầu lệnh $ext="webp" thành avif, jpg, hoặc png)
Mức độ giảm dung lượng: Lệnh sử dụng cấu hình nén mặc định của Sharp (chất lượng 80/100). Tỷ lệ giảm thực tế dao động linh hoạt khoảng 30% - 85% tùy định dạng: giảm sâu nhất với ảnh PNG gốc (50% - 85%), giảm vừa phải với JPG (25% - 45%), và có thể không giảm hoặc tăng nhẹ dung lượng nếu nén lại ảnh WebP đã được tối ưu trước đó.
Hoàn tất: Ảnh gốc của bạn vẫn được giữ nguyên không đổi. Bạn chỉ cần vào thư mục optimized lấy ảnh đã nén để đăng lên website.
Kết quả thực tế qua 2 bước xử lý
Để bạn kiểm chứng độ hiệu quả, tôi thử nghiệm trực tiếp trên folder gồm 5 ảnh chụp màn hình PNG (1600 x 900 px) chứa nhiều bảng biểu và chữ chi tiết. Mục tiêu từ khóa SEO là plc-la-gi.
Phần 1: Tự động đổi tên chuẩn cấu trúc SEO (Lệnh 1)
Chỉ sau đúng 0.5 giây, toàn bộ file dạng số mặc định đã được chuẩn hóa lại toàn bộ cấu trúc URL-friendly, nhận diện chính xác ảnh số 1 làm thumbnail:
| Tên file gốc | Tên file sau khi chạy lệnh | Trạng thái xử lý |
1.avif | plc-la-gi-thumbnail.webp | Gán thẻ Thumbnail tự động cho ảnh đại diện |
2.avif | plc-la-gi-1.webp | Đánh số thứ tự tăng dần theo từ khóa chính |
3.avif | plc-la-gi-2.webp | Chuẩn hóa chữ thường, gạch nối không dấu |
4.avif | plc-la-gi-3.webp | Đánh số thứ tự tăng dần |
5.avif | plc-la-gi-4.webp | Đánh số thứ tự tăng dần |
Kết quả: Quy trình đổi tên hoàn toàn tự động, giữ nguyên 100% dung lượng và chất lượng gốc để chuẩn bị cho bước nén.
Phần 2: Hiệu quả nén PNG tối ưu vs. WebP thế hệ mới (Lệnh 2)
Sau khi có tên file chuẩn SEO, lệnh thứ 2 đưa ảnh qua thư viện xử lý sharp. Dưới đây là bảng đối đầu dung lượng thực tế giữa việc nén giữ nguyên định dạng PNG so với chuyển đổi sang WebP và AVIF:
| Tên file sau đổi tên | Dung lượng gốc (PNG) | Nén sang WebP | Nén sang AVIF |
...-thumbnail | 2.62 MB | 121 KB (-95.4%) | 65.7 KB (-97.5%) |
...-1 | 177 KB | 37.6 KB (-78.7%) | 21.4 KB (-87.9%) |
...-2 | 1.04 MB | 58.3 KB (-94.5%) | 33.3 KB (-96.1%) |
...-3 | 1.22 MB | 36.2 KB (-96.1%) | 22.6 KB (-98.2%) |
...-4 | 1.83 MB | 168 KB (-90.9%) | 90.7 KB (-95.1%) |
Đánh giá chi tiết:
- Tổng dung lượng toàn bộ bài viết:
- Ảnh Gốc (PNG chưa nén): ~6.92 MB (khiến trang tải rất chậm, dễ rớt điểm LCP).
- Nén sang WebP tối ưu: Còn ~474 KB (giảm 93%).
- Nén sang AVIF: Rút gọn chỉ còn 244 KB (giảm sâu tới 96.5%, tối ưu tuyệt đối cho PageSpeed Insights).
- Chất lượng hiển thị thực tế:
- Kích thước ảnh giữ nguyên vẹn 1600 x 900 px.
- Các nét chữ nhỏ trên giao diện chụp màn hình hiển thị sắc nét, không bị nhòe hay vỡ viền.
- Thời gian thực thi:
- Toàn bộ khâu quét, nén và xuất file chỉ diễn ra trong vòng 1 - 2 giây.
👉 Kiểm chứng trực tiếp: Bạn có thể tự mình tải và so sánh chất lượng ảnh gốc, PNG sau nén và WebP tại Thư mục Google Drive này.
Câu hỏi thường gặp
Không. Lệnh thứ 2 đã tự động tạo một thư mục mới tên là optimized/ và xuất toàn bộ ảnh đã nén vào đó. Ảnh gốc ban đầu vẫn được giữ nguyên 100% để dự phòng.
Trong cấu trúc SEO Onpage, ảnh đại diện bài viết (Featured Image / Thumbnail) cần chứa từ khóa chính xác để tối ưu hiển thị trên thẻ Open Graph (Facebook, Zalo) và Google Discover. Việc tự động nhận diện ảnh số 1 làm thumbnail giúp bạn tải lên CMS mà không cần sửa tay.
Hai lệnh trên được thiết kế tối ưu riêng cho PowerShell trên hệ điều hành Windows. Nếu dùng Mac/Linux, bạn có thể sử dụng vòng lặp for trong Terminal để chạy npx sharp-cli tương tự.

Sang Phạm
Developer and Content Creator.
Đăng ký nhận bài viết mới
Tham gia cùng các độc giả khác để nhận những bài viết mới nhất về Công nghệ, Lập trình và AI hàng tuần. Không spam, hủy bất cứ lúc nào.


