{"product_id":"claude-api-shopee-open-platform-tự-dộng-hoa-nang-cao-cho-seller","title":"Claude API + Shopee Open Platform — Tự động hóa nâng cao cho seller","description":"\n\u003cp\u003eNếu bạn đã quen với việc dùng Claude Chat để phân tích dữ liệu Shopee, bước tiếp theo là tự động hóa toàn bộ quy trình bằng cách kết nối Claude API trực tiếp với Shopee Open Platform. Bài viết này hướng dẫn bạn xây dựng hệ thống tự động hóa hoàn chỉnh — từ kiến trúc tổng quan đến code mẫu có thể chạy ngay.\u003c\/p\u003e\n\n\u003ch2\u003eTổng quan Shopee Open Platform\u003c\/h2\u003e\n\u003cp\u003eShopee Open Platform là bộ API chính thức cho phép developer và seller tương tác với hệ thống Shopee thông qua code. Các tính năng chính bao gồm:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eShop API:\u003c\/strong\u003e Quản lý thông tin shop, lấy danh sách sản phẩm, cập nhật giá và tồn kho\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eProduct API:\u003c\/strong\u003e Tạo mới, cập nhật, xóa sản phẩm; quản lý biến thể và hình ảnh\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOrder API:\u003c\/strong\u003e Lấy danh sách đơn hàng, chi tiết đơn, cập nhật trạng thái vận chuyển\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eChat API:\u003c\/strong\u003e Gửi và nhận tin nhắn với khách hàng qua Shopee Chat\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLogistics API:\u003c\/strong\u003e Quản lý vận chuyển, in nhãn, theo dõi đơn hàng\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eĐể bắt đầu, bạn cần đăng ký tài khoản developer tại \u003cstrong\u003eopen.shopee.com\u003c\/strong\u003e, tạo ứng dụng và lấy Partner ID cùng Partner Key. Sau đó, seller sẽ ủy quyền (authorize) cho ứng dụng của bạn truy cập vào shop của họ.\u003c\/p\u003e\n\n\u003ch2\u003eKiến trúc tích hợp Claude API + Shopee\u003c\/h2\u003e\n\u003cp\u003eHệ thống tích hợp gồm 3 lớp chính:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLớp dữ liệu (Data Layer):\u003c\/strong\u003e Shopee Open Platform cung cấp dữ liệu sản phẩm, đơn hàng, đánh giá thông qua REST API\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLớp xử lý (Processing Layer):\u003c\/strong\u003e Server Node.js nhận dữ liệu từ Shopee, gửi đến Claude API để phân tích\/tạo nội dung, sau đó gửi kết quả ngược lại Shopee\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLớp điều phối (Orchestration Layer):\u003c\/strong\u003e Webhook từ Shopee kích hoạt quy trình tự động; cron job chạy các tác vụ định kỳ\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eChuẩn bị môi trường phát triển\u003c\/h3\u003e\n\u003cp\u003eTrước khi bắt đầu code, cài đặt các package cần thiết:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003enpm init -y\nnpm install @anthropic-ai\/sdk axios crypto-js dotenv express\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eTạo file cấu hình môi trường \u003cstrong\u003e.env\u003c\/strong\u003e:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eANTHROPIC_API_KEY=sk-ant-api03-xxxxx\nSHOPEE_PARTNER_ID=your_partner_id\nSHOPEE_PARTNER_KEY=your_partner_key\nSHOPEE_SHOP_ID=your_shop_id\nSHOPEE_ACCESS_TOKEN=your_access_token\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eModule kết nối Shopee API\u003c\/h3\u003e\n\u003cp\u003eShopee yêu cầu mỗi request phải có chữ ký (signature) để xác thực. Dưới đây là module cơ bản để gọi Shopee API:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003econst crypto = require('crypto');\nconst axios = require('axios');\nrequire('dotenv').config();\n\nconst SHOPEE_HOST = 'https:\/\/partner.shopeemobile.com';\n\nfunction generateSignature(path, timestamp) {\n  const baseString = `${process.env.SHOPEE_PARTNER_ID}${path}${timestamp}${process.env.SHOPEE_ACCESS_TOKEN}${process.env.SHOPEE_SHOP_ID}`;\n  return crypto\n    .createHmac('sha256', process.env.SHOPEE_PARTNER_KEY)\n    .update(baseString)\n    .digest('hex');\n}\n\nasync function callShopeeAPI(path, method = 'GET', data = null) {\n  const timestamp = Math.floor(Date.now() \/ 1000);\n  const sign = generateSignature(path, timestamp);\n\n  const url = `${SHOPEE_HOST}${path}`;\n  const params = {\n    partner_id: Number(process.env.SHOPEE_PARTNER_ID),\n    timestamp,\n    sign,\n    access_token: process.env.SHOPEE_ACCESS_TOKEN,\n    shop_id: Number(process.env.SHOPEE_SHOP_ID),\n  };\n\n  const config = { method, url, params };\n  if (data) config.data = data;\n\n  const response = await axios(config);\n  return response.data;\n}\n\nmodule.exports = { callShopeeAPI };\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eTự động tạo mô tả sản phẩm khi listing mới\u003c\/h2\u003e\n\u003cp\u003eMột trong những ứng dụng giá trị nhất là tự động sinh mô tả sản phẩm chất lượng cao khi seller tạo listing mới. Thay vì viết thủ công, Claude sẽ tạo mô tả tối ưu cho SEO và chuyển đổi.\u003c\/p\u003e\n\n\u003ch3\u003eQuy trình hoạt động\u003c\/h3\u003e\n\u003col\u003e\n  \u003cli\u003eSeller tạo sản phẩm mới trên Shopee với thông tin cơ bản (tên, danh mục, giá, hình ảnh)\u003c\/li\u003e\n  \u003cli\u003eWebhook thông báo có sản phẩm mới\u003c\/li\u003e\n  \u003cli\u003eServer lấy thông tin sản phẩm qua Shopee API\u003c\/li\u003e\n  \u003cli\u003eGửi thông tin cho Claude API để tạo mô tả\u003c\/li\u003e\n  \u003cli\u003eCập nhật mô tả vào sản phẩm qua Shopee API\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cpre\u003e\u003ccode\u003econst Anthropic = require('@anthropic-ai\/sdk');\nconst { callShopeeAPI } = require('.\/shopee-client');\n\nconst anthropic = new Anthropic();\n\nasync function generateProductDescription(productInfo) {\n  const message = await anthropic.messages.create({\n    model: 'claude-sonnet-4-20250514',\n    max_tokens: 1500,\n    messages: [\n      {\n        role: 'user',\n        content: `Bạn là chuyên gia viết mô tả sản phẩm trên Shopee Việt Nam.\nViết mô tả sản phẩm hấp dẫn, tối ưu SEO, dựa trên thông tin sau:\n\nTên sản phẩm: ${productInfo.item_name}\nDanh mục: ${productInfo.category_name}\nGiá: ${productInfo.price_info.current_price} VND\nThuộc tính: ${JSON.stringify(productInfo.attribute_list)}\n\nYêu cầu:\n- Viết bằng tiếng Việt, giọng điệu thân thiện và chuyên nghiệp\n- Bao gồm: mô tả tổng quan, đặc điểm nổi bật, thông số kỹ thuật,\n  hướng dẫn sử dụng, chính sách bảo hành\n- Tối ưu từ khóa tìm kiếm trên Shopee\n- Độ dài 500-800 từ\n- Sử dụng ký hiệu Unicode thay cho emoji\n- Không dùng tuyên bố tuyệt đối (\"tốt nhất\", \"số 1\")`\n      }\n    ]\n  });\n\n  return message.content[0].text;\n}\n\nasync function autoDescribeNewProduct(itemId) {\n  \/\/ Lấy thông tin sản phẩm từ Shopee\n  const productData = await callShopeeAPI(\n    '\/api\/v2\/product\/get_item_base_info',\n    'GET',\n    null\n  );\n  \/\/ Thêm item_id_list vào params khi gọi thực tế\n\n  const productInfo = productData.response.item_list[0];\n\n  \/\/ Tạo mô tả bằng Claude\n  const description = await generateProductDescription(productInfo);\n\n  \/\/ Cập nhật mô tả vào Shopee\n  await callShopeeAPI('\/api\/v2\/product\/update_item', 'POST', {\n    item_id: itemId,\n    description: description,\n  });\n\n  console.log(`Da cap nhat mo ta cho san pham ${itemId}`);\n  return description;\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eTự động phản hồi đánh giá khách hàng\u003c\/h2\u003e\n\u003cp\u003ePhản hồi đánh giá nhanh chóng và chu đáo giúp tăng uy tín shop và tỷ lệ chuyển đổi. Claude có thể tạo phản hồi cá nhân hóa dựa trên nội dung đánh giá.\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003easync function generateReviewResponse(review) {\n  const message = await anthropic.messages.create({\n    model: 'claude-sonnet-4-20250514',\n    max_tokens: 500,\n    messages: [\n      {\n        role: 'user',\n        content: `Bạn là chủ shop trên Shopee. Viết phản hồi cho đánh giá sau:\n\nSản phẩm: ${review.item_name}\nSố sao: ${review.rating_star}\/5\nNội dung: ${review.comment}\n\nQuy tắc phản hồi:\n- Nếu 4-5 sao: Cảm ơn chân thành, mời mua lại\n- Nếu 3 sao: Cảm ơn, hỏi thêm để cải thiện\n- Nếu 1-2 sao: Xin lỗi, đề xuất giải pháp cụ thể, mời liên hệ trực tiếp\n- Luôn gọi khách là \"bạn\" hoặc \"anh\/chị\"\n- Ngắn gọn (50-100 từ), chuyên nghiệp, không dùng template cứng nhắc\n- Không bao giờ phủ nhận trải nghiệm của khách\n- Đề cập tên sản phẩm cụ thể trong phản hồi`\n      }\n    ]\n  });\n\n  return message.content[0].text;\n}\n\nasync function autoReplyReviews() {\n  \/\/ Lấy đánh giá chưa phản hồi\n  const reviews = await callShopeeAPI(\n    '\/api\/v2\/product\/get_comment',\n    'GET'\n  );\n\n  const unreplied = reviews.response.item_comment_list.filter(\n    (r) =\u0026gt; !r.reply\n  );\n\n  for (const review of unreplied) {\n    try {\n      const reply = await generateReviewResponse(review);\n\n      await callShopeeAPI('\/api\/v2\/product\/reply_comment', 'POST', {\n        comment_id: review.comment_id,\n        comment: reply,\n      });\n\n      console.log(`Da phan hoi danh gia ${review.comment_id}`);\n\n      \/\/ Rate limiting: đợi 2 giây giữa mỗi phản hồi\n      await new Promise((resolve) =\u0026gt; setTimeout(resolve, 2000));\n    } catch (error) {\n      console.error(`Loi khi phan hoi ${review.comment_id}:`, error.message);\n    }\n  }\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eKiểm duyệt trước khi gửi\u003c\/h3\u003e\n\u003cp\u003eTrong giai đoạn đầu, bạn nên kiểm duyệt phản hồi trước khi gửi tự động. Thêm một bước phê duyệt vào quy trình:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003easync function autoReplyWithApproval() {\n  const reviews = await getUnrepliedReviews();\n\n  const pendingReplies = [];\n  for (const review of reviews) {\n    const reply = await generateReviewResponse(review);\n    pendingReplies.push({\n      review,\n      suggestedReply: reply,\n      status: 'pending',\n    });\n  }\n\n  \/\/ Lưu vào database để admin duyệt qua dashboard\n  await savePendingReplies(pendingReplies);\n\n  \/\/ Gửi thông báo cho admin qua Telegram\/Slack\n  await notifyAdmin(\n    `Co ${pendingReplies.length} phan hoi can duyet. Xem tai dashboard.`\n  );\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eXử lý thông báo đơn hàng thông minh\u003c\/h2\u003e\n\u003cp\u003eKhi có đơn hàng mới, hệ thống có thể tự động phân tích và tạo báo cáo tóm tắt hàng ngày bằng Claude.\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003easync function processDailyOrders() {\n  \/\/ Lấy đơn hàng trong ngày\n  const timeFrom = Math.floor(\n    new Date().setHours(0, 0, 0, 0) \/ 1000\n  );\n  const timeTo = Math.floor(Date.now() \/ 1000);\n\n  const orders = await callShopeeAPI(\n    '\/api\/v2\/order\/get_order_list',\n    'GET'\n  );\n\n  \/\/ Tổng hợp dữ liệu\n  const orderSummary = {\n    total_orders: orders.response.order_list.length,\n    total_revenue: 0,\n    by_status: {},\n    by_product: {},\n    by_region: {},\n  };\n\n  for (const order of orders.response.order_list) {\n    const detail = await callShopeeAPI(\n      '\/api\/v2\/order\/get_order_detail',\n      'GET'\n    );\n    \/\/ Xử lý chi tiết đơn hàng...\n    orderSummary.total_revenue += detail.response.total_amount;\n  }\n\n  \/\/ Gửi cho Claude phân tích\n  const analysis = await anthropic.messages.create({\n    model: 'claude-sonnet-4-20250514',\n    max_tokens: 1000,\n    messages: [\n      {\n        role: 'user',\n        content: `Phân tích tóm tắt đơn hàng Shopee hôm nay:\n\n${JSON.stringify(orderSummary, null, 2)}\n\nCho biết:\n1. Tổng quan: doanh thu, số đơn, AOV\n2. So sánh với ngày hôm qua (nếu có dữ liệu)\n3. Sản phẩm bán chạy nhất hôm nay\n4. Có bất thường gì không? (tỷ lệ hủy cao, sản phẩm nào đó bán vọt...)\n5. 2-3 gợi ý hành động cho ngày mai\n\nTrình bày ngắn gọn, dạng bullet points.`\n      }\n    ]\n  });\n\n  \/\/ Gửi báo cáo qua Telegram\n  await sendTelegramMessage(analysis.content[0].text);\n}\n\n\/\/ Chạy mỗi ngày lúc 23:00\nconst cron = require('node-cron');\ncron.schedule('0 23 * * *', processDailyOrders);\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eTự động trả lời chat khách hàng\u003c\/h2\u003e\n\u003cp\u003eShopee Chat API cho phép bạn tự động phản hồi tin nhắn khách hàng. Kết hợp với Claude, bạn có thể tạo chatbot thông minh xử lý các câu hỏi thường gặp.\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003easync function handleCustomerMessage(message) {\n  const { buyer_id, content, item_id } = message;\n\n  \/\/ Lấy thông tin sản phẩm liên quan (nếu có)\n  let productContext = '';\n  if (item_id) {\n    const product = await callShopeeAPI(\n      '\/api\/v2\/product\/get_item_base_info',\n      'GET'\n    );\n    productContext = `\nSan pham lien quan: ${product.response.item_list[0].item_name}\nGia: ${product.response.item_list[0].price_info.current_price} VND\nTon kho: ${product.response.item_list[0].stock_info_v2.summary_info.total_available_stock}`;\n  }\n\n  const reply = await anthropic.messages.create({\n    model: 'claude-sonnet-4-20250514',\n    max_tokens: 300,\n    system: `Ban la nhan vien ho tro cua shop tren Shopee.\nQuy tac:\n- Tra loi ngan gon, than thien, bang tieng Viet\n- Neu khach hoi ve san pham, dua thong tin chinh xac tu du lieu\n- Neu khach hoi ve van de ngoai kha nang, de nghi chuyen cho quan ly\n- Khong bao gio hua nhung gi shop khong dam bao duoc\n- Thoi gian xu ly don: 1-2 ngay, giao hang: 3-5 ngay\n${productContext}`,\n    messages: [\n      { role: 'user', content: content.text }\n    ]\n  });\n\n  \/\/ Gửi phản hồi qua Shopee Chat\n  await callShopeeAPI('\/api\/v2\/sellerchat\/send_message', 'POST', {\n    to_id: buyer_id,\n    message_type: 'text',\n    content: { text: reply.content[0].text },\n  });\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eRate Limiting và quản lý chi phí\u003c\/h2\u003e\n\u003cp\u003eKhi tích hợp 2 API, bạn cần quản lý rate limit của cả hai bên:\u003c\/p\u003e\n\n\u003ch3\u003eShopee API Rate Limits\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eMặc định: 10 requests\/giây cho mỗi shop\u003c\/li\u003e\n  \u003cli\u003eMột số endpoint có giới hạn riêng (ví dụ: Chat API: 5 requests\/giây)\u003c\/li\u003e\n  \u003cli\u003eVượt quá giới hạn sẽ bị trả về lỗi 429\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eClaude API Rate Limits\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003ePhụ thuộc vào tier của bạn (Free, Build, Scale)\u003c\/li\u003e\n  \u003cli\u003eTier Build: 4,000 requests\/phút, 400,000 tokens\/phút\u003c\/li\u003e\n  \u003cli\u003eTier Scale: giới hạn cao hơn tùy theo hợp đồng\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eChiến lược quản lý rate limit\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eclass RateLimiter {\n  constructor(maxRequests, windowMs) {\n    this.maxRequests = maxRequests;\n    this.windowMs = windowMs;\n    this.requests = [];\n  }\n\n  async waitForSlot() {\n    const now = Date.now();\n    this.requests = this.requests.filter(\n      (t) =\u0026gt; now - t \u0026lt; this.windowMs\n    );\n\n    if (this.requests.length \u0026gt;= this.maxRequests) {\n      const waitTime =\n        this.windowMs - (now - this.requests[0]);\n      await new Promise((resolve) =\u0026gt;\n        setTimeout(resolve, waitTime)\n      );\n    }\n\n    this.requests.push(Date.now());\n  }\n}\n\nconst shopeeRateLimiter = new RateLimiter(10, 1000);\nconst claudeRateLimiter = new RateLimiter(50, 60000);\n\nasync function rateLimitedShopeeCall(path, method, data) {\n  await shopeeRateLimiter.waitForSlot();\n  return callShopeeAPI(path, method, data);\n}\n\nasync function rateLimitedClaudeCall(params) {\n  await claudeRateLimiter.waitForSlot();\n  return anthropic.messages.create(params);\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003ePhân tích chi phí vận hành\u003c\/h2\u003e\n\u003cp\u003eTrước khi triển khai, hãy ước tính chi phí để đảm bảo ROI dương:\u003c\/p\u003e\n\n\u003ch3\u003eChi phí Claude API\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMô tả sản phẩm:\u003c\/strong\u003e Trung bình 500 input tokens + 800 output tokens = khoảng 0.01 USD\/sản phẩm\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePhản hồi đánh giá:\u003c\/strong\u003e Trung bình 300 input tokens + 200 output tokens = khoảng 0.004 USD\/phản hồi\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eBáo cáo hàng ngày:\u003c\/strong\u003e Trung bình 2000 input tokens + 500 output tokens = khoảng 0.02 USD\/báo cáo\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eChat tự động:\u003c\/strong\u003e Trung bình 400 input tokens + 150 output tokens = khoảng 0.005 USD\/tin nhắn\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eƯớc tính chi phí hàng tháng\u003c\/h3\u003e\n\u003cp\u003eVới một shop trung bình (100 sản phẩm mới\/tháng, 500 đánh giá, 1000 tin nhắn chat):\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eMô tả sản phẩm: 100 x 0.01 = 1.00 USD\u003c\/li\u003e\n  \u003cli\u003ePhản hồi đánh giá: 500 x 0.004 = 2.00 USD\u003c\/li\u003e\n  \u003cli\u003eBáo cáo hàng ngày: 30 x 0.02 = 0.60 USD\u003c\/li\u003e\n  \u003cli\u003eChat tự động: 1000 x 0.005 = 5.00 USD\u003c\/li\u003e\n  \u003cli\u003e\u003cstrong\u003eTổng cộng: khoảng 8.60 USD\/tháng (khoảng 215,000 VND)\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eSo với chi phí thuê nhân sự viết mô tả và phản hồi đánh giá, đây là khoản đầu tư rất hợp lý.\u003c\/p\u003e\n\n\u003ch2\u003eXử lý lỗi và retry\u003c\/h2\u003e\n\u003cp\u003eHệ thống production cần xử lý lỗi bền vững để tránh mất dữ liệu hoặc gửi phản hồi sai:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003easync function withRetry(fn, maxRetries = 3, delayMs = 1000) {\n  for (let attempt = 1; attempt \u0026lt;= maxRetries; attempt++) {\n    try {\n      return await fn();\n    } catch (error) {\n      if (attempt === maxRetries) throw error;\n\n      \/\/ Phân biệt lỗi có thể retry và không thể retry\n      if (error.status === 400) throw error; \/\/ Bad request, không retry\n      if (error.status === 401) throw error; \/\/ Auth lỗi, không retry\n\n      console.log(\n        `Attempt ${attempt} that bai, thu lai sau ${delayMs}ms...`\n      );\n      await new Promise((resolve) =\u0026gt;\n        setTimeout(resolve, delayMs * attempt)\n      );\n    }\n  }\n}\n\n\/\/ Sử dụng\nconst description = await withRetry(() =\u0026gt;\n  generateProductDescription(productInfo)\n);\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eWebhook server nhận thông báo từ Shopee\u003c\/h2\u003e\n\u003cp\u003eĐể hệ thống phản ứng ngay khi có sự kiện (đơn hàng mới, đánh giá mới), bạn cần thiết lập webhook server:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003econst express = require('express');\nconst app = express();\napp.use(express.json());\n\napp.post('\/webhook\/shopee', async (req, res) =\u0026gt; {\n  const { code, data } = req.body;\n\n  try {\n    switch (code) {\n      case 3: \/\/ Cập nhật trạng thái đơn hàng\n        await handleOrderUpdate(data);\n        break;\n      case 5: \/\/ Sản phẩm mới được tạo\n        await autoDescribeNewProduct(data.item_id);\n        break;\n      case 12: \/\/ Có đánh giá mới\n        await handleNewReview(data);\n        break;\n      case 14: \/\/ Tin nhắn chat mới\n        await handleCustomerMessage(data);\n        break;\n      default:\n        console.log(`Su kien chua xu ly: code ${code}`);\n    }\n    res.status(200).json({ message: 'OK' });\n  } catch (error) {\n    console.error('Webhook error:', error);\n    res.status(500).json({ error: error.message });\n  }\n});\n\napp.listen(3000, () =\u0026gt; {\n  console.log('Webhook server dang chay tren port 3000');\n});\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eMonitoring và logging\u003c\/h2\u003e\n\u003cp\u003eĐể vận hành ổn định, bạn cần theo dõi hệ thống liên tục:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLog mọi request:\u003c\/strong\u003e Ghi lại thời gian, endpoint, input\/output, thời gian phản hồi và chi phí token\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eTheo dõi tỷ lệ lỗi:\u003c\/strong\u003e Nếu tỷ lệ lỗi vượt quá 5%, gửi cảnh báo ngay\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eKiểm tra chất lượng output:\u003c\/strong\u003e Định kỳ review các mô tả và phản hồi Claude tạo ra để điều chỉnh prompt\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eTheo dõi chi phí:\u003c\/strong\u003e Đặt ngưỡng chi phí hàng ngày\/tháng và cảnh báo khi gần đạt\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eTriển khai production\u003c\/h2\u003e\n\u003cp\u003eĐể triển khai hệ thống này trên production, bạn cần lưu ý:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eSử dụng PM2 hoặc Docker để quản lý process\u003c\/li\u003e\n  \u003cli\u003eĐặt server ở Singapore hoặc Hồ Chí Minh để giảm latency với Shopee API\u003c\/li\u003e\n  \u003cli\u003eSử dụng Redis queue (Bull\/BullMQ) để xử lý hàng đợi thay vì xử lý trực tiếp\u003c\/li\u003e\n  \u003cli\u003eBackup database token\/session Shopee để tránh mất kết nối\u003c\/li\u003e\n  \u003cli\u003eThiết lập cron job refresh access token trước khi hết hạn (mỗi 4 giờ)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eBước tiếp theo\u003c\/h2\u003e\n\u003cp\u003eBạn đã có toàn bộ kiến thức và code mẫu để xây dựng hệ thống tự động hóa Shopee với Claude API. Bắt đầu với một tính năng đơn giản (ví dụ: tự động tạo mô tả sản phẩm), chạy thử nghiệm, đánh giá chất lượng output rồi mở rộng dần sang các tính năng khác. Khám phá thêm các hướng dẫn thực hành tại \u003ca href=\"\/en\/collections\/ung-dung\"\u003eThư viện Ứng dụng Claude\u003c\/a\u003e.\u003c\/p\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47730152833236,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/claude-api-shopee-open-platform-t_-d_ng-hoa-nang-cao-cho-seller.jpg?v=1774715747","url":"https:\/\/claude.vn\/en\/products\/claude-api-shopee-open-platform-t%e1%bb%b1-d%e1%bb%99ng-hoa-nang-cao-cho-seller","provider":"CLAUDE.VN","version":"1.0","type":"link"}