- 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
10 KiB
name, description
| name | description |
|---|---|
| mm-article-idea-extract | Data Stage B: Take an article idea, research it thoroughly (vault + internet), iterate with the user on focus areas and angles, then produce a complete brief.md. Use when: "มีไอเดียบทความ", "article idea", "อยากเขียนเรื่อง", "extract article idea", "prepare article topic", "เตรียมหัวข้อเขียนบทความ". |
Article Idea Extract & Prepare
Takes an article idea, researches it deeply, iterates with the user, and produces a complete article brief ready for the content writer.
When This Must Trigger
- "มีไอเดียบทความ", "article idea", "อยากเขียนเรื่อง"
- "extract article idea", "prepare article topic"
- "เตรียมหัวข้อเขียนบทความ", "research ก่อนเขียน"
- User provides a topic/keyword/concept and wants to write about it
Client Onboarding (when adding new client)
When user selects "ลูกค้าใหม่", run this flow:
1. Collect basic info
ชื่อลูกค้า: [name]
URL เว็บไซต์: [url]
ประเภท: astro / wordpress
2. Browse website → extract contact info
Fetch the website and extract contact information:
- Phone: look for tel:, phone patterns (0xx-xxx-xxxx)
- Email: look for mailto:, email patterns
- LINE: look for LINE ID (@xxx, line.me links)
- Facebook: look for facebook.com/ links
- Address: look for address patterns, Google Maps links
- Website URL: the main URL
Save extracted contact to clients-config.json:
config_path = os.path.expanduser("~/vault/99_System/clients-config.json")
config = json.load(open(config_path))
new_client = {
"id": client_id,
"display_name": display_name,
"contact": {
"phone": extracted_phone,
"email": extracted_email,
"line": extracted_line,
"facebook_url": extracted_facebook,
"website_url": website_url,
"address": extracted_address,
"cta_text": "" # generate below
},
"website": {
"type": website_type,
"url": website_url,
"categories": [],
"categories_cached_at": None
},
"social": { "facebook": {}, "instagram": {}, "x": {} },
"analytics": {}
}
config['clients'].append(new_client)
json.dump(config, open(config_path, 'w'), indent=2, ensure_ascii=False)
3. Generate CTA text
Based on extracted contact, generate a default CTA:
- If LINE: "สอบถามเพิ่มเติม ทัก LINE: @{line_id}"
- If phone: "ติดต่อ {phone}"
- If email: "อีเมล {email}"
- If facebook: "Inbox Facebook: {facebook_url}"
- Combine available channels
4. Create per-client folders
mkdir -p ~/vault/30_Research/<client-id>
mkdir -p ~/vault/30_Research/<client-id>/Archive
mkdir -p ~/vault/60_Articles/<client-id>
mkdir -p ~/vault/60_Articles/<client-id>/Archive
5. Confirm
✅ ลูกค้าใหม่: [display_name]
📞 ติดต่อ: [contact summary]
💬 CTA: [cta_text]
📂 Folders created: 30_Research/<id>/ + 60_Articles/<id>/
Process
Step 1: Receive the idea and determine client
The user provides an idea in any form:
- A keyword (e.g., "AI marketing")
- A concept (e.g., "ทำไมธุรกิจเล็กควรใช้ AI")
- A question (e.g., "CMS ตัวไหนดีที่สุดสำหรับบล็อก?")
- A rough topic (e.g., "เขียนเรื่อง WordPress vs Astro")
First, determine which client this article is for:
บทความนี้สำหรับลูกค้าไหน?
1. [client-1] — [display_name]
2. [client-2] — [display_name]
...
N. ลูกค้าใหม่ — เพิ่มข้อมูลลูกค้า
If new client selected: run the Client Onboarding flow (see below).
Extract the core topic and ask:
ได้ไอเดีย: [topic]
ขอถามเพิ่มเติมก่อนเริ่ม research:
1. กลุ่มเป้าหมายบทความนี้คือใคร?
2. อยากให้บทความนี้ตอบคำถามอะไร?
3. มีมุมมองเฉพาะที่อยากเน้นไหม?
4. โทน: ทางการ / casual / technical / beginner-friendly?
Step 2: Vault Research (existing knowledge)
Search the vault for related content. Search BOTH client-specific and general:
- Search 30_Research// for client's research notes
- Search 30_Research/general/ for general research notes
- Search 30_Research/ for any other relevant research
- Search 60_Articles// for existing articles (avoid duplication)
Present findings:
📚 ข้อมูลที่มีอยู่แล้วใน vault:
Research:
- [[Related Research 1]] — 30_Research/...
- [[Related Research 2]] — 30_Research/...
Wiki Concepts:
- [[Concept 1]] — brief summary
- [[Concept 2]] — brief summary
บทความที่มีแล้ว (หลีกเลี่ยงซ้ำ):
- [[Existing Article]] — เขียนเมื่อ YYYY-MM-DD
ข้อมูลที่ขาด: [what's missing that we need to research]
Step 3: Internet Research
Search the internet for current information:
- Web search the topic in Thai and English
- Find statistics — recent data, studies, surveys
- Find examples — case studies, real-world applications
- Find expert opinions — quotes, interviews, articles
- SERP analysis — what currently ranks for this topic
- Trends — is this topic trending? Any recent developments?
Organize findings by category:
🌐 Internet Research Results:
สถิติ/ข้อมูล:
- [stat 1] — source: [url]
- [stat 2] — source: [url]
ตัวอย่าง/Case Studies:
- [example 1]
- [example 2]
มุมมองผู้เชี่ยวชาญ:
- [expert quote] — [who], [source]
SERP Analysis (Top 5 สำหรับ "[keyword]"):
1. [title] — [url] — ครอบคลุม: [what they cover]
2. ...
สิ่งที่ขาดในบทความที่มีอยู่: [content gap opportunity]
Step 4: Present and iterate on angles
Combine vault + internet research, present to user:
📊 สรุปข้อมูลทั้งหมด:
หัวข้อ: [topic]
กลุ่มเป้าหมาย: [audience]
มุมที่น่าเขียน:
1. [Angle A] — [why this angle works]
2. [Angle B] — [why this angle works]
3. [Angle C] — [why this angle works]
เลือกมุมที่ต้องการ (หรือเสนอเพิ่ม):
After user selects, ask:
มุมที่เลือก: [selected angle]
ต้องการเพิ่มประเด็นไหนอีกไหม?
- ประเด็นที่อยากเน้นเป็นพิเศษ?
- ข้อมูลที่อยากให้มีในบทความ?
- คำถามที่อยากให้บทความตอบ?
Step 5: Deep research on selected angle
Based on the selected angle, do targeted research:
- Search for more specific information on the angle
- Find supporting data for each key point
- Look for counter-arguments to address
- Find visual素材 opportunities (charts, diagrams, screenshots)
Step 6: Iterate until complete
Loop Steps 4-5 until:
- User says "พอแล้ว" / "complete" / "ready"
- No more angles to explore
- Sufficient data collected
Present final summary:
📋 Final Research Summary:
หัวข้อ: [topic]
มุม: [angle]
กลุ่มเป้าหมาย: [audience]
โทน: [tone]
ประเด็นที่จะเขียน:
1. [Point 1] — supported by [data]
2. [Point 2] — supported by [data]
3. [Point 3] — supported by [data]
ข้อมูลสนับสนุน:
- [stat/data 1] — source: [url]
- [stat/data 2] — source: [url]
Outline ที่แนะนำ:
H1: [Title]
H2: [Section 1]
H2: [Section 2]
H2: [Section 3]
H2: FAQ
สร้าง brief.md เลยไหม?
Step 7: Create brief.md
Create the article brief at:
~/vault/60_Articles/<client-id>/YYYY-MM-DD-<slug>/brief.md
---
type: brief
status: ready
created: YYYY-MM-DD
related_client: "<client-id>"
source_research: ""
source_path: ""
related_vault_notes:
- "[[Note 1]]"
- "[[Note 2]]"
---
# Article Brief: [Topic]
## Source
- Research: Internet + Vault synthesis
- Related notes: [[Note 1]], [[Note 2]]
## Target
- Audience: [who]
- Tone: [formal/casual/technical]
- Length: [target word count]
- SEO Keyword: [primary keyword]
## Key Angles
1. [Angle 1]
2. [Angle 2]
3. [Angle 3]
## Outline
### H1: [Proposed title]
### H2: [Section 1]
- [Key point] — supported by: [data source]
### H2: [Section 2]
- [Key point] — supported by: [data source]
### H2: [Section 3]
- [Key point] — supported by: [data source]
### H2: FAQ
- [Question 1]
- [Question 2]
## Research Data
### Statistics
- [stat 1] — source: [url]
- [stat 2] — source: [url]
### Expert Quotes
- "[quote]" — [who], [source]
### Examples/Case Studies
- [example 1]
### SERP Gaps
- [what competitors miss that we can cover]
## Related Content
- [[Related Note 1]]
- [[Related Note 2]]
## Content Requirements
- Featured image: [description]
- Inline images: [list with descriptions]
- FAQ section: yes
- Schema markup: Article/BlogPosting + FAQPage
Step 8: Confirm
✅ Brief created: ~/vault/60_Articles/YYYY-MM-DD-slug/brief.md
✅ Ready for content writing
ถัดไป: โหลด content-writer-mm skill เพื่อเริ่มเขียนบทความ
Output
~/vault/60_Articles/<client-id>/<date>-<slug>/brief.md— Article brief ready for mm-content-writer
Notes
- This skill does NOT create the article — it only prepares the brief
- The brief is the contract between Data Stage and Content Stage
- Internet research is mandatory — don't rely only on vault content
- Always check
60_Articles/<client-id>/for existing articles to avoid duplication - Save research notes to
30_Research/<client-id>/if the research is substantial enough (use orbites-parse-knowledge skill for that)