Files
Kunthawat Greethong 7b5af16f6d 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
2026-07-02 10:01:53 +07:00

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:

  1. Search 30_Research// for client's research notes
  2. Search 30_Research/general/ for general research notes
  3. Search 30_Research/ for any other relevant research
  4. 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:

  1. Web search the topic in Thai and English
  2. Find statistics — recent data, studies, surveys
  3. Find examples — case studies, real-world applications
  4. Find expert opinions — quotes, interviews, articles
  5. SERP analysis — what currently ranks for this topic
  6. 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:

  1. Search for more specific information on the angle
  2. Find supporting data for each key point
  3. Look for counter-arguments to address
  4. 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)