Tóm tắt nhanh / Lệnh

Bộ Marketing

/ak:storage

Object storage tương thích S3

Trợ lý object storage tương thích S3 cho asset marketing trên Cloudflare R2, AWS S3, MinIO, Backblaze B2 và DigitalOcean Spaces.

01

Xác định thao tác

02

Kiểm tra config

03

Kiểm tra SDK

04

Chọn provider

Nguyên tắc 01

Asset marketing có thể dùng mọi backend tương thích S3 nếu endpoint, bucket, key và region được cấu hình.

Nguyên tắc 02

Skill trả URL public dễ chia sẻ khi có S3_PUBLIC_URL hoặc URL từ provider.

Nguyên tắc 03

Fallback là hành vi có chủ đích: storage chưa cấu hình không được làm hỏng workflow asset local.

Nguyên tắc 04

Credential không bao giờ được hiển thị; dùng access token giới hạn quyền theo bucket.

Bản đồ thực thi

Các nhánh chính từ đầu vào đến kết quả, bám theo cách command chạy khi dùng thật.

01

Khởi động

Đầu vào, phạm vi, route

  1. 1 Xác định thao tác Xác định người dùng cần upload, download, list, lấy public URL, delete, sync hay fallback local-only.
  2. 2 Kiểm tra config Kiểm tra S3_ENDPOINT, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_BUCKET, region tùy chọn và public URL.
02

Xử lý

Agent / skill thực thi

  1. 3 Kiểm tra SDK Xác nhận @aws-sdk/client-s3 đã cài; nếu chưa thì trả lỗi fallback đúng chuẩn.
  2. 4 Chọn provider Map endpoint sang Cloudflare R2, AWS S3, MinIO, Backblaze B2, DigitalOcean Spaces hoặc storage tương thích.
03

Kiểm chứng

Gate, review, xác thực

  1. 5 Chạy client Dùng s3-client.cjs cho thao tác upload, download, list, getPublicUrl hoặc remove.
  2. 6 Trả URL hoặc path Trả CDN public URL nếu có cấu hình, provider URL nếu có, hoặc chỉ path local trong fallback.
04

Đóng

Báo cáo, bàn giao, artifact

  1. 7 Xử lý lỗi Khi chưa cấu hình, mọi thao tác trả lỗi nhẹ nhàng và không throw exception.

Mode / route nên dùng

upload(localPath, remotePath, options)

Operation client đọc asset marketing local và gửi PutObject khi đã duyệt.

Nghiên cứu:
Config + path
Review:
Secret exposure
Xác thực:
Upload result
download(remotePath, localPath)

Operation client tạo thư mục cha và ghi byte đã download.

Nghiên cứu:
Object key
Review:
Wrong key
Xác thực:
Local file
list(prefix, maxKeys)

Operation client gửi ListObjectsV2 cho prefix có giới hạn.

Nghiên cứu:
Prefix
Review:
Overbroad list
Xác thực:
Object list
remove(remotePath)

Operation client xóa đúng một key đã được duyệt.

Nghiên cứu:
Object key
Review:
Wrong deletion
Xác thực:
Remove result
exists(remotePath)

Operation client gửi HeadObject và trả kết quả tồn tại.

Nghiên cứu:
Object key
Review:
Auth vs missing
Xác thực:
Existence result
getPublicUrl(remotePath)

Operation client dựng URL mà không gửi request tới provider.

Nghiên cứu:
Public URL config
Review:
Private bucket
Xác thực:
URL string
sync(localFolder, remotePrefix, options)

Operation client scan folder local; dry run preview mapping file-sang-object mà không upload.

Nghiên cứu:
Folder mapping
Review:
Unexpected writes
Xác thực:
Dry-run mapping

Prompt mẫu

Ví dụ gọi command theo từng flag, subcommand, mode hoặc route dùng được trong workflow thực tế.

Upload asset Khuyến nghị
/ak:storage "Tải lên assets/images/launch-hero.png tới campaign/launch/hero.png chỉ sau khi được phê duyệt; trả về URL nếu đã cấu hình"
Dùng khi:
Khi cần host remote một asset marketing đã tạo.
Kết quả:
Client đọc file local, gửi PutObject khi đã duyệt, rồi trả URL public hoặc lỗi fallback nhẹ khi chưa cấu hình, không throw.
Download object
/ak:storage "Tải xuống designs/pricing-deck.html tới assets/slides/pricing-deck.html sau khi xác nhận khóa"
Dùng khi:
Khi cần ghi đúng một object remote đã duyệt ra path local.
Kết quả:
Thao tác download tạo thư mục cha và ghi byte object ra path local đã nêu, hoặc báo thiếu key/config mà không crash.
Liệt kê thư mục
/ak:storage "Liệt kê các khóa từ xa đã được phê duyệt dưới designs/ mà không xóa hoặc tải lên bất kỳ thứ gì"
Dùng khi:
Khi cần xem các object key remote dưới một prefix.
Kết quả:
ListObjectsV2 trả danh sách object giới hạn theo prefix, hoặc trạng thái fallback khi thiếu credential hay SDK.
Xóa key
/ak:storage "Xóa chính xác khóa đã được phê duyệt drafts/old-banner.png và không xóa đối tượng nào khác"
Dùng khi:
Khi phải xóa đúng một object đã duyệt, không xóa thêm.
Kết quả:
Thao tác remove xóa đúng một key đã duyệt và báo thành công hoặc lỗi có giới hạn, không quét cả bucket.
Kiểm exists
/ak:storage "Kiểm tra xem campaign/launch/hero.png có tồn tại bằng HeadObject và không tải xuống"
Dùng khi:
Khi chỉ cần biết một remote key có tồn tại hay không.
Kết quả:
HeadObject trả kết quả tồn tại cho key đó, phân biệt object thiếu với lỗi auth hoặc config.
URL public
/ak:storage "Dùng getPublicUrl cho designs/pricing-deck.html mà không gửi yêu cầu tới nhà cung cấp"
Dùng khi:
Khi cần URL chia sẻ cho asset đã upload.
Kết quả:
getPublicUrl dựng URL custom domain hoặc provider từ config mà không gửi request tới bucket.
Sync asset
/ak:storage "Xem trước đồng bộ assets/slides/ tới slides/ ở chế độ dry run; hiển thị mọi khóa đối tượng và chờ trước khi tải lên"
Dùng khi:
Khi muốn mirror một thư mục asset local lên remote storage.
Kết quả:
Dry run sync liệt kê mọi mapping file-local sang object và chờ duyệt trước khi PutObject.

Phạm vi xử lý

  • Storage tương thích S3
  • Cloudflare R2
  • AWS S3
  • MinIO
  • Backblaze B2
  • DigitalOcean Spaces
  • URL asset
  • Fallback nhẹ nhàng

Tiếp theo