Install
openclaw skills install @nh5gntnf78-oss/competitor-price-monitor自动监控竞品价格,生成价格趋势报告。当用户说"监控竞品价格"、"追踪价格变化"、"价格监控"、"竞品分析"时触发此技能。支持淘宝、京东、拼多多、亚马逊等主流电商平台。
openclaw skills install @nh5gntnf78-oss/competitor-price-monitor本技能自动监控指定竞品的价格变化,生成价格趋势分析报告,帮助商家优化定价策略。
核心价值:
输入:产品关键词 或 产品URL列表
输出:价格监控报告(Markdown/Excel/腾讯文档)
输入格式(JSON文件):
{
"products": [
{
"name": "iPhone 15 Pro Max",
"platforms": ["taobao", "jd", "pdd"],
"urls": {
"taobao": "https://item.taobao.com/...",
"jd": "https://item.jd.com/...",
"pdd": "https://mobile.yangkeduo.com/..."
}
}
]
}
保存位置:config/monitor_list.json
工具:xbrowser 技能(浏览器自动化)
支持的电商平台:
item.taobao.comitem.jd.commobile.yangkeduo.comamazon.comhaohuo.jinritemai.com示例脚本(保存到 scripts/scrape_price.py):
import json
import subprocess
from datetime import datetime
def scrape_price(product_url, platform):
"""使用xbrowser抓取价格"""
# 构建xbrowser命令
cmd = [
'python', '-m', 'xbrowser',
'--url', product_url,
'--platform', platform,
'--action', 'get_price',
'--output', 'json'
]
# 执行命令
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
data = json.loads(result.stdout)
return {
'price': data.get('price'),
'currency': data.get('currency', 'CNY'),
'availability': data.get('availability', 'unknown'),
'scraped_at': datetime.now().isoformat()
}
else:
print(f"Error scraping {product_url}: {result.stderr}")
return None
def scrape_multiple_products(products):
"""批量抓取产品价格"""
results = []
for product in products:
product_name = product['name']
urls = product.get('urls', {})
for platform, url in urls.items():
print(f"Scraping {product_name} on {platform}...")
price_data = scrape_price(url, platform)
if price_data:
results.append({
'product': product_name,
'platform': platform,
'price': price_data['price'],
'currency': price_data['currency'],
'availability': price_data['availability'],
'url': url,
'scraped_at': price_data['scraped_at']
})
return results
if __name__ == '__main__':
# 读取监控列表
with open('config/monitor_list.json', 'r', encoding='utf-8') as f:
config = json.load(f)
# 抓取价格
results = scrape_multiple_products(config['products'])
# 保存结果
output_file = f"output/prices_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"✅ 价格数据已保存:{output_file}")
分析维度:
示例脚本(保存到 scripts/analyze_prices.py):
import json
import pandas as pd
from datetime import datetime
def analyze_prices(price_data):
"""分析价格数据"""
# 转换为DataFrame
df = pd.DataFrame(price_data)
df['scraped_at'] = pd.to_datetime(df['scraped_at'])
# 按产品和平台分组
analysis = []
for (product, platform), group in df.groupby(['product', 'platform']):
prices = group['price'].tolist()
analysis.append({
'product': product,
'platform': platform,
'current_price': prices[-1] if prices else None,
'min_price': min(prices) if prices else None,
'max_price': max(prices) if prices else None,
'avg_price': sum(prices) / len(prices) if prices else None,
'price_change': prices[-1] - prices[0] if len(prices) > 1 else 0,
'scraped_at': group['scraped_at'].max()
})
return analysis
def generate_report(analysis, output_format='markdown'):
"""生成分析报告"""
if output_format == 'markdown':
report = "# 竞品价格监控报告\n\n"
report += f"生成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n"
for item in analysis:
report += f"## {item['product']} - {item['platform']}\n\n"
report += f"- 当前价格:{item['current_price']} {item['currency']}\n"
report += f"- 最低价:{item['min_price']} {item['currency']}\n"
report += f"- 最高价:{item['max_price']} {item['currency']}\n"
report += f"- 平均价:{item['avg_price']:.2f} {item['currency']}\n"
report += f"- 价格变化:{item['price_change']} {item['currency']}\n"
report += f"- 更新时间:{item['scraped_at']}\n\n"
return report
elif output_format == 'excel':
# 使用xlsx技能生成Excel报告
pass
if __name__ == '__main__':
# 读取价格数据
import glob
price_files = glob.glob('output/prices_*.json')
if not price_files:
print("No price data found!")
exit(1)
latest_file = max(price_files)
with open(latest_file, 'r', encoding='utf-8') as f:
price_data = json.load(f)
# 分析价格
analysis = analyze_prices(price_data)
# 生成报告
report = generate_report(analysis, output_format='markdown')
# 保存报告
output_file = f"output/price_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.md"
with open(output_file, 'w', encoding='utf-8') as f:
f.write(report)
print(f"✅ 分析报告已生成:{output_file}")
支持的输出格式:
xlsx 技能tencent-docs 技能(需要授权)imap-smtp-email 技能配合 qclaw-cron-skill 实现每日自动监控:
{
"name": "每日价格监控",
"schedule": {
"kind": "cron",
"expr": "0 9,15,21 * * *",
"tz": "Asia/Shanghai"
},
"payload": {
"kind": "agentTurn",
"message": "使用 competitor-price-monitor 技能,抓取竞品价格并生成报告"
},
"sessionTarget": "isolated",
"delivery": {
"mode": "announce"
}
}
以上配置会在每天9点、15点、21点自动执行价格监控。
定价建议:
服务收费:
scrape_price.py:价格抓取脚本analyze_prices.py:价格分析脚本generate_report.py:报告生成脚本monitor_list.json:监控列表配置文件platform_config.json:电商平台配置platform_api.md:各平台价格抓取方法anti_scraping.md:反爬虫策略应对提示:初次使用可以先不创建脚本,直接让我按照工作流程执行即可。熟悉后可以根据需要逐步添加资源文件。
想要更省事?我还提供:
| 服务 | 价格 | 内容 |
|---|---|---|
| 🚗 代安装调试 | ¥68/次 | 帮你安装配置,解决环境问题 |
| 🛠️ 定制技能开发 | ¥200起 | 根据需求开发专属技能 |
| 🚀 视频自动化陪跑 | ¥999/月 | 从0到1搭建完整视频自动化 |
| 📦 技能全家桶 | ¥199 | 11个AI技能永久用 + 代安装 |
微信咨询:[微信号待填写]