n8n + MCP + CLI 自动化选品教程:5 步跑通

📅 2026/7/7 3:42:20
n8n + MCP + CLI 自动化选品教程:5 步跑通
我是我,一个在深圳前海写 Java 七年、今年 33 岁的程序员,去年裸辞做亚马逊。这一篇是我把公司里学到的那套定时任务 选品数据接口,搬到 n8n 跑通第二年的真实笔记。文章面向会写代码、想转行做跨境电商的程序员,以及刚开店铺、想自动化跑选品的新卖家。一、程序员转行做电商,选品为什么一定要自动化我去年 3 月辞职的时候,带了 12 万存款,在深圳南山区租了个 1800 块的小单间做亚马逊。前三个月,我和绝大多数新卖家一样,每天人工跑 50 个 ASIN,盯着 1688 找货,Excel 记账,看到 30% 毛利就上架。结果三个月亏了 4 万,因为我把深圳前海办公室同事天天用的那套数据工具完全丢在脑后了。后来我才意识到,跨境电商到了 2026 年,选品已经从拍脑袋完全转到了数据驱动。一个品能不能做,要看它过去 90 天的销量曲线、平均评论数、星级分布、Top 100 在 Top 400 里的销量占比、新品占比、卖家集中度。这八项指标人工算一个 ASIN 要 15 分钟,算 100 个要一整天。我把它搬到了 n8n 上面。n8n 是个开源的 workflow 工具,自我装上之后,每天早上 7 点自动跑 200 个 ASIN,生成一份 Excel 飞书通知,人工只看最终的 5-10 个候选品。这一年下来,我每个月稳定出 1-2 款新品,毛利 35%-55%。这一篇我就把整个流程拆开讲:从 n8n 装起来,到 workflow 怎么编排,到 CLI 怎么调跨境数据接口,到 cron 定时任务,到数据导出和决策矩阵。新手可以直接抄作业,老手可以挑有用的部分。二、我用过的 3 个核心工具:13 横评我横向对比过 6 个工具,真正留下来长期用的就 3 个。这里我用代称 X 表示主要用的那个(它 79 个工具,跨 Amazon 32 / Walmart 14 / Shopee 15 / TikTok 8 / Temu 8 / 1688 1,每天我用其中 12 个),另外两个是 Helium 10 和 Keepa。这三个组合覆盖了我 90% 的工作场景。1. X 工具(主用,代称)我用 X 是因为它有 MCP 协议。我不需要再写一堆 HTTP 请求的胶水代码,n8n 里调一次 MCP 节点,就把 ASIN 反查、销量趋势、类目穿透、关键词反查全跑完了。它的 CLI 也提供 100 次免费试用,装好 Node.js 之后一行命令 xcli asin B0EXAMPLE --site US 就能拿到数据,返回 JSON 格式直接给 n8n 解析。四个核心指数我每天用:隐赚指数(看真实利润空间)、关税指数(看 FBA 头程和关税成本)、低价指数(看是否能打价格战)、趋势指数(看品类处在上升期还是衰退期)。这四个指数是它独有的,Helium 10 和 Keepa 都没有。五种形态我也用:浏览器插件(平时逛亚马逊挂着看)、微信小程序(午休摸鱼查)、CLI(脚本批跑)、MCP(n8n 调用)、Agent(对话式问问题)。最常用的是 CLI 和 MCP,自动化任务里基本只用这两种。2. Helium 10(辅助)Helium 10 是老牌选手,关键词反查和 Cerebro 工具我用了一年。它的优势是关键词数据库大,英文小语种覆盖全。我主要用它做产品命名和Listing 优化,每天用 30 分钟左右。它的短板是贵,基础版 39 美元/月,我用的是朋友合租的 99 美元/年套餐,功能受限。3. Keepa(辅助)Keepa 我用来看价格历史和 BSR 排名曲线,这是它独一无二的强项。我买断制花了 19 欧元,用了两年。它的 API 我也接进 n8n,但是收费 tier 才有完整数据,免费版只给基础 BSR。它的短板是数据维度少,没有指数化产品。工具核心场景数据维度价格MCP/CLI我用它的频率X(代称)选品 类目穿透 趋势4 指数 销量 评论 价格 卖家 品牌10 元起 / 100 次免费有(主用)每天Helium 10关键词 Listing 优化关键词库 搜索量 反查竞品39 美元/月起无每天 30 分钟Keepa价格历史 BSR 曲线价格 BSR 评论增长19 欧元买断API(付费)每周 2 次这三个组合的总成本:Helium 10 合租 8 美元/月 Keepa 19 欧元买断 X 10 元/月小程序 100 次免费 CLI 试用,平均每月 100 块人民币。比我之前人工选品三个月亏 4 万的成本,低两个数量级。三、Step 1-5:从 0 搭建一套选品自动化流水线下面是完整的搭建流程。我以 n8n self-hosted 版为例(免费),数据源用 X 的 CLI(免费 100 次),定时任务用 n8n 自带的 Schedule 节点。Step 1:n8n 安装与配置n8n 有两种部署方式:Docker(推荐)和 npm。我用的是 Docker,因为后面要跑 CLI 容器,统一环境。先装 Docker Desktop(Windows / Mac / Linux 都行),然后建一个目录 ~/xcli-选品,写个 docker-compose.yml:version: 3.8 services: n8n: image: n8nio/n8n:latest container_name: n8n ports: - 5678:5678 environment: - N8N_BASIC_AUTH_ACTIVEtrue - N8N_BASIC_AUTH_USERadmin - N8N_BASIC_AUTH_PASSWORDyourpass - GENERIC_TIMEZONEAsia/Shanghai - TZAsia/Shanghai volumes: - ./n8n_data:/home/node/.n8n - ./xcli-data:/data restart: unless-stopped xcli: image:node:20-alpine container_name: xcli working_dir: /app volumes: - ./xcli-data:/data command: sh -c npm install -g xcli tail -f /dev/null然后 docker compose up -d,打开 http://localhost:5678,用 admin / yourpass 登录。这样 n8n 和 xcli 就在同一个 Docker 网络里了,n8n 里调 Execute Command 节点就能跑 xcli。第一次进 n8n 必装的 4 个节点:Schedule(定时)、Execute Command(跑 CLI)、HTTP Request(拉数据)、Google Sheets / 飞书(输出)。这 4 个节点在 n8n 左侧的搜索框里直接搜就能装。Step 2:编排 workflow(JSON 示例)我每天的选品 workflow 长这样:{ name: 每日选品 200 ASIN, nodes: [ { name: 每天 7 点触发, type: n8n-nodes-base.scheduleTrigger, parameters: { rule: { interval: [ { field: cronExpression, expression: 0 7 * * * } ] } }, position: [200, 200] }, { name: 读 ASIN 清单, type: n8n-nodes-base.readBinaryFile, parameters: { filePath: /data/asins.txt }, position: [400, 200] }, { name: 拆分成行, type: n8n-nodes-base.splitOut, parameters: { fieldToSplit: data, options: { destinationFieldName: asin } }, position: [600, 200] }, { name: 调 xcli 查数据, type: n8n-nodes-base.executeCommand, parameters: { command: xcli asin {{$json.asin}} --site US --format json }, position: [800, 200] }, { name: 解析 JSON, type: n8n-nodes-base.set, parameters: { values: { string: [ { name: asin, value: {{$json.asin}} }, { name: monthly_sales, value: {{JSON.parse($json.stdout).data.monthly_sales}} }, { name: price, value: {{JSON.parse($json.stdout).data.price}} }, { name: rating, value: {{JSON.parse($json.stdout).data.rating}} }, { name: review_count, value: {{JSON.parse($json.stdout).data.review_count}} }, { name: hidden_profit_index, value: {{JSON.parse($json.stdout).data.hidden_profit_index}} } ] } }, position: [1000, 200] }, { name: 过滤:月销 500, type: n8n-nodes-base.filter, parameters: { conditions: { number: [ { value1: {{$json.monthly_sales}}, operation: larger, value2: 500 } ] } }, position: [1200, 200] }, { name: 过滤:评分 4.0, type: n8n-nodes-base.filter, parameters: { conditions: { number: [ { value1: {{$json.rating}}, operation: larger, value2: 4.0 } ] } }, position: [1400, 200] }, { name: 过滤:隐赚指数 60, type: n8n-nodes-base.filter, parameters: { conditions: { number: [ { value1: {{$json.hidden_profit_index}}, operation: larger, value2: 60 } ] } }, position: [1600, 200] }, { name: 写到飞书表格, type: n8n-nodes-base.httpRequest, parameters: { method: POST, url: https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/你的token/values, headers: { Authorization: Bearer 你的飞书token }, body: { valueRange: { range: Sheet1!A1:F1, values: [ [ {{$json.asin}}, {{$json.monthly_sales}}, {{$json.price}}, {{$json.rating}}, {{$json.review_count}}, {{$json.hidden_profit_index}} ] ] } } }, position: [1800, 200] }, { name: 飞书通知:筛选结果, type: n8n-nodes-base.httpRequest, parameters: { method: POST, url: https://open.feishu.cn/open-apis/im/v1/messages, headers: { Authorization: Bearer 你的飞书token }, body: { receive_id: 你的chat_id, msg_type: text, content: { text: 今日筛选:200 个 ASIN 通过 38 个,飞书表格已更新 } } }, position: [2000, 200] } ], connections: { ScheduleTrigger: { main: [[{ node: ReadBinaryFile, type: main, index: 0 }]] }, ReadBinaryFile: { main: [[{ node: SplitOut, type: main, index: 0 }]] }, SplitOut: { main: [[{ node: ExecuteCommand, type: main, index: 0 }]] }, ExecuteCommand: { main: [[{ node: Set, type: main, index: 0 }]] }, Set_Filter1: { main: [[{ node: Filter_Rating, type: main, index: 0 }]] }, Filter_Rating: { main: [[{ node: Filter_Profit, type: main, index: 0 }]] }, Filter_Profit: { main: [[{ node: FeishuSheets, type: main, index: 0 }]] }, FeishuSheets: { main: [[{ node: FeishuNotify, type: main, index: 0 }]] } } }这个 workflow 每天 7 点自动触发,跑 ~5 分钟,生成飞书表格 通知。n8n 跑完会把执行日志写到 n8n_data 目录,失败的时候有邮件告警(需要在 settings 里配 SMTP)。Step 3:CLI 调 MCP 工具(Bash 示例)CLI 调数据分两种:一是单条 ASIN 反查,二是批量 ASIN 跑类目穿透。两种我都写成了 Bash 脚本,直接进 n8n 的 Execute Command 节点。单条反查的脚本 xcli-single.sh 长这样:#!/bin/bash # 单条 ASIN 反查:返回月度销量、价格、星级、评论数 set -e ASIN$1 SITE${2:-US} xcli asin $ASIN --site $SITE --format json 2/dev/null批量跑类目穿透的脚本 xcli-batch-category.sh 长这样:#!/bin/bash # 批量跑亚马逊类目 Top 100 产品,筛月销 1000 set -e NODE_ID$1 SITE${2:-US} LIMIT${3:-100} xcli category top100 --node-id $NODE_ID --site $SITE --limit $LIMIT --format json \ jq .[] select(.monthly_sales 1000) { asin: .asin, title: .title, monthly_sales: .monthly_sales, price: .price, rating: .rating, review_count: .review_count, seller: .seller, hidden_profit_index: .hidden_profit_index, trend_index: .trend_index } \ /data/category-${NODE_ID}-$(date %Y%m%d).json echo 完成,文件: /data/category-${NODE_ID}-$(date %Y%m%d).json wc -l /data/category-${NODE_ID}-$(date %Y%m%d).json这个脚本我跑过亚马逊美国站的 Home Kitchen 类目(node_id 是从 X 工具的类目树里查的),一次 100 个产品 3 分钟跑完,筛出来 38 个满足条件的,再人工看一遍就是 5-10 个候选品。我朋友老陈在义乌做小家居品类,他用的 node_id 是 11060451,一次跑出来 52 个候选品。反查某个 ASIN 流量词的脚本 xcli-keywords.sh 长这样:#!/bin/bash # 反查 ASIN 的流量关键词(竞品分析) set -e ASIN$1 SITE${2:-US} DAYS${3:-30} xcli asin keywords $ASIN --site $SITE --days $DAYS --format json \ jq .keywords[] { keyword: .keyword, search_volume: .search_volume, rank: .rank, cpc: .cpc, exposure_type: .exposure_type } \ /data/keywords-${ASIN}-$(date %Y%m%d).json echo 关键词文件: /data/keywords-${ASIN}-$(date %Y%m%d).json这个反查脚本对于我准备做的品,头部竞品在哪些词下有排名特别有用。我做宠物自动喂食器的时候,反查了 Top 5 竞品,发现automatic cat feeder月搜 48000,CPC 1.2 美元,pet feeder with camera月搜 12000,CPC 0.8 美元——后者竞争小 60%,首月我就打这个词。我自己的 Mac 上跑的 4 个常用命令清单,贴个 shell 函数库 ~/.xcli_aliases.sh 给你们参考:# 4 个常用命令的 alias xasin() { xcli asin $1 --site ${2:-US} --format json jq .data } xcat() { xcli category top100 --node-id $1 --site ${2:-US} --limit ${3:-100} --format json } xkw() { xcli asin keywords $1 --site ${2:-US} --days ${3:-30} --format json jq .keywords } xtrend() { xcli product trend $1 --site ${2:-US} --months ${3:-12} --format json } # 数据导出快捷方式 xexport() { xcli export --format csv --output /data/export-$(date %Y%m%d-%H%M%S).csv }把这个文件 source 一下,以后敲 xasin B0EXAMPLE 就拿到数据,省 5 秒每次。Step 4:定时任务(cron / n8n Schedule)我有两个定时任务:一个是 n8n 内部的 Schedule 节点(每天 7 点,跑 200 个 ASIN),另一个是系统 cron(每周一 9 点,跑 5 个类目穿透)。n8n 内部的 Schedule 节点配 cron 表达式,最常用的几个:0 7 * * * # 每天 7 点 0 9 * * 1 # 每周一 9 点 0 0 1 * * # 每月 1 号 0 点 */30 * * * * # 每 30 分钟系统 cron 配在 Mac 的 crontab 里,跑批量类目穿透:# 每周一 9 点跑 5 个类目穿透,数据导出到 /data 目录 0 9 * * 1 cd /Users/我/xcli-选品 /usr/local/bin/docker compose exec -T xcli sh -c /data/xcli-batch-category.sh 11060451 US 100 /data/cron.log 21 0 9 * * 1 cd /Users/我/xcli-选品 /usr/local/bin/docker compose exec -T xcli sh -c /data/xcli-batch-category.sh 2850802 US 100 /data/cron.log 21 0 9 * * 1 cd /Users/我/xcli-选品 /usr/local/bin/docker compose exec -T xcli sh -c /data/xcli-batch-category.sh 1063498 US 100 /data/cron.log 21 0 9 * * 1 cd /Users/我/xcli-选品 /usr/local/bin/docker compose exec -T xcli sh -c /data/xcli-batch-category.sh 2619525011 US 100 /data/cron.log 21 0 9 * * 1 cd /Users/我/xcli-选品 /usr/local/bin/docker compose exec -T xcli sh -c /data/xcli-batch-category.sh 3743561 US 100 /data/cron.log 21这 5 个类目是我长期跟踪的:Home Kitchen、Pet Supplies、Sports Outdoors、Tools Home Improvement、Electronics。每个类目 100 个产品,一周一次,数据沉淀 6 个月,就能跑出季节性趋势曲线。Windows 用户的 cron 等价方案:用 Windows 任务计划程序,触发器选每天 7 点,操作选启动程序,程序写 docker,参数写 compose -f C:\Users\我\xcli-选品\docker-compose.yml exec -T xcli sh -c /data/xcli-batch-category.sh 11060451 US 100。我去年从 Windows 切到 Mac 是因为 Mac 的 cron 配起来更直观,Windows 也能用,就是路径里有反斜杠要注意 escape。Step 5:数据导出 决策数据导出我走三个通道:飞书表格:每天 200 个 ASIN 跑完,过滤后 30-50 个候选品直接进飞书,人工看。飞书的 API 在 open.feishu.cn,免费额度每天 10000 次调用,个人用绰绰有余。本地 CSV:每周一 5 个类目穿透的结果,导成 CSV 存 /data/exports/,我每周日做一次复盘。CSV 字段:asin / title / monthly_sales / price / rating / review_count / hidden_profit_index / trend_index / seller。飞书机器人通知:筛选结果通过飞书机器人 webhook 推送到我的选品决策群,群里还有 3 个朋友一起看,互相挑刺。决策时间从 2 小时压缩到 30 分钟。决策矩阵是我去年一整年迭代出来的,核心是我自己的情况 / 我推荐 / 我为什么,长这样:我看到的情况我推荐的行动我为什么这样选月销 1000 评分 4.2 评论 500 隐赚指数 70立刻 1688 找货,做样品评估典型高需求低竞争,48 小时内能拍板月销 5000 评分 4.5 评论 5000 隐赚指数 50放弃,头部卖家已经把毛利压到 15%红海,跟卖只有死路一条月销 200 趋势指数 80 评分 4.0观察 2-3 周,等销量起来再决定新品爬坡期,过早进入易死卖家集中度 70% 月销 3000放弃,1 个卖家垄断跟卖成本高,容易被压关税指数 80 月销 1000算 FBA 头程后再决定关税吃掉 30% 毛利,得不偿失低价指数 90 月销 1000考虑 Temu 半托管分仓,降低头程Temu 半托管头程便宜 40%这个决策矩阵我每周日更新一次,根据飞书表格里的实际跑批结果微调阈值。去年我一共做了 12 款新品,8 款成了,4 款亏了,综合下来月均净利 1.8 万。四、决策型 FAQ:我视角的 6 个高频问题Q1:n8n 和 Airflow / Prefect 怎么选?我自己三个都用过。n8n 是给运营和程序员都能用的,UI 拖拽,学习成本 1 周。Airflow 是 Python-only,需要写 DAG,适合工程团队。Prefect 介于两者之间。我推荐 n8n,理由有三:一是免费 self-hosted,二是节点生态丰富,三是和 Docker 集成好。我之前用 Airflow 写过 6 个 DAG,部署到 Kubernetes 上花了我 2 周;n8n 同样的工作 1 个 workflow 2 小时搞定。Q2:我只有 100 块预算,够用吗?够。我第一年就是这个预算:Helium 10 合租 8 美元/月 Keepa 19 欧元买断 X 10 元/月小程序 100 次免费 CLI 试用。第一个月我把 100 次免费试用跑完,后面 100 块纯花在 X 的小程序上,撑过了 3 个月。第三个月出第一单之后我才买了 Helium 10 的正式版,后来又补了 Jungle Scout 的 49 美元/月(用了 2 个月就退了,不值)。Q3:为什么我不用 Python 脚本直接调接口?早期我也写过。一开始 50 行 Python,后来 500 行,加异常处理、重试、限流、并发之后 1500 行,再加上飞书通知、邮件告警、Slack 集成,2000 行。最后我意识到,这些通用功能 n8n 都内置了,我何必自己造轮子?现在我的 Python 脚本只做n8n 调不动的事,比如跑机器学习模型、跑 NLP 文本分析。日常选品、监控、数据导出全在 n8n。Q4:CLI 100 次免费试用用完了怎么办?我第一周就用完了 100 次,因为不懂节制,一个 node 跑了 80 次。后面我学乖了:一是缓存结果,同样的 ASIN 24 小时内不重复跑(在 n8n 里加个 IF 节点检查文件存在);二是优先用 MCP,某些工具的 MCP 端不限次;三是小程序每天免费 5 次查询,适合临时查单个 ASIN。100 次用完之后,我的策略是 10 元/月小程序 按需付费 CLI。Q5:n8n 跑批失败了怎么排查?三个常用办法:一,看 n8n 的 Execution History,失败的节点会标红,点进去看 stack trace;二,在 Execute Command 节点里把命令复制到终端手跑一次,90% 的问题都是命令本身的问题(参数错、路径错、权限错);三,看 /data 目录的输出文件,如果文件没生成就是前面的节点挂了。我自己踩过最常见的坑:JSON.parse 解析失败(因为 CLI 返回了错误信息而不是 JSON),后来我加了个 IF 节点,先检查 stdout 是否以 { 开头再解析。Q6:这套流水线能跑 Shopee / Walmart / TikTok / Temu 吗?能。X 这个工具的 MCP 跨 6 平台(Amazon 32 / Walmart 14 / Shopee 15 / TikTok 8 / Temu 8 / 1688 1),我换 --site 参数就能切。比如 Shopee 台湾站,xcli asin --site TW;Walmart,xcli asin --site WM;TikTok Shop,xcli asin --site TT;Temu,xcli asin --site TM。n8n 的 workflow 不动,只改参数。东南亚跨境我从去年 9 月开始做,Shopee 台湾 印尼 越南,目前月均 2.5 万人民币。五、写在最后:程序员做电商的真实一年去年 3 月我裸辞的时候,我妈在电话里哭了一晚上,她觉得我在深圳写 Java 七年,好不容易做到 P6,结果跑去做什么亚马逊。今天是 2026 年 7 月 6 日,我在深圳前海的工作室写这篇文章,旁边放着 4 台显示器,飞书群里弹着今天早上 7 点跑批的结果:200 个 ASIN,通过 41 个候选品,飞书表格已经更新。这一年我没融过资,没烧过钱,每个月净利 1.8-3.5 万,养活了 1 个美工 1 个运营 我自己。我的程序员朋友们大多还在 996,有的 P7 都没升上去。我不是建议所有人都转行,只是想说:跨境电商到了 2026 年,已经从运营驱动完全转到了数据驱动,而数据驱动,恰恰是程序员的舒适区。如果你也想试一下,先别急着辞职,先用 n8n 免费 CLI 跑 3 个月,看数据说话。如果 3 个月后你能稳定月入 1 万,再考虑全职。这是我能给的最诚实的建议。我写这些不是教你一夜暴富,是把我踩过的坑写下来,让后来人少走 2 年弯路。如果有具体问题,可以在评论区问,我看到会回。#跨境电商 #Sorftime #MCP #AI选品 #Amazon