skills/personalized-recommendation/SKILL.md
个性化推荐引擎 - 基于购买历史、协同过滤和"经常一起购买"的产品推荐系统
npx skillsauth add huifer/Shopilot personalized-recommendationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
智能推荐系统,提升交叉销售和向上销售
基于机器学习的个性化推荐引擎,通过购买历史分析、协同过滤和关联规则挖掘,为每个客户提供精准的产品推荐。
推荐逻辑:
├─ 个人购买历史
├─ 购买频率分析
├─ 品类偏好识别
├─ 购买周期预测
└─ 复购提醒
推荐类型:
├─ 复购推荐(用完再买)
├─ 升级推荐(更好版本)
├─ 补充推荐(配套产品)
└─ 新品推荐(同类别)
基于用户:
├─ 相似用户识别
├─ 用户行为聚类
├─ 群体偏好挖掘
└─ 跨用户推荐
基于物品:
├─ 物品相似度计算
├─ 共现模式分析
├─ 关联规则挖掘
└─ 物品推荐
经常一起购买:
├─ 购物篮分析
├─ Apriori 算法
├─ FP-Growth 算法
└─ 关联规则
推荐场景:
├─ 产品页推荐
├─ 购物车推荐
├─ 结账页推荐
└─ 邮件推荐
实时场景:
├─ 浏览行为推荐
├─ 搜索意图推荐
├─ 加购推荐
├─ 实时个性化
└─ 上下文感知
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd
# 用户-物品矩阵
user_item_matrix = df.pivot_table(
index='user_id',
columns='item_id',
values='rating',
fill_value=0
)
# 计算用户相似度
user_similarity = cosine_similarity(user_item_matrix)
user_sim_df = pd.DataFrame(
user_similarity,
index=user_item_matrix.index,
columns=user_item_matrix.index
)
# 为用户推荐
def recommend_for_user(user_id, n_recommendations=10):
# 找到相似用户
similar_users = user_sim_df[user_id].sort_values(ascending=False)[1:11]
# 获取相似用户购买但目标用户未购买的物品
recommendations = []
for similar_user, similarity in similar_users.items():
similar_user_items = user_item_matrix.loc[similar_user]
user_items = user_item_matrix.loc[user_id]
# 未购买但相似用户购买且评分高的物品
new_items = similar_user_items[(similar_user_items > 0) & (user_items == 0)]
for item, rating in new_items.items():
recommendations.append({
'item_id': item,
'score': rating * similarity
})
# 排序并返回前N个
recommendations = sorted(recommendations, key=lambda x: x['score'], reverse=True)
return recommendations[:n_recommendations]
# 物品-物品相似度
item_similarity = cosine_similarity(user_item_matrix.T)
item_sim_df = pd.DataFrame(
item_similarity,
index=user_item_matrix.columns,
columns=user_item_matrix.columns
)
# 基于用户历史推荐相似物品
def recommend_similar_items(user_id, n_recommendations=10):
# 获取用户购买的物品
user_items = user_item_matrix.loc[user_id]
purchased_items = user_items[user_items > 0].index
# 计算推荐分数
recommendations = {}
for item in purchased_items:
# 获取相似物品
similar_items = item_sim_df[item].sort_values(ascending=False)[1:11]
for similar_item, similarity in similar_items.items():
if similar_item not in purchased_items:
if similar_item not in recommendations:
recommendations[similar_item] = 0
recommendations[similar_item] += similarity * user_items[item]
# 排序并返回
recommendations = sorted(recommendations.items(), key=lambda x: x[1], reverse=True)
return recommendations[:n_recommendations]
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 准备交易数据
basket = (df.groupby(['order_id', 'product_id'])['quantity']
.sum().unstack().reset_index().fillna(0)
.set_index('order_id'))
# 转换为布尔值
basket_sets = basket.applymap(lambda x: 1 if x > 0 else 0)
# 挖掘频繁项集
frequent_itemsets = apriori(basket_sets, min_support=0.01, use_colnames=True)
# 生成关联规则
rules = association_rules(
frequent_itemsets,
metric="lift",
min_threshold=1
)
# 过滤高质量规则
quality_rules = rules[
(rules['lift'] >= 2) &
(rules['confidence'] >= 0.3)
].sort_values('lift', ascending=False)
# 获取推荐
def get_recommendations_from_basket(basket_items, n_recommendations=5):
recommendations = {}
for item in basket_items:
# 找到以该物品为前件的规则
item_rules = quality_rules[quality_rules['antecedents'] == {item}]
for _, rule in item_rules.iterrows():
for consequent in rule['consequents']:
if consequent not in basket_items:
if consequent not in recommendations:
recommendations[consequent] = 0
recommendations[consequent] += rule['lift']
# 排序并返回
recommendations = sorted(recommendations.items(), key=lambda x: x[1], reverse=True)
return recommendations[:n_recommendations]
from surprise import SVD, Dataset, Reader
from surprise.model_selection import train_test_split
# 准备数据
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader)
# 训练模型
trainset, testset = train_test_split(data, test_size=0.2)
algo = SVD(n_factors=100, n_epochs=20, biased=True)
algo.fit(trainset)
# 预测
def predict_rating(user_id, item_id):
prediction = algo.predict(user_id, item_id)
return prediction.est
# 为用户推荐
def recommend_for_user_svd(user_id, n_recommendations=10):
# 获取所有物品
all_items = df['item_id'].unique()
# 获取用户已购买物品
user_items = df[df['user_id'] == user_id]['item_id'].unique()
# 预测未购买物品的评分
recommendations = []
for item in all_items:
if item not in user_items:
predicted_rating = predict_rating(user_id, item)
recommendations.append({
'item_id': item,
'score': predicted_rating
})
# 排序并返回
recommendations = sorted(recommendations, key=lambda x: x['score'], reverse=True)
return recommendations[:n_recommendations]
推荐位置:
- 产品详情页侧边栏
- "看过此商品的人还看过"
- "相关产品推荐"
- "经常一起购买"
推荐策略:
基于物品协同过滤:
- 相似产品
- 同类产品
- 配套产品
关联规则:
- 购买此商品的人还买了
- 最佳组合
- 套装优惠
展示方式:
- 4-8个产品
- 产品图片
- 产品名称
- 价格
- 评分
示例:
主产品: iPhone 15 Pro
推荐:
1. iPhone 15 Pro 手机壳
2. MagSafe 充电器
3. AirPods Pro
4. Apple Watch
5. Lightning 数据线
推荐位置:
- 购物车页面
- 结账前
- "您可能还需要"
推荐策略:
实时协同过滤:
- 基于购物车内物品
- 购买此组合的人还买了
- 缺少配件提醒
关联规则:
- 最佳组合
- 套装优惠
- 满减搭配
展示方式:
- 轻量推荐(2-4个)
- 简洁信息
- 快速加购
- 组合优惠
示例:
购物车: [iPhone 15 Pro, AirPods Pro]
推荐:
1. MagSafe 充电器(加购享9折)
2. iPhone 15 Pro 手机壳(组合省¥50)
文案: "完成您的装备组合,立即省¥100"
推荐类型:
个性化推荐邮件:
- 每周为您精选
- 基于浏览历史
- 基于购买历史
复购提醒邮件:
- 您的XX可能用完了
- 基于购买周期
- 复购优惠
新品推荐邮件:
- 您喜欢的类别有新品
- 基于偏好类别
- 新品首发
推荐策略:
用户协同过滤:
- 与您相似的人喜欢
- 热门推荐
- 趋势产品
个性化排序:
- 预测评分
- 购买概率
- 利润考虑
邮件结构:
主题: "{{name}},这5个产品我们精选给您"
内容:
- 个性化问候
- 5-8个推荐产品
- 推荐理由
- 专属优惠
- 清晰CTA
推荐区块:
- "为您推荐"
- "猜您喜欢"
- "新品首发"
- "热门推荐"
推荐策略:
混合推荐:
- 60% 个性化推荐
- 20% 热门产品
- 10% 新品
- 10% 促销产品
个性化:
- 基于历史行为
- 基于实时浏览
- 基于相似用户
多样性:
- 不同类别
- 不同价位
- 不同品牌
展示方式:
- 轮播展示
- 网格布局
- 懒加载
- 无限滚动
<!-- 产品页推荐 -->
<div class="product-recommendations">
<h2>您可能还喜欢</h2>
<div class="recommendations-grid">
{% for product in recommendations %}
<div class="recommendation-item">
<a href="{{ product.url }}">
<img src="{{ product.featured_image }}"
alt="{{ product.title }}"
loading="lazy">
<h3>{{ product.title }}</h3>
<div class="price">
{% if product.compare_at_price > product.price %}
<span class="original-price">
{{ product.compare_at_price | money }}
</span>
{% endif %}
<span class="sale-price">
{{ product.price | money }}
</span>
</div>
<div class="rating">
<span class="stars">★★★★☆</span>
<span class="count">({{ product.reviews_count }})</span>
</div>
</a>
<form method="post" action="/cart/add">
<input type="hidden" name="id" value="{{ product.variants.first.id }}">
<button type="submit" class="btn-add-cart">
加入购物车
</button>
</form>
</div>
{% endfor %}
</div>
</div>
<script>
// 推荐算法(简化版)
async function loadRecommendations(productId) {
try {
const response = await fetch(`/recommendations/products?product_id=${productId}&limit=8`);
const products = await response.json();
const grid = document.querySelector('.recommendations-grid');
grid.innerHTML = products.map(product => `
<div class="recommendation-item">
<!-- 产品HTML -->
</div>
`).join('');
} catch (error) {
console.error('推荐加载失败:', error);
}
}
// 页面加载时执行
document.addEventListener('DOMContentLoaded', () => {
const productId = {{ product.id }};
loadRecommendations(productId);
});
</script>
<?php
/**
* 产品页推荐插件
*/
// 获取推荐产品
function get_personalized_recommendations($product_id, $limit = 8) {
$user_id = get_current_user_id();
// 获取推荐算法结果
$recommendations = array();
if ($user_id) {
// 已登录用户:个性化推荐
$recommendations = get_user_based_recommendations($user_id, $limit);
} else {
// 游客:基于产品推荐
$recommendations = get_item_based_recommendations($product_id, $limit);
}
return $recommendations;
}
// 基于用户的推荐
function get_user_based_recommendations($user_id, $limit) {
// 获取用户历史订单
$orders = wc_get_orders(array(
'customer_id' => $user_id,
'limit' => -1
));
// 分析购买历史
$purchased_products = array();
foreach ($orders as $order) {
foreach ($order->get_items() as $item) {
$purchased_products[] = $item->get_product_id();
}
}
// 协同过滤(简化)
$recommendations = array();
$args = array(
'post_type' => 'product',
'posts_per_page' => $limit * 2,
'post__not_in' => $purchased_products,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => get_user_favorite_categories($user_id),
),
),
);
$query = new WP_Query($args);
return $query->posts;
}
// 短代码:推荐产品
add_shortcode('personalized_recommendations', function($atts) {
global $product;
$atts = shortcode_atts(array(
'limit' => 8,
), $atts);
$recommendations = get_personalized_recommendations(
$product->get_id(),
$atts['limit']
);
ob_start();
?>
<div class="personalized-recommendations">
<h2>您可能还喜欢</h2>
<div class="products-grid">
<?php foreach ($recommendations as $rec_product): ?>
<?php wc_get_template_part('content', 'product'); ?>
<?php endforeach; ?>
</div>
</div>
<?php
return ob_get_clean();
});
// AJAX: 加载更多推荐
add_action('wp_ajax_load_recommendations', 'ajax_load_recommendations');
add_action('wp_ajax_nopriv_load_recommendations', 'ajax_load_recommendations');
function ajax_load_recommendations() {
$product_id = intval($_POST['product_id']);
$offset = intval($_POST['offset']);
$limit = 8;
$recommendations = get_personalized_recommendations($product_id, $limit, $offset);
wp_send_json_success($recommendations);
}
<!-- 邮件推荐模板 -->
<!DOCTYPE html>
<html>
<head>
<style>
.recommendations-container {
max-width: 600px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
.recommendations-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
margin: 20px 0;
}
.recommendation-item {
border: 1px solid #ddd;
padding: 15px;
text-align: center;
}
.recommendation-item img {
max-width: 100%;
height: auto;
}
.recommendation-item h3 {
font-size: 16px;
margin: 10px 0;
}
.recommendation-item .price {
font-weight: bold;
color: #e74c3c;
font-size: 18px;
}
.recommendation-item .cta-button {
display: inline-block;
padding: 10px 20px;
background: #3498db;
color: white;
text-decoration: none;
border-radius: 5px;
margin-top: 10px;
}
</style>
</head>
<body>
<div class="recommendations-container">
<h1>Hi {{ customer_name }},为您精选</h1>
<p>基于您最近购买的 {{ last_purchase }},我们为您挑选了这些产品:</p>
<div class="recommendations-grid">
{% for product in recommendations %}
<div class="recommendation-item">
<img src="{{ product.image }}" alt="{{ product.name }}">
<h3>{{ product.name }}</h3>
<p class="price">{{ product.price }}</p>
<a href="{{ product.url }}" class="cta-button">
查看详情
</a>
</div>
{% endfor %}
</div>
<p style="text-align: center; margin-top: 30px;">
<a href="{{ view_more_url }}" style="color: #3498db;">
查看更多推荐 →
</a>
</p>
</div>
</body>
</html>
/personalized-recommendation --user-based --customer-id "12345"
/personalized-recommendation --item-based --product-id "67890"
/personalized-recommendation --association --data "orders.csv"
/personalized-recommendation --code --platform "shopify"
/advanced-customer-segmentation - 客户细分分析/email-sequence - 推荐邮件序列/prime-product-desc - 产品描述优化/basic-analytics - 推荐效果分析让每个推荐都精准命中客户需求! 🎯
版本: 1.0.0 更新: 2026-04-12 作者: Shopilot Team
tools
工作流自动化专家 - 设计和实施电商自动化工作流,提升运营效率,减少人工操作
tools
批发模式配置专家 - 设置和管理 B2B 批发功能,包括定价、MOQ、批发门户和客户管理
tools
VIP客户管理系统 - 识别、分级、服务和维护高价值客户,提升客户忠诚度和生命周期价值
testing
技术 SEO 审计器 - 网站速度分析、爬虫可访问性、索引覆盖率、结构化数据验证、移动友好性检查