| name | china-3c-marketing-copilot |
| description | AI-powered marketing copilot for China's 3C consumer electronics market (mobile, laptops, earphones, wearables, smart home) |
| triggers | ["help me write a creative campaign for a new phone launch in China","analyze competitor risks for our earphone product","create a marketing strategy for smart home devices","evaluate risks for our laptop launch campaign","compare competitive landscape for wearables in China market","generate creative ideas for 3C product promotion","assess market positioning for consumer electronics","analyze KOL ecosystem for tech product launch"] |
China 3C Marketing Copilot Skill
Skill by ara.so — Marketing Skills collection.
An AI-powered knowledge base and copilot system for marketing consumer electronics (3C) in the Chinese market. Covers smartphones, laptops, earphones, wearables, and smart home devices with competitive analysis, creative campaign generation, risk assessment, and market insights.
What This Project Does
China 3C Marketing Copilot is a structured knowledge base designed to be used as context for AI agents to:
- Generate creative campaigns grounded in real market data
- Analyze competitive threats using cross-referenced product evaluations
- Assess marketing risks including social media backlash scenarios
- Provide category insights from expert reviews (爱否科技, 笔吧评测室, etc.)
- Simulate audience reactions across 5 persona types
- Break into new categories using proven playbook strategies
The system enforces strict data discipline: no fabricated numbers, source attribution required, speculation must be labeled.
Installation
Clone the repository:
git clone https://github.com/killsnake01/China-Marketing-Copilot-Skill.git
cd China-Marketing-Copilot-Skill
No additional dependencies required for basic usage. The knowledge base is pure Markdown.
For data preprocessing (optional):
pip install pandas
python scripts/preprocess.py --input raw_data.csv --output knowledge-base/
Project Structure
docs/
templates/ # Output formats (creative, insights, risk)
references/ # KOL database, platform rules, personas
ecosystem/ # Industry terminology, memes to avoid
knowledge-base/
mobile/ # Phone brand matrix, pricing tiers
headphones/ # Earphone reviews, clip-on comparison
laptops/ # Notebook selection guide (笔吧)
wearables/ # Smartwatch/band market data
smart-home/ # Robot vacuum reviews, case studies
scripts/
preprocess.py # Data cleaning utility
Core Capabilities
1. Creative Campaign Generation
Trigger phrases:
- "帮我想几个创意" (give me some creative ideas)
- "写个传播方案" (write a campaign plan)
- "手机发布会创意" (phone launch event ideas)
Output format:
Uses docs/templates/creative-output.md template. Generates 3-5 ideas per request with:
- Hook (attention-grabbing headline)
- Core Message (data-driven value prop)
- Execution (platform-specific tactics)
- Risk Flag (potential backlash points)
Example usage:
context = load_knowledge_base("knowledge-base/mobile/")
prompt = f"""
Using this data: {context}
Generate 3 creative campaign ideas for a mid-range phone (2000-3000 RMB)
with Snapdragon 8 Gen 3 chip, focusing on Xiaohongshu platform.
Follow creative-output.md template.
"""
De-duplication:
Check docs/templates/used-ideas.md before generation. Append new ideas to prevent repetition.
2. Competitive Analysis
Trigger phrases:
- "XX发布了,对我们有什么威胁" (XX launched, what's the threat)
- "分析竞品" (analyze competitors)
- "横评对比" (cross-evaluation comparison)
Data sources in knowledge base:
mobile/_index.md: 16 phone brands, chipset camps, pricing tiers
laptops/_index.md: 笔吧 2025 laptop guide, 8 price segments
headphones/_index.md: 12 clip-on earphone comparison (爱否科技)
Example code:
import os
import re
def load_category_data(category: str) -> dict:
"""Load brand matrix and evaluation data for a category."""
base_path = f"knowledge-base/{category}/"
index_file = os.path.join(base_path, "_index.md")
with open(index_file, 'r', encoding='utf-8') as f:
content = f.read()
brands = re.findall(r'\| (.+?) \| (.+?) \| (.+?) \|', content)
return {
'category': category,
'brands': brands,
'raw_content': content
}
laptop_data = load_category_data('laptops')
Output format:
Uses docs/templates/insight-output.md with required sections:
- Market Position (price tier, feature positioning)
- Competitive Threats (direct overlap products)
- Differentiation Gaps (where competitor is weak)
- Data Sources (must cite: KOL name + platform + date)
3. Risk Assessment
Trigger phrases:
- "会不会翻车" (will this backfire)
- "风险评估" (risk assessment)
- "有没有负面" (any negative risks)
Template:
docs/templates/risk-assessment.md includes:
- Technical Risk (spec exaggeration, measurement tricks)
- Social Risk (5 persona backlash simulation)
- Platform Risk (content guideline violations)
- Historical Precedent (similar campaigns that failed)
Persona simulation:
Load from docs/references/comment-personas.md:
PERSONAS = {
"参数党": "Spec sheet warriors - will fact-check every number",
"解构找茬": "Deconstruction trolls - expose marketing tricks",
"真实体验派": "Real user experience advocates - hate hype",
"品牌信仰": "Brand loyalists - defend their tribe",
"吃瓜群众": "Casual observers - amplify drama"
}
def simulate_comment_section(campaign_text: str, personas: dict) -> list:
"""Generate predicted negative comments from each persona."""
comments = []
for persona_type, description in personas.items():
prompt = f"As a {persona_type} ({description}), critique: {campaign_text}"
comments.append(generate_critique(prompt))
return comments
Case study integration:
Knowledge base includes real翻车案例 (backfire cases):
knowledge-base/laptops/_index.md: Lenovo Y9000P thermal issues
knowledge-base/smart-home/: Robot vacuum "deceptive cleaning" scandal
4. New Category Playbook
Trigger phrases:
- "怎么传播新品类" (how to promote new category)
- "市场教育成本高" (high market education cost)
- "新品类破局" (breakthrough strategy for new category)
5 proven methods:
Located in docs/templates/new-category-playbook.md
Example - Method 1: 认知刷新法 (Perception Reset)
def generate_perception_reset_campaign(product_data: dict) -> dict:
"""
Find human limit benchmark → Product breaks it → Visualize data
Example: DJI ROMO cleaning 500㎡ villa in 2 hours
(Human baseline: 4+ hours)
"""
return {
"human_baseline": "Find existing perception (e.g., 'villa cleaning takes half a day')",
"product_performance": product_data['key_metric'],
"visualization": "Side-by-side time-lapse video",
"data_source": "Must cite: test environment + conditions"
}
romo_data = {
'key_metric': '2小时清洁500㎡别墅 (2 hours for 500㎡ villa)',
'comparison': '人工清洁需4小时+ (Manual: 4+ hours)'
}
campaign = generate_perception_reset_campaign(romo_data)
Method 5: 专业信任纪录片法 (Professional Trust Documentary)
- Recruit real professionals (not actors)
- 6-month field test period
- Minimalist documentary style (no hype language)
- Case study: DJI agriculture drones with actual farmers
5. Data Import & Preprocessing
Trigger phrase:
- "处理新数据" (process new data)
- "我导入了新文件" (I imported a new file)
Preprocessing script:
import pandas as pd
import json
import sys
def clean_review_data(input_file: str, output_dir: str):
"""
Clean and validate review data before adding to knowledge base.
Validation rules:
- Numbers must have units
- Ratings must have scale (e.g., 5/5)
- Price must include currency and date
- Source must include: KOL name + platform + publish date
"""
df = pd.read_csv(input_file)
required_columns = ['product_name', 'metric', 'value', 'unit', 'source', 'date']
for col in required_columns:
if col not in df.columns:
raise ValueError(f"Missing required column: {col}")
for idx, row in df.iterrows():
source = row['source']
if not ('|' in source and len(source.split('|')) >= 3):
print(f"Warning: Invalid source format at row {idx}: {source}")
print("Expected: KOL名|平台|日期 (e.g., 爱否科技|Bilibili|2025-03)")
category = df[].iloc[]
output_path =
df.to_json(output_path, orient=, force_ascii=, indent=)
()
__name__ == :
clean_review_data(sys.argv[], sys.argv[])
Run preprocessing:
python scripts/preprocess.py earphone_reviews.csv knowledge-base/
Configuration
User Profile (Optional)
Create user-config.json for personalized output:
{
"brand": "your_brand_name",
"category": "mobile",
"target_price_range": "2000-3000",
"competitors": ["Redmi", "Realme", "iQOO"],
"platforms": ["Xiaohongshu", "Douyin", "Bilibili"],
"risk_tolerance": "conservative",
"kol_preferences": ["爱否科技", "ZEALER"]
}
Environment Variables
For API integrations (optional):
XIAOHONGSHU_API_KEY=your_key_here
BILIBILI_API_KEY=your_key_here
MARKET_DATA_SOURCE=https://your-data-api.com
Load in Python:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('XIAOHONGSHU_API_KEY')
Real-World Workflow Example
Complete campaign generation flow:
import os
import json
def load_knowledge_base(category: str) -> str:
path = f"knowledge-base/{category}/_index.md"
with open(path, 'r', encoding='utf-8') as f:
return f.read()
def load_template(template_name: str) -> str:
path = f"docs/templates/{template_name}.md"
with open(path, 'r', encoding='utf-8') as f:
return f.read()
def load_used_ideas() -> list:
path = "docs/templates/used-ideas.md"
with open(path, 'r', encoding='utf-8') as f:
content = f.read()
import re
hooks = re.findall(r'- \*\*(.+?)\*\*', content)
return hooks
def generate_campaign(product_spec: dict, platform: ):
kb_data = load_knowledge_base(product_spec[])
template = load_template()
used_hooks = load_used_ideas()
prompt =
prompt
product = {
: ,
: ,
: ,
: ,
: [, , ]
}
campaign_prompt = generate_campaign(product, )
Risk assessment workflow:
def assess_campaign_risk(campaign_text: str) -> dict:
"""
Run multi-layer risk check on campaign content.
"""
personas_content = load_template('comment-personas')
kb_smart_home = load_knowledge_base('smart-home')
failures = extract_case_studies(kb_smart_home)
prompt = f"""
Campaign Text:
{campaign_text}
Comment Personas (simulate negative reactions):
{personas_content}
Historical Failures (check for similar patterns):
{failures}
Assess risks in these dimensions:
1. Technical credibility (can 参数党 debunk it?)
2. Perception tricks (will 解构找茬 expose methods?)
3. Platform compliance (content guidelines)
4. Similar historical failures
Output in risk-assessment.md template format.
"""
return prompt
risk_prompt = assess_campaign_risk(campaign_output)
Common Patterns
Pattern 1: Cross-Category Competitive Analysis
def cross_category_comparison(product_a: dict, product_b: dict) -> str:
"""
Compare products from different categories (e.g., phone vs tablet).
Must ensure data sources are compatible.
"""
kb_a = load_knowledge_base(product_a['category'])
kb_b = load_knowledge_base(product_b['category'])
source_a = extract_sources(kb_a, product_a['name'])
source_b = extract_sources(kb_b, product_b['name'])
if not sources_compatible(source_a, source_b):
return "Error: Cannot compare - data sources not aligned (different test methodologies)"
Pattern 2: KOL Ecosystem Integration
def select_kols_for_category(category: str, budget: int) -> list:
"""
Select KOLs based on category expertise and budget.
"""
kol_db_path = "docs/ecosystem/kols.md"
with open(kol_db_path, 'r', encoding='utf-8') as f:
kol_data = f.read()
import re
kol_pattern = rf'\| (.+?) \| {category} \| (.+?) \| (.+?) \|'
matches = re.findall(kol_pattern, kol_data)
affordable_kols = [k for k in matches if parse_cost(k[2]) <= budget]
return affordable_kols
Pattern 3: Meme/Jargon Validation
def validate_campaign_language(text: str) -> list:
"""
Check campaign text against industry meme database to avoid backfires.
"""
meme_db = load_template('industry-memes')
warnings = []
risky_phrases = extract_risky_phrases(meme_db)
for phrase in risky_phrases:
if phrase in text:
context = get_meme_context(meme_db, phrase)
warnings.append({
'phrase': phrase,
'risk': context['risk_level'],
'explanation': context['why_risky']
})
return warnings
warnings = validate_campaign_language("我们的产品遥遥领先")
Troubleshooting
Issue 1: "知识库暂无此数据" (No data in knowledge base)
Cause: Querying product/brand not in knowledge base
Solution:
python scripts/preprocess.py new_product_data.csv knowledge-base/
Issue 2: Source Attribution Missing
Cause: Generated content lacks proper citations
Fix:
def validate_sources(content: str) -> bool:
"""Check if every claim has a source."""
import re
numbers = re.findall(r'\d+(?:\.\d+)?[%㎡mAh元]', content)
sources = re.findall(r'\[来源:.+?\]', content)
if len(numbers) > len(sources):
raise ValueError(f"Found {len(numbers)} claims but only {len(sources)} sources")
return True
Issue 3: AI Clichés in Output
Cause: Template not enforcing de-AI rules
Fix:
AI_CLICHES = [
"值得注意的是", "首先其次最后", "我们可以发现",
"不是A而是B", "在...背景下", "赋能", "生态"
]
def check_ai_language(text: str) -> list:
"""Detect AI clichés."""
found = [phrase for phrase in AI_CLICHES if phrase in text]
if found:
print(f"Warning: AI clichés detected: {found}")
print("Rewrite using colloquial language or data-driven statements")
return found
Issue 4: Data Source Conflicts
Cause: Mixing incompatible evaluation methodologies
Example:
laptop_a_battery = "10 hours (PCMark 10 test)"
laptop_b_battery = "12 hours (video playback)"
def compare_metrics(metric_a: dict, metric_b: dict):
if metric_a['test_method'] != metric_b['test_method']:
return {
'comparable': False,
'reason': f"Different test methods: {metric_a['test_method']} vs {metric_b['test_method']}"
}
Issue 5: Missing Risk Flags
Cause: Campaign generated without persona simulation
Fix:
def enforce_risk_check(campaign: str) -> str:
"""Mandatory risk assessment before finalizing campaign."""
personas = load_template('comment-personas')
if "[风险评估]" not in campaign:
risk_section = generate_risk_assessment(campaign, personas)
campaign += f"\n\n## 风险评估\n{risk_section}"
return campaign
Quality Checklist
Before finalizing any campaign output:
QUALITY_CHECKS = {
"数据纪律": [
"✓ Every number has source citation",
"✓ No fabricated statistics",
"✓ Speculation labeled as [推测]",
"✓ Competitive data from same source"
],
"去AI化": [
"✓ No '值得注意的是' phrases",
"✓ No '首先其次最后' structures",
"✓ No generic corporate jargon"
],
"风险覆盖": [
"✓ 5 personas simulated",
"✓ Historical case studies checked",
"✓ Platform compliance verified"
]
}
def run_quality_check(content: str) -> dict:
"""Run full quality validation."""
results = {}
for category, checks in QUALITY_CHECKS.items():
results[category] = []
for check in checks:
pass
return results
Advanced Usage
Sub-Agent Integration
DataProcessor Sub-Agent:
def activate_data_processor(raw_data: str):
"""
Sub-agent for data cleaning and validation.
See: docs/references/subagent-dataprocessor.md
"""
steps = [
"1. 纠错 - Fix encoding, formatting",
"2. 判断类型 - Classify data type (review/spec/comment)",
"3. 清洗 - Remove ads, extract facts",
"4. 提取 - Structured data extraction",
"5. 更新索引 - Update knowledge base index"
]
return process_pipeline(raw_data, steps)
FactChecker Sub-Agent:
def activate_fact_checker(content: str):
"""
Adversarial audit for generated content.
See: docs/references/subagent-factchecker.md
"""
checks = {
"数据核验": verify_data_sources(content),
"遗漏检测": check_missing_citations(content),
"幻觉扫描": detect_fabrications(content),
"逻辑一致性": validate_logic_chain(content)
}
return checks
Knowledge Base Coverage
| Category | Completeness | Data Sources |
|---|
| Mobile | ⭐⭐⭐ | 16 brands, chipset camps, price tiers |
| Earphones | ⭐⭐⭐ | 爱否科技 12-product clip-on review |
| Laptops | ⭐⭐⭐ | 笔吧 2025 guide, 8 price segments |
| Wearables | ⭐⭐⭐ | IDC 2025 market share, brand matrix |
| Smart Home | ⭐⭐⭐⭐ | 4 cross-referenced robot vacuum reviews, DJI ROMO case |
License: MIT
Repository: https://github.com/killsnake01/China-Marketing-Copilot-Skill
Last Updated: 2026-05-09