Initial commit: moreminimore-service content pipeline

- 9 mm* skills (orchestrator, article, social, publish, analytics)
- 6 dependency skills (content-writer, geo-optimizer, etc.)
- 3 analytics scripts (GSC, Google Ads, Meta Ads)
- Config template + setup guide
- SOUL-MM.md persona extension
- OrbitOS integration reference
This commit is contained in:
Kunthawat Greethong
2026-07-02 10:01:53 +07:00
commit 7b5af16f6d
36 changed files with 7803 additions and 0 deletions

View File

@@ -0,0 +1,228 @@
---
name: mm-analytics-orchestrator
description: >
Pull SEO + Ad performance data for a client, analyze trends, and produce
prioritized strategy recommendations. Saves report to vault and presents
in chat. Use when: "วิเคราะห์ผล", "analytics report", "ดูสถิติ",
"แนะนำกลยุทธ์", "strategy recommendations", "seo report", "ad performance",
"content ideas from data", "เขียนอะไรดี", "analytics".
---
# mm-analytics-orchestrator
Pulls analytics data, analyzes trends, and produces prioritized strategy
recommendations for a client.
## When This Must Trigger
- "วิเคราะห์ผล", "analytics report", "ดูสถิติ"
- "แนะนำกลยุทธ์", "strategy recommendations"
- "seo report", "ad performance"
- "content ideas from data", "เขียนอะไรดี"
- "analytics"
## Process
### Step 1: Determine client
If not specified, ask:
```
วิเคราะห์ผลของลูกค้าไหน?
1. moreminimore
2. [other clients...]
```
### Step 2: Pull data
Run analytics scripts from `~/Gitea/moreminimore-service-system/scripts/`:
```bash
# GSC data
python3 mm_gsc.py --client <client-id> --days 30 --json
# Google Ads data (if available)
python3 mm_google_ads.py --client <client-id> stats --days 30 --json
# Meta Ads data (if available)
python3 mm_meta_ads.py --client <client-id> stats --days 30 --json
```
If a script fails (no data, API error), skip that source and note it.
### Step 3: Analyze
#### SEO Analysis
**a. Quick Wins (Position 4-10)**
- Queries on page 1 but below top 3
- High impression, low CTR → title/description optimization
- Action: ปรับ meta title/description
**b. Content Gaps (Position 11-30)**
- Queries with impressions but no dedicated content
- Action: เขียนบทความใหม่
**c. CTR Opportunities**
- High impressions, low CTR (< expected for position)
- Action: ปรับ title/description, add schema
**d. Declining Pages**
- Pages with >30% traffic decline
- Action: Refresh content, update data
**e. GEO Opportunities**
- Question-format queries, definition queries
- Action: Optimize for AI citation
#### Ad Analysis (if data available)
**a. High CPA Campaigns**
- CPA > 2x target
- Action: ปรับ targeting, ทดสอบ creative ใหม่
**b. Low QS Keywords**
- Quality Score < 5
- Action: ปรับ ad relevance, landing page
**c. Budget Optimization**
- High spend, low conversion
- Action: ย้าย budget
**d. Creative Fatigue**
- CTR declining over time
- Action: Refresh creative
#### Cross-Channel
**a. SEO + Ad Synergy**
- Organic ranking well for paid keyword
- Action: ลด paid spend
**b. Content → Ad Pipeline**
- Article with good traffic → create ad
- Action: สร้าง campaign จาก content
**c. Ad → Content Pipeline**
- Keyword with good ad conversion → write article
- Action: เขียนบทความ SEO
### Step 4: Prioritize recommendations
Rank by impact × effort:
| Priority | Criteria |
|----------|----------|
| 🔴 Priority 1 | High impact, low effort (quick wins) |
| 🟡 Priority 2 | High impact, medium effort (content opportunities) |
| 🟢 Priority 3 | Medium impact, optimization (ad tuning) |
| 🔵 Priority 4 | Cross-channel opportunities |
### Step 5: Present and ask
Present the report in chat (match user's language):
```
📋 Strategy Report: [Client Name]
📅 Period: [date range]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 SEO Performance
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Metric | Value | Trend |
|--------|-------|-------|
| Clicks | X | ↑/↓ X% |
| Impressions | X | ↑/↓ X% |
| CTR | X% | ↑/↓ |
| Position | X | ↑/↓ |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 Priority 1: Quick Wins
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. [Action]
Evidence: [data]
Expected: [outcome]
2. [Action]
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 Priority 2: Content Opportunities
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. เขียนบทความ: "[topic]"
Keyword: [kw], [X] impressions, position [X]
Search intent: [type]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📢 Priority 3: Ad Optimization
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(ถ้ามีข้อมูล ads)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔄 Priority 4: Cross-Channel
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
Then ask:
```
อยากทำตามแนะนำไหม?
1. ✅ ทำทั้งหมด — สร้าง brief / optimize ตามลำดับ
2. 📝 เฉพาะ content — สร้าง brief จาก content gaps
3. 📢 เฉพาะ ads — optimize campaigns
4. ⏭️ ข้าม — แค่ดูรายงาน
```
If user chooses to act:
- Content gaps → load `mm-article-idea-extract` with the recommended topic
- Ad optimization → provide specific commands/changes
- SEO fixes → provide specific title/description rewrites
### Step 6: Save report
Save to vault:
```
~/vault/50_Resources/Strategy for Customers/<client-id>/YYYY-MM-DD-report.md
```
Create the folder if it doesn't exist.
Report format:
```markdown
---
type: strategy-report
client: <client-id>
period: <start-date> to <end-date>
generated: YYYY-MM-DD
---
# Strategy Report: [Client Name]
[full report content]
```
### Step 7: Confirm
```
✅ รายงาน saved: ~/vault/50_Resources/Strategy for Customers/<client-id>/YYYY-MM-DD-report.md
```
## Output
- Chat: full report with recommendations
- Vault: `~/vault/50_Resources/Strategy for Customers/<client-id>/YYYY-MM-DD-report.md`
## Notes
- Match user's language (Thai if they write Thai, English if English)
- If GSC data is empty (new site), note it and focus on ad data
- If no ad data, focus on SEO only
- Always ask before taking action (creating briefs, optimizing)
- Reports are cumulative — each report builds on previous data