Tóm tắt nhanh:
ak-storageđưa ảnh, video, slide lên kho lưu trữ kiểu S3 (Cloudflare R2, AWS S3, MinIO, Backblaze B2, DigitalOcean Spaces), tải về, liệt kê hoặc đồng bộ, rồi đọc lại để chắc từng file đã nằm đúng chỗ. Link chỉ được gọi là chia sẻ được sau khi đã tải thử. Chưa có cấu hình thì nó không giả vờ: file vẫn ở máy và nó nói rõ là chưa tải lên.
Công khai: mình là maintainer của AgentKit và có quan hệ affiliate: link AgentKit trong bài là link affiliate, mua qua link này bạn được giảm 30%.
Tóm tắt
Dùng khi bạn vừa làm xong asset và cần đưa lên bucket để lấy link, đẩy cả thư mục campaign lên một prefix, hoặc lấy lại file từ bucket. Sync chỉ đẩy lên, không dọn bucket, nên đừng dùng nó để xoá object ở xa.
flowchart LR
A["File asset trên máy"] --> B["ak-storage"]
C["Object trên bucket"] --> B
B --> D["Object đã đọc lại, link đã kiểm"]
B --> E["File tải về máy"]
B --> F["Thiếu cấu hình: file giữ ở máy"]Nó dựa trên 4 ý:
| Ý | Câu hỏi | Ví dụ |
|---|---|---|
| Thao tác và đường dẫn | Bạn muốn làm gì, với file hay thư mục nào? | upload ./assets/banner.png, download designs/logo.svg, list campaign-q4/, sync ./campaign |
| Cấu hình trong file môi trường | Skill lấy địa chỉ, khoá và bucket từ đâu? | S3_ENDPOINT, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_BUCKET; thêm S3_REGION, S3_PUBLIC_URL nếu cần |
| Link chia sẻ đã kiểm | Người khác mở link này được chưa? | Chỉ khi skill đã kiểm quyền truy cập của bucket và tải thử được file qua link |
| Sync chỉ đẩy lên | Sync có xoá gì trên bucket không? | Không. Object đã có ở xa giữ nguyên, quyền công khai không đổi |
Trước khi ghi đè, skill kiểm xem đích đã có object cùng tên chưa. Khoá chỉ nằm trong file .env đã gitignore và không bị in ra log. Nên dùng token chỉ có quyền trên đúng một bucket.
Prompt mẫu để tải ảnh lên và lấy link:
/ak-storage upload ./assets/banner.png
Đích: prefix campaign-q4/.
Xong khi: có link công khai mở được từ trình duyệt.| Cờ | Để làm gì | Từ ak |
|---|---|---|
--bucket | Nhận một giá trị: tên bucket. Skill không mô tả nó đổi hành vi ra sao | 2.15.0 |
Sau tên skill bạn ghi thao tác (upload, download, list, sync) rồi file hoặc đường dẫn.
Phần dưới đây là bản chi tiết: luồng chạy, 4 tình huống kèm prompt, cách ghi đầu vào và cờ --bucket, lịch sử thay đổi theo bản ak và các lỗi hay vấp. Bản chi tiết và trang trực quan dành cho subscriber. Agent của bạn cũng tìm được trong đó qua MCP của portal.
Mở khi tài khoản có quyền subscriber
Bài này dành cho subscriber
Khi tài khoản có quyền, toàn bộ bài, bản visual tương tác và lệnh gọi từ agent đều mở.
- Đăng nhập hoặc tạo tài khoản modernEngineerQuyền đọc gắn với email tài khoản.
- Chọn gói trên trang Bảng giáGói 1, 3 hoặc 12 tháng, trả bằng chuyển khoản VietQR. Quyền đọc mở khoảng một phút sau khi tiền về.
- Hoặc nhập mã Facebook subscriberNgười ủng hộ trang qua Facebook nhận mã kích hoạt qua tin nhắn mỗi tháng.
Đã là subscriber? Đăng nhập để đọc.
Dùng bài này trong agent của bạn
Lấy API keyChép đoạn dưới, dán vào Claude Code, Codex hay agent bạn đang dùng. Agent đọc bài rồi đối chiếu với repo đang mở.
Đọc bài "ak-storage: đưa asset lên kho S3 và kiểm lại từng file" trên modernEngineer rồi áp dụng vào repo này.
1. Gọi tool content_get của MCP server modernengineer với locale "vi", slug "ak-storage". Nếu chưa nối MCP server modernengineer, dừng lại và hướng dẫn tôi nối theo https://modernengineer.dev/vi/mcp.
2. Tóm tắt các bước chính của bài, chỉ ra bước nào áp dụng được cho repo này.
3. Đề xuất thay đổi cụ thể và hỏi tôi trước khi sửa file.Nối MCP cho Claude Code (một lần)
claude mcp add --transport http modernengineer \
https://api.modernengineer.dev/mcp \
--header "Authorization: Bearer <API key>"Đọc trọn bài qua MCP cần API key của tài khoản subscriber hoặc đã mua guide này. Không có quyền, agent sẽ chỉ đọc được phần mở đầu.
- Phiên bản
- v1.0.0
- Cập nhật
- 22/10/2026
- Giấy phép
- Bảo lưu mọi quyền
- Slug
- ak-storage


