Compare commits
44 Commits
refactor/l
...
f827afb33f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f827afb33f | ||
|
|
e279119f97 | ||
|
|
ceffb2a3f3 | ||
|
|
73d820412a | ||
|
|
40382bbf55 | ||
|
|
8b04c739e1 | ||
|
|
caab40d9a4 | ||
|
|
96caca4af6 | ||
|
|
5393cf611c | ||
|
|
b8ac07996e | ||
|
|
caa412dbe2 | ||
|
|
8c2bf3d303 | ||
|
|
154e3f2d91 | ||
|
|
b586464b5c | ||
|
|
1f859921cb | ||
|
|
582998a340 | ||
|
|
9eea9cbe6d | ||
|
|
ed03060ff7 | ||
|
|
45f548421d | ||
|
|
b54657f58a | ||
|
|
c334b8b650 | ||
|
|
dcd1d73f56 | ||
|
|
84e245a7bb | ||
|
|
5f05489316 | ||
|
|
d3421f4003 | ||
|
|
58c27d3bb3 | ||
|
|
f86c9b24c4 | ||
|
|
5ab00efd15 | ||
|
|
a7a0135727 | ||
|
|
9fca75044d | ||
|
|
57eaa9da8b | ||
|
|
746d51569b | ||
|
|
a1b1b16288 | ||
|
|
0ff6ae9020 | ||
|
|
f47949c4b3 | ||
|
|
c92d446ff7 | ||
|
|
bd1c979f1a | ||
|
|
9e7d27c03c | ||
|
|
b49931a87a | ||
|
|
525dc358a3 | ||
|
|
43f609a794 | ||
|
|
b5be45bcd6 | ||
|
|
789473271e | ||
|
|
ca7f99ed41 |
4
.gitignore
vendored
@@ -22,3 +22,7 @@ pnpm-debug.log*
|
||||
|
||||
# jetbrains setting folder
|
||||
.idea/
|
||||
.hermes/
|
||||
|
||||
# archive (large local files)
|
||||
_archive/
|
||||
|
||||
21
PLAN-REVIEW-LOG.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Plan Review Log: MoreminiMore Homepage Rebuild
|
||||
|
||||
Act 1 grill complete — plan locked with user.
|
||||
|
||||
MAX_ROUNDS=5
|
||||
|
||||
## Act 1 Summary
|
||||
|
||||
- User clarified credibility priority: SME understanding > measurable business value > modern UX/coding impression.
|
||||
- User clarified homepage must be company-site quality, not a one-page landing page.
|
||||
- User clarified visual direction: subtle macOS-inspired liquid glass, hybrid light/dark rhythm, abstract business-map parallax, restrained motion.
|
||||
- User clarified implementation preference: Astro static + vanilla JS first, Google Apps Script for low-volume lead handling.
|
||||
- User clarified CTA wording: use "ปรึกษาฟรี" only, not "ปรึกษาฟรี 30 นาที".
|
||||
- User clarified Dealplustech must be included in portfolio using a homepage screenshot.
|
||||
- User requested a copy-ready Google Apps Script file plus detailed setup instructions.
|
||||
|
||||
## Act 2 Status
|
||||
|
||||
Not started.
|
||||
|
||||
No implementation has been done from this plan yet.
|
||||
351
PLAN.md
Normal file
@@ -0,0 +1,351 @@
|
||||
# Plan: MoreminiMore Homepage Rebuild
|
||||
|
||||
_Locked via grill — by Codex + Kunthawat_
|
||||
|
||||
## Goal
|
||||
|
||||
Rebuild the MoreminiMore company website from a clean slate, starting with the homepage only. The homepage must make SME owners feel that MoreminiMore is a friendly growth partner who understands real business problems, uses real data before recommending work, and can deliver modern, trustworthy websites and systems. The visual experience should feel modern and a little wow through restrained liquid-glass UI, layered parallax, and polished UX, but never become an effect demo or a tech showcase.
|
||||
|
||||
## Core Positioning
|
||||
|
||||
Priority of trust:
|
||||
|
||||
1. MoreminiMore understands SME businesses and their real problems.
|
||||
2. MoreminiMore can help clients choose work that is more efficient, worthwhile, and suitable for their business.
|
||||
3. MoreminiMore writes modern code in the UX sense: smooth, beautiful, easy to use, and subtly impressive.
|
||||
|
||||
Target customer priority:
|
||||
|
||||
1. Businesses that already have a website, ads, or tools, but feel the result is not worth the money or effort.
|
||||
2. Businesses that do not yet have a good website or system and want to start correctly.
|
||||
3. Businesses growing into AI/automation/workflow needs.
|
||||
|
||||
Brand role:
|
||||
|
||||
1. Growth partner for SMEs.
|
||||
2. Business diagnosis partner.
|
||||
3. Team that can implement real working solutions.
|
||||
|
||||
Tone:
|
||||
|
||||
- Friendly-first.
|
||||
- Thai-first copy.
|
||||
- English only for service names and necessary terms.
|
||||
- No consultant-speak, no overly technical language, no fake metrics.
|
||||
|
||||
## Homepage Strategy
|
||||
|
||||
Hero strategy:
|
||||
|
||||
- Belief-led headline.
|
||||
- Pain-led subheadline.
|
||||
- Promise-led CTA/context.
|
||||
|
||||
Current hero copy direction:
|
||||
|
||||
> ธุรกิจไม่ควรเสียเงินกับสิ่งที่ยังไม่รู้ว่าคุ้มไหม
|
||||
>
|
||||
> เราช่วย SME ดูข้อมูลจริงก่อนตัดสินใจทำเว็บ การตลาด AI หรือระบบอัตโนมัติ เพื่อเลือกสิ่งที่ควรทำ อย่างมีประสิทธิภาพ และเหมาะสมกับลูกค้า
|
||||
|
||||
The final copy can be polished, especially the phrase "เหมาะสมกับลูกค้า", but the idea should stay intact.
|
||||
|
||||
Primary conversion priority:
|
||||
|
||||
1. ส่งโจทย์ธุรกิจให้เราดูก่อน
|
||||
2. ดูเคส/ผลงานก่อน แล้วค่อยติดต่อ
|
||||
3. ปรึกษาฟรี
|
||||
|
||||
Do not use "30 นาที" in CTA copy. Use "ปรึกษาฟรี" only.
|
||||
|
||||
Homepage v1 must not include a blog section. Blog content can stay preserved for later, but the homepage should focus on trust, diagnosis, proof, service clarity, portfolio quality, and conversion.
|
||||
|
||||
## Homepage Sections
|
||||
|
||||
Recommended homepage order:
|
||||
|
||||
1. Hero
|
||||
- Belief-led headline.
|
||||
- Friendly explanation.
|
||||
- CTA to open problem form.
|
||||
- Light abstract business-map background with subtle liquid glass.
|
||||
|
||||
2. Problem framing
|
||||
- Explain that customers do not need to know which service they need.
|
||||
- MoreminiMore will map the problem to the suitable service.
|
||||
- CTA opens the same slide-over form.
|
||||
|
||||
3. Dataroot diagnosis story
|
||||
- Dark diagnosis stage.
|
||||
- Split case layout.
|
||||
- Left side: narrative diagnosis.
|
||||
- Right side: metric cards and relevant visual/screenshot.
|
||||
- Use only real Dataroot metrics:
|
||||
- +373% impression
|
||||
- +114.2% click
|
||||
- -28.3% ad spend
|
||||
|
||||
4. Outcome-first service cards
|
||||
- Service name is still visible in English.
|
||||
- Card headline should sell the outcome/problem solved, not the service label first.
|
||||
- Desktop hover reveals "เหมาะกับปัญหาแบบไหน".
|
||||
- Mobile shows essential information directly.
|
||||
|
||||
5. Portfolio preview
|
||||
- Dark gallery stage.
|
||||
- Featured + grid layout.
|
||||
- Featured 1 should be Jet Industries for credibility.
|
||||
- Featured 2 should be selected from the most visually strong portfolio screenshot after inspecting assets.
|
||||
- Dataroot does not need to be the main portfolio feature because it has the diagnosis story.
|
||||
- Portfolio role is mainly visual website quality, because most clients are website clients.
|
||||
|
||||
6. Mini process
|
||||
- Short 4-step process:
|
||||
1. เข้าใจธุรกิจ
|
||||
2. ดูข้อมูล
|
||||
3. เลือกทางที่คุ้ม
|
||||
4. ลงมือและวัดผล
|
||||
|
||||
7. Final CTA
|
||||
- Friendly, low-friction.
|
||||
- Reopen form panel.
|
||||
- Reinforce "ส่งโจทย์ให้เราดูก่อน".
|
||||
|
||||
## Problem Form
|
||||
|
||||
The primary CTA opens a form, not a separate contact page.
|
||||
|
||||
Placement and behavior:
|
||||
|
||||
- Desktop: glass slide-over panel from the right.
|
||||
- Mobile: bottom sheet.
|
||||
- Floating/sticky CTA appears after the hero, not immediately on first paint.
|
||||
- Navigation also has a CTA.
|
||||
|
||||
Problem chips:
|
||||
|
||||
1. เว็บมีอยู่แล้ว แต่ไม่ค่อยมีลูกค้าทัก
|
||||
2. ยิงแอดอยู่ แต่ยอดขายไม่คุ้ม
|
||||
3. มีคนทักมา แต่ไม่ใช่ลูกค้าที่ใช่
|
||||
4. ทีมงานทำงานเดิม ๆ แต่ทำงานช้า หรือผิดพลาดบ่อย
|
||||
5. อยากใช้ AI แต่ไม่รู้เริ่มตรงไหน
|
||||
6. ยังไม่แน่ใจว่าควรแก้อะไรก่อน
|
||||
|
||||
Textarea:
|
||||
|
||||
- Must include a very short example because customers are assumed to be lazy and may not want to type.
|
||||
- Example direction:
|
||||
- "ยิงแอดอยู่ แต่ยอดขายไม่คุ้ม อยากรู้ว่าควรแก้อะไรก่อน"
|
||||
- "มีเว็บแล้ว แต่ลูกค้าไม่ค่อยทัก อยากรู้ว่าควรแก้เว็บหรือยิงแอดก่อน"
|
||||
|
||||
Contact fields:
|
||||
|
||||
- Name.
|
||||
- Phone.
|
||||
- Email.
|
||||
- Phone or email must be provided, but both are not required.
|
||||
- Labels must be explicit because non-technical customers may be confused by a single generic "contact channel" field.
|
||||
|
||||
Submission backend:
|
||||
|
||||
- Use Google Apps Script first because lead volume is expected to be low.
|
||||
- Send notification email to Gmail/Google Workspace.
|
||||
- Ideally also store leads in Google Sheet.
|
||||
- Sender should be MoreminiMore-owned; customer contact should be used as reply-to where possible.
|
||||
- Keep message clean to reduce spam risk.
|
||||
- Provide the Google Apps Script as a copy-ready file because the user has not done this setup before.
|
||||
- Current script artifact: `google-apps-script/lead-form.gs`.
|
||||
- Current setup guide: `google-apps-script/SETUP.md`.
|
||||
|
||||
Post-submit UX:
|
||||
|
||||
- Stay in the panel.
|
||||
- Show success message plus light diagnosis preview.
|
||||
- Do not pretend to generate a complete diagnosis.
|
||||
- Example direction: "จากปัญหาที่เลือก เราน่าจะเริ่มจากการดูเว็บ/แอด/ขั้นตอนทำงานก่อน แล้วจะติดต่อกลับทางเบอร์หรืออีเมลที่ให้ไว้"
|
||||
|
||||
## Navigation
|
||||
|
||||
This is a company website, not a one-page landing page.
|
||||
|
||||
Navigation should include:
|
||||
|
||||
- หน้าแรก
|
||||
- บริการ
|
||||
- ผลงาน
|
||||
- เกี่ยวกับ
|
||||
- FAQ and/or บทความ
|
||||
- ติดต่อ / ส่งโจทย์ให้เราดู
|
||||
|
||||
Services submenu:
|
||||
|
||||
- Compact mega menu.
|
||||
- Use English service names:
|
||||
- Website Development
|
||||
- Marketing Consult
|
||||
- Automation Workflow
|
||||
- AI Consult
|
||||
- Include a short Thai explanation under each service name.
|
||||
- Desktop supports hover, click, and keyboard.
|
||||
- Mobile uses an accordion/list.
|
||||
|
||||
Nav visual behavior:
|
||||
|
||||
- Hybrid glass sticky nav.
|
||||
- On hero: transparent/light glass.
|
||||
- After scroll: compact stronger glass/solid for readability.
|
||||
|
||||
## Visual System
|
||||
|
||||
Overall mode:
|
||||
|
||||
- Hybrid light/dark.
|
||||
- Light glass for friendly SME trust.
|
||||
- Dark/premium stages for Dataroot diagnosis and portfolio.
|
||||
|
||||
Section atmosphere:
|
||||
|
||||
- Light hero.
|
||||
- Dark Dataroot diagnosis.
|
||||
- Light service/process/form context.
|
||||
- Dark portfolio gallery.
|
||||
|
||||
Brand assets:
|
||||
|
||||
- Use existing logo.
|
||||
- Use `#fed400` as accent only, not as a full-page wash.
|
||||
- Use red `#d4553a` sparingly if useful.
|
||||
- Avoid recreating the old yellow-heavy design.
|
||||
|
||||
Liquid glass:
|
||||
|
||||
- Subtle macOS-inspired.
|
||||
- Use in key moments only:
|
||||
- Navigation.
|
||||
- CTA/form slide-over.
|
||||
- Hero card/form/selected elements.
|
||||
- Dataroot diagnosis cards.
|
||||
- Possibly light service cards, but not every surface.
|
||||
- Must preserve readability before effect.
|
||||
|
||||
Background and parallax:
|
||||
|
||||
- Main background concept: abstract business map.
|
||||
- Use lines, nodes, soft grids, flow paths, and layered decision-map visuals.
|
||||
- Hero should not rely on stock imagery.
|
||||
- Portfolio sections can use real portfolio screenshots as the main visual material.
|
||||
|
||||
Motion:
|
||||
|
||||
- Desktop:
|
||||
- Hero mouse parallax should be noticeable enough to feel dimensional.
|
||||
- Scroll-driven scene changes are allowed.
|
||||
- Use exactly 3 main background scenes:
|
||||
1. Hero / light business map.
|
||||
2. Dataroot / dark diagnosis stage.
|
||||
3. Portfolio / dark gallery stage.
|
||||
- Mobile:
|
||||
- No mouse interaction.
|
||||
- Use scroll parallax/reveal only.
|
||||
- Keep performance conservative.
|
||||
|
||||
## Portfolio Rules
|
||||
|
||||
Portfolio role:
|
||||
|
||||
- Show website visual quality and execution.
|
||||
- Most clients are website clients, not consulting clients.
|
||||
- Consulting-heavy proof is mainly Dataroot.
|
||||
- Dealplustech must be included in the website portfolio.
|
||||
- URL: `https://www.dealplustech.co.th`
|
||||
- Capture a homepage screenshot and use it as a portfolio image, matching the treatment of other portfolio clients.
|
||||
- Dealplustech is both website work and consulting-adjacent, but should still appear as a website portfolio item.
|
||||
|
||||
Client context:
|
||||
|
||||
- Largest client: Jet Industries.
|
||||
- Second largest: Dataroot.
|
||||
- Most other clients are smaller.
|
||||
|
||||
Sorting priority:
|
||||
|
||||
1. Visual quality / modern feel.
|
||||
2. Professional credibility.
|
||||
3. SME relatability.
|
||||
|
||||
Featured portfolio:
|
||||
|
||||
- Featured 1: Jet Industries.
|
||||
- Featured 2: choose visually strongest work after inspecting assets.
|
||||
- Other projects in grid.
|
||||
|
||||
## Technical Approach
|
||||
|
||||
Stack:
|
||||
|
||||
- Astro static, rebuilt from scratch.
|
||||
- Vanilla JS first.
|
||||
- CSS first for liquid glass and layout.
|
||||
- Use small vanilla scripts for:
|
||||
- Mouse parallax.
|
||||
- Scroll scene transitions.
|
||||
- Slide-over/bottom sheet form.
|
||||
- Form validation and submission.
|
||||
- Do not use React by default.
|
||||
- Add React only if a specific interaction becomes too complex for readable vanilla JS.
|
||||
|
||||
Implementation scope:
|
||||
|
||||
- Homepage-first.
|
||||
- Do not build full route details in v1.
|
||||
- Navigation may reference future routes, but implementation focus is homepage.
|
||||
- Preserve extracted inputs in `redesign-input/`.
|
||||
- Old code remains archived in `_archive/pre-redesign-2026-06-21/`.
|
||||
|
||||
Suggested initial implementation files after plan approval:
|
||||
|
||||
1. Recreate minimal Astro project files at root:
|
||||
- `package.json`
|
||||
- `astro.config.mjs`
|
||||
- `tsconfig.json`
|
||||
- `src/pages/index.astro`
|
||||
- `src/styles/global.css`
|
||||
- `src/scripts/home.js`
|
||||
2. Copy required assets from `redesign-input/assets/` into `public/`.
|
||||
3. Build homepage components either inline first or split only when repeated:
|
||||
- Navigation
|
||||
- Hero
|
||||
- Problem CTA panel
|
||||
- Dataroot case
|
||||
- Service cards
|
||||
- Portfolio preview
|
||||
- Process
|
||||
- Footer
|
||||
4. Add Google Apps Script endpoint configuration as an environment/runtime variable if possible.
|
||||
|
||||
## Key Decisions & Tradeoffs
|
||||
|
||||
- Problem-first homepage, but service cards still exist because this is a company website.
|
||||
- Friendly-first copy, but visual system must remain premium enough for Jet/Dataroot credibility.
|
||||
- Use English service names in nav for professionalism, but Thai copy everywhere else for clarity.
|
||||
- Use Google Apps Script before heavier transactional email infrastructure because lead volume is expected to be low.
|
||||
- Use Astro static + vanilla JS to keep the site light and maintainable.
|
||||
- Use effects only in high-impact places to avoid repeating the previous failure mode of design overwhelming the business message.
|
||||
|
||||
## Risks / Open Questions
|
||||
|
||||
- The exact visual quality of portfolio assets must be inspected before choosing Featured 2.
|
||||
- Dealplustech needs a homepage screenshot before implementation can finalize portfolio assets.
|
||||
- Google Apps Script deliverability depends on the Google account/domain setup. SPF/DKIM/DMARC should be checked before production.
|
||||
- Navigation points to company-site routes, but homepage is the first implementation scope. Decide whether future routes should be placeholders, omitted, or added later.
|
||||
- Need final decision on exact final hero copy during implementation polish.
|
||||
|
||||
## Out Of Scope For Homepage V1
|
||||
|
||||
- Full services pages.
|
||||
- Full portfolio detail pages.
|
||||
- Blog section on homepage.
|
||||
- Full blog redesign.
|
||||
- Heavy WebGL/canvas animation.
|
||||
- Full React app or SPA rewrite.
|
||||
- Invented metrics or testimonials.
|
||||
- Reusing old design or old code structure as the main foundation.
|
||||
43
README.md
@@ -1,43 +0,0 @@
|
||||
# Astro Starter Kit: Minimal
|
||||
|
||||
```sh
|
||||
npm create astro@latest -- --template minimal
|
||||
```
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||
## 🚀 Project Structure
|
||||
|
||||
Inside of your Astro project, you'll see the following folders and files:
|
||||
|
||||
```text
|
||||
/
|
||||
├── public/
|
||||
├── src/
|
||||
│ └── pages/
|
||||
│ └── index.astro
|
||||
└── package.json
|
||||
```
|
||||
|
||||
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||
|
||||
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
|
||||
|
||||
Any static assets, like images, can be placed in the `public/` directory.
|
||||
|
||||
## 🧞 Commands
|
||||
|
||||
All commands are run from the root of the project, from a terminal:
|
||||
|
||||
| Command | Action |
|
||||
| :------------------------ | :----------------------------------------------- |
|
||||
| `npm install` | Installs dependencies |
|
||||
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||
| `npm run build` | Build your production site to `./dist/` |
|
||||
| `npm run preview` | Preview your build locally, before deploying |
|
||||
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||
|
||||
## 👀 Want to learn more?
|
||||
|
||||
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
||||
@@ -1,15 +1,8 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from 'astro/config';
|
||||
import react from "@astrojs/react";
|
||||
import mdx from "@astrojs/mdx";
|
||||
|
||||
// All content is markdown → static output. No server runtime needed.
|
||||
export default defineConfig({
|
||||
output: "static",
|
||||
integrations: [
|
||||
react(),
|
||||
mdx(),
|
||||
],
|
||||
image: { layout: "constrained", responsiveStyles: true },
|
||||
devToolbar: { enabled: true },
|
||||
output: 'static',
|
||||
image: { layout: 'constrained', responsiveStyles: true },
|
||||
devToolbar: { enabled: false },
|
||||
});
|
||||
|
||||
153
google-apps-script/SETUP.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Google Apps Script Lead Form Setup
|
||||
|
||||
ใช้ไฟล์นี้เพื่อตั้งระบบรับ lead จากฟอร์ม MoreminiMore แบบง่ายก่อน โดยให้ Google Apps Script บันทึกข้อมูลลง Google Sheet และส่งอีเมลแจ้งเตือนเข้า Gmail/Google Workspace
|
||||
|
||||
อ้างอิง official docs:
|
||||
|
||||
- Apps Script Web App deployment: https://developers.google.com/apps-script/guides/web
|
||||
- Apps Script MailApp: https://developers.google.com/apps-script/reference/mail/mail-app
|
||||
|
||||
## สิ่งที่ต้องมี
|
||||
|
||||
- Google account หรือ Google Workspace account ที่จะใช้รับ lead
|
||||
- แนะนำให้ใช้บัญชีของโดเมนบริษัท เช่น `contact@moreminimore.com`
|
||||
- Google Sheet ใหม่ 1 ไฟล์ สำหรับเก็บ lead
|
||||
|
||||
## ขั้นตอนติดตั้ง
|
||||
|
||||
### 1. สร้าง Google Sheet
|
||||
|
||||
1. เข้า Google Drive
|
||||
2. สร้าง Google Sheet ใหม่
|
||||
3. ตั้งชื่อเช่น `MoreminiMore Website Leads`
|
||||
4. ไม่ต้องสร้าง column เอง script จะสร้าง header ให้ตอนมี lead แรก
|
||||
|
||||
### 2. เปิด Apps Script จาก Sheet
|
||||
|
||||
1. ใน Google Sheet ไปที่ `Extensions`
|
||||
2. เลือก `Apps Script`
|
||||
3. จะเปิดหน้า Apps Script editor
|
||||
4. ลบโค้ดเดิมใน `Code.gs`
|
||||
5. Copy โค้ดทั้งหมดจาก `google-apps-script/lead-form.gs`
|
||||
6. Paste ลงใน `Code.gs`
|
||||
|
||||
### 3. แก้อีเมลผู้รับ
|
||||
|
||||
ในไฟล์ `Code.gs` หา:
|
||||
|
||||
```js
|
||||
const CONFIG = {
|
||||
RECIPIENT_EMAIL: 'contact@moreminimore.com',
|
||||
```
|
||||
|
||||
เปลี่ยน `RECIPIENT_EMAIL` เป็นอีเมลที่จะรับแจ้งเตือน lead
|
||||
|
||||
ถ้าใช้ `contact@moreminimore.com` อยู่แล้ว ไม่ต้องแก้
|
||||
|
||||
### 4. Save project
|
||||
|
||||
1. กด Save
|
||||
2. ตั้งชื่อ project เช่น `MoreminiMore Lead Form`
|
||||
|
||||
### 5. Deploy เป็น Web App
|
||||
|
||||
ตาม official docs ของ Google ให้ deploy web app โดย:
|
||||
|
||||
1. มุมขวาบน กด `Deploy`
|
||||
2. เลือก `New deployment`
|
||||
3. ตรง `Select type` กด icon ตั้งค่า แล้วเลือก `Web app`
|
||||
4. ตั้งค่า:
|
||||
- Description: `MoreminiMore lead form endpoint`
|
||||
- Execute as: `Me`
|
||||
- Who has access: `Anyone`
|
||||
5. กด `Deploy`
|
||||
6. Google จะขอ authorize permissions
|
||||
7. เลือก account ของคุณ
|
||||
8. อนุญาตสิทธิ์ที่เกี่ยวกับ Google Sheets และส่งอีเมล
|
||||
9. Copy `Web app URL` เก็บไว้
|
||||
|
||||
URL จะหน้าตาประมาณ:
|
||||
|
||||
```text
|
||||
https://script.google.com/macros/s/xxxxxxxxxxxxxxxx/exec
|
||||
```
|
||||
|
||||
### 6. ทดสอบ endpoint
|
||||
|
||||
เปิด URL ที่ copy มาใน browser ถ้าระบบทำงาน จะเห็น JSON ประมาณ:
|
||||
|
||||
```json
|
||||
{"ok":true,"service":"MoreminiMore lead form"}
|
||||
```
|
||||
|
||||
### 7. เอา URL ไปใส่ในเว็บ
|
||||
|
||||
ตอน implement หน้าเว็บ ให้ตั้งค่า URL นี้เป็น endpoint ของฟอร์ม
|
||||
|
||||
ข้อควรระวัง: Apps Script web app มักไม่เหมาะกับ fetch ที่ต้องอ่าน JSON response ข้ามโดเมนแบบเต็ม ๆ เพราะอาจติด CORS ได้ วิธีที่เหมาะกับ static site คือส่งข้อมูลแบบ simple POST หรือ `fetch(..., { mode: "no-cors" })` แล้วให้หน้าเว็บแสดง success state หลัง request ถูกส่งออกไป
|
||||
|
||||
ตัวอย่าง payload ที่เว็บควรส่ง:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "คุณเอ",
|
||||
"phone": "0800000000",
|
||||
"email": "owner@example.com",
|
||||
"problems": ["ads_not_worth_it", "wrong_leads"],
|
||||
"message": "ยิงแอดอยู่ แต่ยอดขายไม่คุ้ม อยากรู้ว่าควรแก้อะไรก่อน",
|
||||
"pageUrl": "https://moreminimore.com/",
|
||||
"userAgent": "browser user agent"
|
||||
}
|
||||
```
|
||||
|
||||
## Problem Keys ที่ script รองรับ
|
||||
|
||||
| Key | ข้อความ |
|
||||
| --- | --- |
|
||||
| `website_no_leads` | เว็บมีอยู่แล้ว แต่ไม่ค่อยมีลูกค้าทัก |
|
||||
| `ads_not_worth_it` | ยิงแอดอยู่ แต่ยอดขายไม่คุ้ม |
|
||||
| `wrong_leads` | มีคนทักมา แต่ไม่ใช่ลูกค้าที่ใช่ |
|
||||
| `slow_or_error_work` | ทีมงานทำงานเดิม ๆ แต่ทำงานช้า หรือผิดพลาดบ่อย |
|
||||
| `ai_not_sure` | อยากใช้ AI แต่ไม่รู้เริ่มตรงไหน |
|
||||
| `not_sure` | ยังไม่แน่ใจว่าควรแก้อะไรก่อน |
|
||||
|
||||
## วิธีลดโอกาสเมลเข้าขยะ
|
||||
|
||||
Apps Script จะส่งเมลจากบัญชี Google ที่ deploy script ดังนั้นควร:
|
||||
|
||||
- ใช้บัญชี Google Workspace ของบริษัท ถ้ามี
|
||||
- ตั้งค่า SPF/DKIM/DMARC ของโดเมนให้ถูกต้อง
|
||||
- ใช้ subject ปกติ ไม่ spammy เช่น `มีโจทย์ธุรกิจใหม่จากเว็บไซต์ MoreminiMore`
|
||||
- อย่าใช้ email ลูกค้าเป็น `From`
|
||||
- ให้ script ใช้ email ลูกค้าเป็น `Reply-To` แทน
|
||||
- เนื้อหาอีเมลควรเป็นข้อความสะอาด ไม่ใส่คำขายหรือ link เยอะ
|
||||
|
||||
## เวลาแก้ script หลัง deploy
|
||||
|
||||
ถ้าแก้โค้ดหลังจาก deploy แล้ว:
|
||||
|
||||
1. กด `Deploy`
|
||||
2. เลือก `Manage deployments`
|
||||
3. เลือก deployment เดิม
|
||||
4. กด edit
|
||||
5. เลือก version ใหม่ หรือ new version
|
||||
6. กด deploy/update
|
||||
|
||||
ถ้าสร้าง deployment ใหม่ URL อาจเปลี่ยน ต้องเอา URL ใหม่ไปใส่ในเว็บอีกครั้ง
|
||||
|
||||
## Debug เบื้องต้น
|
||||
|
||||
ถ้า submit แล้วไม่เข้า Sheet:
|
||||
|
||||
1. เปิด Apps Script
|
||||
2. ดูเมนู `Executions`
|
||||
3. เปิด execution ล่าสุดเพื่อดู error
|
||||
4. ตรวจว่า deploy เป็น `Who has access: Anyone`
|
||||
5. ตรวจว่าใช้ URL ที่ลงท้าย `/exec` ไม่ใช่ `/dev`
|
||||
|
||||
ถ้าเข้า Sheet แต่ไม่ส่งเมล:
|
||||
|
||||
1. ตรวจสิทธิ์ MailApp ตอน authorize
|
||||
2. ตรวจ `RECIPIENT_EMAIL`
|
||||
3. ตรวจ quota ของ Google account
|
||||
4. ดู error ใน `Executions`
|
||||
290
google-apps-script/lead-form.gs
Normal file
@@ -0,0 +1,290 @@
|
||||
/**
|
||||
* MoreminiMore lead form endpoint.
|
||||
*
|
||||
* Recommended setup:
|
||||
* 1. Create a Google Sheet for leads.
|
||||
* 2. Open Extensions > Apps Script.
|
||||
* 3. Paste this entire file into Code.gs.
|
||||
* 4. Update CONFIG.RECIPIENT_EMAIL.
|
||||
* 5. Deploy as Web app.
|
||||
*/
|
||||
|
||||
const CONFIG = {
|
||||
RECIPIENT_EMAIL: 'contact@moreminimore.com',
|
||||
SHEET_NAME: 'Leads',
|
||||
TIMEZONE: 'Asia/Bangkok',
|
||||
EMAIL_SUBJECT: 'มีโจทย์ธุรกิจใหม่จากเว็บไซต์ MoreminiMore',
|
||||
};
|
||||
|
||||
const PROBLEM_LABELS = {
|
||||
website_no_leads: 'เว็บมีอยู่แล้ว แต่ไม่ค่อยมีลูกค้าทัก',
|
||||
ads_not_worth_it: 'ยิงแอดอยู่ แต่ยอดขายไม่คุ้ม',
|
||||
wrong_leads: 'มีคนทักมา แต่ไม่ใช่ลูกค้าที่ใช่',
|
||||
slow_or_error_work: 'ทีมงานทำงานเดิม ๆ แต่ทำงานช้า หรือผิดพลาดบ่อย',
|
||||
ai_not_sure: 'อยากใช้ AI แต่ไม่รู้เริ่มตรงไหน',
|
||||
not_sure: 'ยังไม่แน่ใจว่าควรแก้อะไรก่อน',
|
||||
};
|
||||
|
||||
function doGet() {
|
||||
return jsonResponse({
|
||||
ok: true,
|
||||
service: 'MoreminiMore lead form',
|
||||
});
|
||||
}
|
||||
|
||||
function doPost(e) {
|
||||
try {
|
||||
const data = parseRequest(e);
|
||||
|
||||
if (isSpam(data)) {
|
||||
return jsonResponse({ ok: true, skipped: true });
|
||||
}
|
||||
|
||||
const lead = normalizeLead(data);
|
||||
const validation = validateLead(lead);
|
||||
|
||||
if (!validation.ok) {
|
||||
return jsonResponse({
|
||||
ok: false,
|
||||
error: validation.error,
|
||||
});
|
||||
}
|
||||
|
||||
const lock = LockService.getScriptLock();
|
||||
lock.waitLock(10000);
|
||||
|
||||
try {
|
||||
appendLead(lead);
|
||||
} finally {
|
||||
lock.releaseLock();
|
||||
}
|
||||
|
||||
sendLeadEmail(lead);
|
||||
|
||||
return jsonResponse({
|
||||
ok: true,
|
||||
message: 'Lead received',
|
||||
diagnosis: buildLightDiagnosis(lead.problems),
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return jsonResponse({
|
||||
ok: false,
|
||||
error: 'ระบบรับข้อมูลมีปัญหา กรุณาลองใหม่อีกครั้ง',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function parseRequest(e) {
|
||||
if (!e) return {};
|
||||
|
||||
const contentType = String(e.postData && e.postData.type || '').toLowerCase();
|
||||
const raw = e.postData && e.postData.contents;
|
||||
|
||||
if (raw && contentType.indexOf('application/json') !== -1) {
|
||||
return JSON.parse(raw);
|
||||
}
|
||||
|
||||
if (raw && contentType.indexOf('text/plain') !== -1) {
|
||||
try {
|
||||
return JSON.parse(raw);
|
||||
} catch (error) {
|
||||
return e.parameter || {};
|
||||
}
|
||||
}
|
||||
|
||||
return e.parameter || {};
|
||||
}
|
||||
|
||||
function normalizeLead(data) {
|
||||
const problems = normalizeProblems(data.problems || data.problem || data.problemKeys);
|
||||
|
||||
return {
|
||||
createdAt: Utilities.formatDate(new Date(), CONFIG.TIMEZONE, 'yyyy-MM-dd HH:mm:ss'),
|
||||
name: cleanText(data.name),
|
||||
phone: cleanText(data.phone),
|
||||
email: cleanText(data.email).toLowerCase(),
|
||||
message: cleanText(data.message || data.details || data.note),
|
||||
problems,
|
||||
pageUrl: cleanText(data.pageUrl || data.url),
|
||||
userAgent: cleanText(data.userAgent),
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeProblems(value) {
|
||||
if (!value) return [];
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(String).map(cleanText).filter(Boolean);
|
||||
}
|
||||
|
||||
return String(value)
|
||||
.split(',')
|
||||
.map(cleanText)
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
function validateLead(lead) {
|
||||
if (!lead.name) {
|
||||
return { ok: false, error: 'กรุณาใส่ชื่อ' };
|
||||
}
|
||||
|
||||
if (!lead.phone && !lead.email) {
|
||||
return { ok: false, error: 'ใส่เบอร์โทรหรืออีเมลอย่างใดอย่างหนึ่งก็ได้' };
|
||||
}
|
||||
|
||||
if (lead.email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(lead.email)) {
|
||||
return { ok: false, error: 'รูปแบบอีเมลไม่ถูกต้อง' };
|
||||
}
|
||||
|
||||
if (lead.message.length > 2000) {
|
||||
return { ok: false, error: 'รายละเอียดโจทย์ยาวเกินไป' };
|
||||
}
|
||||
|
||||
return { ok: true };
|
||||
}
|
||||
|
||||
function appendLead(lead) {
|
||||
const sheet = getLeadSheet();
|
||||
sheet.appendRow([
|
||||
lead.createdAt,
|
||||
lead.name,
|
||||
lead.phone,
|
||||
lead.email,
|
||||
problemLabels(lead.problems).join(', '),
|
||||
lead.message,
|
||||
buildLightDiagnosis(lead.problems),
|
||||
lead.pageUrl,
|
||||
lead.userAgent,
|
||||
]);
|
||||
}
|
||||
|
||||
function getLeadSheet() {
|
||||
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
||||
let sheet = spreadsheet.getSheetByName(CONFIG.SHEET_NAME);
|
||||
|
||||
if (!sheet) {
|
||||
sheet = spreadsheet.insertSheet(CONFIG.SHEET_NAME);
|
||||
}
|
||||
|
||||
if (sheet.getLastRow() === 0) {
|
||||
sheet.appendRow([
|
||||
'วันที่ส่ง',
|
||||
'ชื่อ',
|
||||
'เบอร์โทร',
|
||||
'อีเมล',
|
||||
'ปัญหาที่เลือก',
|
||||
'รายละเอียด',
|
||||
'แนวทางเริ่มต้น',
|
||||
'Page URL',
|
||||
'User Agent',
|
||||
]);
|
||||
sheet.setFrozenRows(1);
|
||||
}
|
||||
|
||||
return sheet;
|
||||
}
|
||||
|
||||
function sendLeadEmail(lead) {
|
||||
const labels = problemLabels(lead.problems);
|
||||
const diagnosis = buildLightDiagnosis(lead.problems);
|
||||
|
||||
const plainBody = [
|
||||
'มีโจทย์ธุรกิจใหม่จากเว็บไซต์ MoreminiMore',
|
||||
'',
|
||||
`ชื่อ: ${lead.name}`,
|
||||
`เบอร์โทร: ${lead.phone || '-'}`,
|
||||
`อีเมล: ${lead.email || '-'}`,
|
||||
`ปัญหาที่เลือก: ${labels.length ? labels.join(', ') : '-'}`,
|
||||
'',
|
||||
'รายละเอียด:',
|
||||
lead.message || '-',
|
||||
'',
|
||||
`แนวทางเริ่มต้น: ${diagnosis}`,
|
||||
'',
|
||||
`Page URL: ${lead.pageUrl || '-'}`,
|
||||
`เวลาที่ส่ง: ${lead.createdAt}`,
|
||||
].join('\n');
|
||||
|
||||
const htmlBody = `
|
||||
<div style="font-family:Arial,sans-serif;line-height:1.6;color:#17120a">
|
||||
<h2 style="margin:0 0 12px">มีโจทย์ธุรกิจใหม่จากเว็บไซต์ MoreminiMore</h2>
|
||||
<p><strong>ชื่อ:</strong> ${escapeHtml(lead.name)}</p>
|
||||
<p><strong>เบอร์โทร:</strong> ${escapeHtml(lead.phone || '-')}</p>
|
||||
<p><strong>อีเมล:</strong> ${escapeHtml(lead.email || '-')}</p>
|
||||
<p><strong>ปัญหาที่เลือก:</strong> ${escapeHtml(labels.length ? labels.join(', ') : '-')}</p>
|
||||
<p><strong>รายละเอียด:</strong><br>${escapeHtml(lead.message || '-').replace(/\n/g, '<br>')}</p>
|
||||
<p><strong>แนวทางเริ่มต้น:</strong> ${escapeHtml(diagnosis)}</p>
|
||||
<hr>
|
||||
<p style="color:#666;font-size:13px">
|
||||
Page URL: ${escapeHtml(lead.pageUrl || '-')}<br>
|
||||
เวลาที่ส่ง: ${escapeHtml(lead.createdAt)}
|
||||
</p>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const options = {
|
||||
name: 'MoreminiMore Website',
|
||||
htmlBody,
|
||||
};
|
||||
|
||||
if (lead.email) {
|
||||
options.replyTo = lead.email;
|
||||
}
|
||||
|
||||
MailApp.sendEmail(CONFIG.RECIPIENT_EMAIL, CONFIG.EMAIL_SUBJECT, plainBody, options);
|
||||
}
|
||||
|
||||
function buildLightDiagnosis(problemKeys) {
|
||||
const keys = problemKeys || [];
|
||||
|
||||
if (keys.indexOf('ads_not_worth_it') !== -1 || keys.indexOf('wrong_leads') !== -1) {
|
||||
return 'น่าจะเริ่มจากการดูข้อมูลแอด กลุ่มเป้าหมาย และคุณภาพลูกค้าที่ทักเข้ามาก่อน';
|
||||
}
|
||||
|
||||
if (keys.indexOf('website_no_leads') !== -1) {
|
||||
return 'น่าจะเริ่มจากการดูเว็บ เส้นทางลูกค้า และจุดที่ควรชวนให้ติดต่อก่อน';
|
||||
}
|
||||
|
||||
if (keys.indexOf('slow_or_error_work') !== -1) {
|
||||
return 'น่าจะเริ่มจากการดูขั้นตอนทำงานซ้ำ จุดที่ช้า และจุดที่ผิดพลาดบ่อยก่อน';
|
||||
}
|
||||
|
||||
if (keys.indexOf('ai_not_sure') !== -1) {
|
||||
return 'น่าจะเริ่มจากการดูงานจริงของทีมก่อน แล้วค่อยเลือกจุดที่ AI ช่วยได้อย่างเหมาะสม';
|
||||
}
|
||||
|
||||
return 'เราจะเริ่มจากการทำความเข้าใจธุรกิจและข้อมูลที่มีอยู่ก่อน แล้วค่อยแนะนำทางที่คุ้มที่สุด';
|
||||
}
|
||||
|
||||
function problemLabels(problemKeys) {
|
||||
return (problemKeys || []).map(function (key) {
|
||||
return PROBLEM_LABELS[key] || key;
|
||||
});
|
||||
}
|
||||
|
||||
function isSpam(data) {
|
||||
return Boolean(data.website || data.company_url || data.url2);
|
||||
}
|
||||
|
||||
function cleanText(value) {
|
||||
return String(value || '')
|
||||
.replace(/\r/g, '')
|
||||
.trim()
|
||||
.slice(0, 2000);
|
||||
}
|
||||
|
||||
function escapeHtml(value) {
|
||||
return String(value || '')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
function jsonResponse(data) {
|
||||
return ContentService
|
||||
.createTextOutput(JSON.stringify(data))
|
||||
.setMimeType(ContentService.MimeType.JSON);
|
||||
}
|
||||
6209
package-lock.json
generated
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"name": "moreminimore-site",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=22.12.0"
|
||||
},
|
||||
@@ -12,10 +13,6 @@
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/mdx": "^5.0.6",
|
||||
"@astrojs/react": "^5.0.5",
|
||||
"astro": "^6.2.2",
|
||||
"react": "^19.2.5",
|
||||
"react-dom": "^19.2.5"
|
||||
"astro": "^6.2.2"
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 655 B |
@@ -1,9 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||
<style>
|
||||
path { fill: #000; }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
path { fill: #FFF; }
|
||||
}
|
||||
</style>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 749 B |
@@ -1 +0,0 @@
|
||||
<svg fill="#0866FF" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook</title><path d="M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z"/></svg>
|
||||
|
Before Width: | Height: | Size: 558 B |
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-6,-6)">
|
||||
<path d="M12.5,42L35.5,42C39.09,42 42,39.09 42,35.5L42,12.5C42,8.91 39.09,6 35.5,6L12.5,6C8.91,6 6,8.91 6,12.5L6,35.5C6,39.09 8.91,42 12.5,42Z" style="fill:rgb(0,195,0);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-6,-6)">
|
||||
<path d="M37.113,22.417C37.113,16.552 31.233,11.78 24.006,11.78C16.779,11.78 10.898,16.552 10.898,22.417C10.898,27.675 15.561,32.079 21.86,32.912C22.287,33.004 22.868,33.194 23.015,33.558C23.147,33.889 23.101,34.408 23.057,34.743C23.057,34.743 22.904,35.668 22.87,35.865C22.813,36.196 22.607,37.161 24.005,36.572C25.404,35.983 31.553,32.127 34.303,28.961L34.302,28.961C36.203,26.879 37.113,24.764 37.113,22.417ZM18.875,25.907L16.271,25.907C15.892,25.907 15.584,25.599 15.584,25.219L15.584,20.01C15.584,19.631 15.892,19.323 16.271,19.323C16.65,19.323 16.958,19.631 16.958,20.01L16.958,24.531L18.875,24.531C19.254,24.531 19.562,24.839 19.562,25.218C19.562,25.598 19.254,25.907 18.875,25.907ZM21.568,25.219C21.568,25.598 21.26,25.907 20.881,25.907C20.502,25.907 20.194,25.599 20.194,25.219L20.194,20.01C20.194,19.631 20.502,19.323 20.881,19.323C21.26,19.323 21.568,19.631 21.568,20.01L21.568,25.219ZM27.838,25.219C27.838,25.516 27.65,25.778 27.368,25.871C27.297,25.895 27.223,25.907 27.15,25.907C26.935,25.907 26.73,25.804 26.601,25.632L23.932,21.997L23.932,25.219C23.932,25.598 23.624,25.907 23.244,25.907C22.865,25.907 22.556,25.599 22.556,25.219L22.556,20.01C22.556,19.714 22.745,19.452 23.026,19.358C23.097,19.334 23.17,19.323 23.244,19.323C23.458,19.323 23.664,19.426 23.793,19.598L26.463,23.233L26.463,20.01C26.463,19.631 26.772,19.323 27.151,19.323C27.53,19.323 27.838,19.631 27.838,20.01L27.838,25.219ZM32.052,21.927C32.431,21.927 32.74,22.235 32.74,22.615C32.74,22.994 32.432,23.302 32.052,23.302L30.135,23.302L30.135,24.532L32.052,24.532C32.431,24.532 32.74,24.84 32.74,25.219C32.74,25.598 32.431,25.907 32.052,25.907L29.448,25.907C29.07,25.907 28.761,25.599 28.761,25.219L28.761,20.011C28.761,19.632 29.069,19.324 29.448,19.324L32.052,19.324C32.431,19.324 32.74,19.632 32.74,20.011C32.74,20.39 32.432,20.698 32.052,20.698L30.135,20.698L30.135,21.928L32.052,21.928L32.052,21.927Z" style="fill:white;fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.6 KiB |
@@ -1 +0,0 @@
|
||||
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="#00c300" d="M12.5,42h23c3.59,0,6.5-2.91,6.5-6.5v-23C42,8.91,39.09,6,35.5,6h-23C8.91,6,6,8.91,6,12.5v23C6,39.09,8.91,42,12.5,42z"/><path fill="#fff" d="M37.113,22.417c0-5.865-5.88-10.637-13.107-10.637s-13.108,4.772-13.108,10.637c0,5.258,4.663,9.662,10.962,10.495c0.427,0.092,1.008,0.282,1.155,0.646c0.132,0.331,0.086,0.85,0.042,1.185c0,0-0.153,0.925-0.187,1.122c-0.057,0.331-0.263,1.296,1.135,0.707c1.399-0.589,7.548-4.445,10.298-7.611h-0.001C36.203,26.879,37.113,24.764,37.113,22.417z M18.875,25.907h-2.604c-0.379,0-0.687-0.308-0.687-0.688V20.01c0-0.379,0.308-0.687,0.687-0.687c0.379,0,0.687,0.308,0.687,0.687v4.521h1.917c0.379,0,0.687,0.308,0.687,0.687C19.562,25.598,19.254,25.907,18.875,25.907z M21.568,25.219c0,0.379-0.308,0.688-0.687,0.688s-0.687-0.308-0.687-0.688V20.01c0-0.379,0.308-0.687,0.687-0.687s0.687,0.308,0.687,0.687V25.219z M27.838,25.219c0,0.297-0.188,0.559-0.47,0.652c-0.071,0.024-0.145,0.036-0.218,0.036c-0.215,0-0.42-0.103-0.549-0.275l-2.669-3.635v3.222c0,0.379-0.308,0.688-0.688,0.688c-0.379,0-0.688-0.308-0.688-0.688V20.01c0-0.296,0.189-0.558,0.47-0.652c0.071-0.024,0.144-0.035,0.218-0.035c0.214,0,0.42,0.103,0.549,0.275l2.67,3.635V20.01c0-0.379,0.309-0.687,0.688-0.687c0.379,0,0.687,0.308,0.687,0.687V25.219z M32.052,21.927c0.379,0,0.688,0.308,0.688,0.688c0,0.379-0.308,0.687-0.688,0.687h-1.917v1.23h1.917c0.379,0,0.688,0.308,0.688,0.687c0,0.379-0.309,0.688-0.688,0.688h-2.604c-0.378,0-0.687-0.308-0.687-0.688v-2.603c0-0.001,0-0.001,0-0.001c0,0,0-0.001,0-0.001v-2.601c0-0.001,0-0.001,0-0.002c0-0.379,0.308-0.687,0.687-0.687h2.604c0.379,0,0.688,0.308,0.688,0.687s-0.308,0.687-0.688,0.687h-1.917v1.23H32.052z"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1 +0,0 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#0A66C2"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
|
||||
|
Before Width: | Height: | Size: 626 B |
@@ -1 +0,0 @@
|
||||
<svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X</title><path d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z"/></svg>
|
||||
|
Before Width: | Height: | Size: 315 B |
BIN
public/images/backgrounds/liquid-glass-bg.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 224 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 396 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 268 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 241 KiB |
|
Before Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 477 B After Width: | Height: | Size: 477 B |
|
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 406 KiB |
BIN
public/images/portfolio/dealplustech.png
Normal file
|
After Width: | Height: | Size: 768 KiB |
|
Before Width: | Height: | Size: 241 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 268 KiB |
|
Before Width: | Height: | Size: 270 KiB |
19
redesign-input/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# MoreminiMore Redesign Input
|
||||
|
||||
ชุดนี้คือข้อมูลที่ extract ออกจากเว็บเดิมก่อนรื้อใหม่ ใช้เป็นฐานสำหรับวางแผน redesign รอบถัดไป
|
||||
|
||||
## Files
|
||||
|
||||
- `WEBSITE-CONTENT-EXTRACT.md` - สรุปเนื้อหาเว็บที่ควรพกต่อไป
|
||||
- `assets/logos/` - logo files ที่ใช้ได้ต่อ
|
||||
- `assets/portfolio/` - ภาพผลงาน portfolio
|
||||
- `raw/src-content/` - content collection เดิมแบบ raw
|
||||
- `raw/src-data/` - data files เดิมแบบ raw
|
||||
- `raw/BRAND-VOICE.md` - brand voice เดิม
|
||||
- `raw/moreminimore-content.md` - planning/content draft เดิม
|
||||
|
||||
## Important Note
|
||||
|
||||
โค้ด implementation เก่า, build output, mockup, และไฟล์ทดลอง ถูกย้ายไปไว้ที่:
|
||||
|
||||
`_archive/pre-redesign-2026-06-21/`
|
||||
177
redesign-input/WEBSITE-CONTENT-EXTRACT.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# MoreminiMore Website Content Extract
|
||||
|
||||
Extract date: 2026-06-21
|
||||
|
||||
เอกสารนี้ดึงเฉพาะเนื้อหาและ asset สำคัญจากเว็บเดิม เพื่อใช้วางแผนใหม่ ไม่ถือว่าเป็น design direction ใหม่
|
||||
|
||||
## Brand
|
||||
|
||||
- Brand name: MoreminiMore
|
||||
- Business: ที่ปรึกษาด้านเว็บไซต์ การตลาดออนไลน์ AI และระบบอัตโนมัติสำหรับ SME ไทย
|
||||
- Core promise: เพิ่มยอดขาย ลดต้นทุน ประหยัดเวลา
|
||||
- Positioning: เริ่มจากดูข้อมูลจริงก่อน แล้วค่อยเลือกสิ่งที่ควรทำ
|
||||
- Memorable line from brand voice: เป้าหมายของเราคือการเพิ่มกำไรให้ลูกค้า
|
||||
- Tone: ตรง สุภาพ เน้นข้อมูล ไม่ขายฝัน ไม่ทำให้เทคโนโลยีดูยากเกินจำเป็น
|
||||
- Primary CTA: ปรึกษาฟรี 30 นาที
|
||||
- Secondary CTA: ดูผลงานจริง
|
||||
|
||||
## Contact
|
||||
|
||||
- Email: contact@moreminimore.com
|
||||
- Phone: 080-995-5945
|
||||
- Address: 53 หมู่ 1 ต.บ้านแพ้ว อ.บ้านแพ้ว สมุทรสาคร 74120
|
||||
- Facebook: https://www.facebook.com/moreminimore
|
||||
- LINE: https://line.me/ti/p/~539hdlul
|
||||
- LINE ID: @moreminimore
|
||||
- LinkedIn: https://www.linkedin.com/company/moreminimore
|
||||
|
||||
## Navigation Candidates
|
||||
|
||||
- หน้าแรก
|
||||
- บริการ
|
||||
- ผลงาน
|
||||
- บทความ
|
||||
- FAQ
|
||||
- เกี่ยวกับ
|
||||
- ติดต่อ
|
||||
|
||||
## Homepage Content To Preserve
|
||||
|
||||
### Hero
|
||||
|
||||
- Headline option currently used: เพิ่มยอดขาย ลดต้นทุน ประหยัดเวลา
|
||||
- Supporting copy: ที่ปรึกษาด้านเว็บไซต์ การตลาดออนไลน์ AI และระบบอัตโนมัติสำหรับ SME ไทย เริ่มจากดูข้อมูลจริงก่อน แล้วค่อยเลือกสิ่งที่ควรทำ
|
||||
|
||||
### Data First Section
|
||||
|
||||
- Heading: เราใช้ข้อมูลจริง เพื่อวางแผนให้คุ้มกว่าเดิม
|
||||
- Copy: ก่อนเสนอเว็บไซต์ แคมเปญ หรือระบบอัตโนมัติ เราดูข้อมูลจริงก่อนเสมอ ทั้งเว็บเดิม ช่องทางการตลาด พฤติกรรมลูกค้า ผู้สนใจที่ติดต่อเข้ามา และขั้นตอนทำงานของทีม
|
||||
- Metrics:
|
||||
- +373% impression จากเคส Dataroot
|
||||
- +114.2% click หลังปรับกลุ่มเป้าหมาย
|
||||
- -28.3% ad spend จากข้อมูลที่ยืนยันแล้ว
|
||||
|
||||
### Process
|
||||
|
||||
- ดูข้อมูล: เข้าใจตัวเลข เว็บไซต์ ช่องทางขาย และขั้นตอนทำงานเดิม
|
||||
- เลือกทางที่คุ้ม: เลือกสิ่งที่ควรทำก่อนจากโจทย์จริง
|
||||
- ลงมือทำ: สร้างเว็บ แคมเปญ ระบบอัตโนมัติ หรือวิธีใช้ AI ที่ใช้งานได้จริง
|
||||
- วัดผลและปรับต่อ: ดูผลหลังใช้งาน แล้วปรับให้คุ้มขึ้น
|
||||
|
||||
### Final CTA
|
||||
|
||||
- Heading: ไม่แน่ใจว่าควรเริ่มตรงไหน คุยกับเราก่อน
|
||||
- Copy: เล่าโจทย์ของธุรกิจคุณให้เราฟัง เราจะช่วยดูว่าควรเริ่มจากเว็บไซต์ การตลาด ระบบอัตโนมัติ หรือ AI
|
||||
|
||||
## Services
|
||||
|
||||
### Website Development
|
||||
|
||||
- Short: สร้างเว็บไซต์ที่โหลดไว แก้ไขง่าย วัดผลได้ และเป็นฐานหลักของการขายออนไลน์
|
||||
- Hero title: เว็บไซต์ที่แก้เองได้ โหลดไว และพร้อมวัดผล
|
||||
- Hero subtitle: สร้างเว็บไซต์ธุรกิจที่เป็นฐานหลักของการขายออนไลน์ พร้อม SEO โครงสร้างหน้า และช่องทางรับลูกค้าใหม่
|
||||
- Problems:
|
||||
- เว็บเดิมโหลดช้า
|
||||
- แก้ไขเนื้อหาเองไม่ได้
|
||||
- ไม่มีระบบวัดผล
|
||||
- SEO และโครงสร้างหน้ายังไม่พร้อม
|
||||
- ลูกค้าเข้าเว็บแล้วไม่รู้ว่าต้องทำอะไรต่อ
|
||||
|
||||
### Marketing Consult
|
||||
|
||||
- Short: ดูข้อมูลการตลาดเดิม แล้วปรับกลุ่มเป้าหมาย ช่องทาง และข้อความขายให้ใช้งบคุ้มขึ้น
|
||||
- Hero title: การตลาดที่เริ่มจากข้อมูล ไม่ใช่ความรู้สึก
|
||||
- Hero subtitle: เราช่วยดูข้อมูลการตลาดเดิม วิเคราะห์ช่องทาง กลุ่มเป้าหมาย และข้อความขาย เพื่อเลือกสิ่งที่ควรปรับให้ใช้งบคุ้มขึ้น
|
||||
- Problems:
|
||||
- ยิงแอดแล้วไม่คุ้ม
|
||||
- ยอดขายไม่เพิ่มแม้ใช้งบมากขึ้น
|
||||
- มีคนทักเข้ามา แต่ไม่ใช่ลูกค้าที่มีคุณภาพ
|
||||
- ไม่รู้ว่าควรทำช่องทางไหนต่อ
|
||||
- คอนเทนต์ไม่เชื่อมกับการขาย
|
||||
|
||||
### Automation Workflow
|
||||
|
||||
- Short: วางระบบทำงานอัตโนมัติสำหรับงานที่มีขั้นตอนแน่นอน ช่วยให้ทีมไม่ต้องเสียเวลากับงานซ้ำ
|
||||
- Hero title: ลดงานซ้ำ ด้วยระบบการทำงานอัตโนมัติ
|
||||
- Hero subtitle: เราช่วยวางระบบอัตโนมัติด้วยการเขียนแอปหรือเชื่อมต่อเครื่องมือที่มีอยู่ เพื่อให้งานที่มีขั้นตอนชัดเจนทำงานได้เร็วขึ้น และลดเวลาที่พนักงานต้องทำซ้ำ
|
||||
- Problems:
|
||||
- พนักงานต้อง copy/paste ข้อมูลซ้ำ
|
||||
- งานมีขั้นตอนชัดเจน แต่ยังต้องทำมือ
|
||||
- ข้อมูลกระจายหลายที่
|
||||
- ผู้สนใจหรืองานเอกสารหลุดระหว่างทาง
|
||||
- ผู้จัดการต้องตามงานเดิมซ้ำ ๆ
|
||||
|
||||
### AI Consult
|
||||
|
||||
- Short: ออกแบบวิธีใช้ AI ให้ทำงานร่วมกับพนักงาน และช่วยเก็บความรู้สำคัญไว้ในองค์กร
|
||||
- Hero title: ให้ AI ทำงานร่วมกับพนักงาน และเก็บความรู้ไว้กับองค์กร
|
||||
- Hero subtitle: เราช่วยออกแบบวิธีใช้ AI ให้เข้ากับงานจริงของทีม และค่อย ๆ เก็บความรู้จากพนักงาน เพื่อให้ความรู้สำคัญยังอยู่กับองค์กรแม้มีการเปลี่ยนคน
|
||||
- Problems:
|
||||
- ความรู้สำคัญอยู่กับพนักงานบางคน
|
||||
- พนักงานใหม่ต้องใช้เวลานานในการเรียนรู้งาน
|
||||
- คำถามซ้ำ ๆ ไม่มีแหล่งคำตอบกลาง
|
||||
- เอกสารกระจัดกระจาย
|
||||
- ใช้ AI แบบทดลอง แต่ยังไม่เชื่อมกับงานจริง
|
||||
|
||||
## Portfolio
|
||||
|
||||
| Name | URL | Category | Image |
|
||||
| --- | --- | --- | --- |
|
||||
| Dataroot | https://erp.dataroot.asia | ที่ปรึกษาการตลาด | `assets/portfolio/dataroot.png` |
|
||||
| ทวนทอง 99 | https://tuanthong99.com | อีคอมเมิร์ซ | `assets/portfolio/tuanthong.png` |
|
||||
| Underdog Marketing | https://underdog.run | Website Development | `assets/portfolio/underdog.png` |
|
||||
| เทรนเนอร์ซันนี่ | https://trainersunny.com | Website Development | `assets/portfolio/trainersunny.png` |
|
||||
| Lungfinler | https://lungfinler.com | Website Development | `assets/portfolio/lungfinler.png` |
|
||||
| Jet Industries | https://jetindustries.co.th | Website Development | `assets/portfolio/jetindustries.png` |
|
||||
| สำนักงานกฎหมาย ตถาตา | https://lawyernoom.com | Website Development | `assets/portfolio/lawyernoom.png` |
|
||||
| Baofuling Shop | https://baofulingshop.com | อีคอมเมิร์ซ | `assets/portfolio/baofuling.png` |
|
||||
| เลือดจระเข้วานิไทย | https://เลือดจระเข้วานิไทย.com | อีคอมเมิร์ซ | `assets/portfolio/luadjob.png` |
|
||||
|
||||
## Blog Content
|
||||
|
||||
Raw blog posts are preserved in `raw/src-content/blog/`.
|
||||
|
||||
- 5 วิธีใช้ AI เพิ่มยอดขายให้ธุรกิจของคุณ
|
||||
- วิธีสร้าง Content ด้วย AI ที่ Google รัก
|
||||
- AI สำหรับ SME ไทย: คู่มือฉบับสมบูรณ์
|
||||
- Digital Transformation Guide
|
||||
- Marketing Automation Guide
|
||||
|
||||
## FAQ Content
|
||||
|
||||
Raw FAQ entries are preserved in `raw/src-content/faq/`.
|
||||
|
||||
Categories found:
|
||||
|
||||
- บริการ
|
||||
- ราคา
|
||||
- เวลา
|
||||
- AI
|
||||
- Support
|
||||
|
||||
## Assets
|
||||
|
||||
### Logos
|
||||
|
||||
- `assets/logos/logo-long-black.png`
|
||||
- `assets/logos/logo-long.png`
|
||||
- `assets/logos/logo.svg`
|
||||
|
||||
### Portfolio Images
|
||||
|
||||
- `assets/portfolio/baofuling.png`
|
||||
- `assets/portfolio/dataroot.png`
|
||||
- `assets/portfolio/jetindustries.png`
|
||||
- `assets/portfolio/lawyernoom.png`
|
||||
- `assets/portfolio/luadjob.png`
|
||||
- `assets/portfolio/lungfinler.png`
|
||||
- `assets/portfolio/trainersunny.png`
|
||||
- `assets/portfolio/tuanthong.png`
|
||||
- `assets/portfolio/underdog.png`
|
||||
|
||||
## Raw Sources Preserved
|
||||
|
||||
- `raw/src-content/`
|
||||
- `raw/src-data/`
|
||||
- `raw/BRAND-VOICE.md`
|
||||
- `raw/moreminimore-content.md`
|
||||
BIN
redesign-input/assets/logos/logo-long-black.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
redesign-input/assets/logos/logo-long.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
6
redesign-input/assets/logos/logo.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 40" fill="none">
|
||||
<rect width="40" height="40" rx="8" fill="#fed400"/>
|
||||
<text x="8" y="28" font-family="Kanit, sans-serif" font-weight="800" font-size="20" fill="#000">M</text>
|
||||
<text x="52" y="26" font-family="Kanit, sans-serif" font-weight="600" font-size="18" fill="#000">M</text>
|
||||
<text x="72" y="26" font-family="Noto Sans Thai, sans-serif" font-weight="500" font-size="14" fill="#000">oreMiniMore</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 477 B |
15
redesign-input/assets/portfolio/DEALPLUSTECH.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Dealplustech Portfolio Asset
|
||||
|
||||
Dealplustech is included in the rebuilt website portfolio.
|
||||
|
||||
- URL: https://www.dealplustech.co.th
|
||||
- Homepage screenshot captured: `dealplustech.png`
|
||||
- Screenshot status: clean homepage capture with header/menu visible and cookie banner removed.
|
||||
- Target style: same portfolio-image treatment as existing clients
|
||||
- Output filename: `dealplustech.png`
|
||||
|
||||
Notes:
|
||||
|
||||
- Dealplustech is a new client.
|
||||
- It should appear as website portfolio work.
|
||||
- It can also support consulting-adjacent credibility, but should not replace Dataroot main diagnosis story.
|
||||
BIN
redesign-input/assets/portfolio/baofuling.png
Normal file
|
After Width: | Height: | Size: 706 KiB |
BIN
redesign-input/assets/portfolio/dataroot.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
redesign-input/assets/portfolio/dealplustech.png
Normal file
|
After Width: | Height: | Size: 768 KiB |
BIN
redesign-input/assets/portfolio/jetindustries.png
Normal file
|
After Width: | Height: | Size: 911 KiB |
BIN
redesign-input/assets/portfolio/lawyernoom.png
Normal file
|
After Width: | Height: | Size: 475 KiB |
BIN
redesign-input/assets/portfolio/luadjob.png
Normal file
|
After Width: | Height: | Size: 496 KiB |
BIN
redesign-input/assets/portfolio/lungfinler.png
Normal file
|
After Width: | Height: | Size: 337 KiB |
BIN
redesign-input/assets/portfolio/trainersunny.png
Normal file
|
After Width: | Height: | Size: 849 KiB |
BIN
redesign-input/assets/portfolio/tuanthong.png
Normal file
|
After Width: | Height: | Size: 897 KiB |
BIN
redesign-input/assets/portfolio/underdog.png
Normal file
|
After Width: | Height: | Size: 724 KiB |
80
redesign-input/raw/BRAND-VOICE.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Brand Voice — MoreminiMore
|
||||
|
||||
> ใช้เป็นกระดาษทดเวลาเขียน content ทุกชิ้น ถ้าเขียนแล้วผิด vibe ให้กลับมาเช็คที่นี่
|
||||
|
||||
---
|
||||
|
||||
## หนึ่งประโยคที่คนต้องจำ
|
||||
|
||||
> **เป้าหมายของเราคือการเพิ่มกำไรให้ลูกค้า** เพราะถ้าลูกค้ามีกำไรมากขึ้น ลูกค้าก็จะสามารถใช้บริการเราต่อไปได้
|
||||
|
||||
---
|
||||
|
||||
## เราเป็นใครใน 1 บรรทัด
|
||||
|
||||
ที่ปรึกษาที่ทำเว็บ + ทำการตลาด + ทำ AI ในองค์กร **โดยใช้ข้อมูลจริงเป็นตัวตั้ง** ไม่ใช่ประสบการณ์ล้วน ๆ
|
||||
|
||||
---
|
||||
|
||||
## เสียงของเรา (10 ข้อ)
|
||||
|
||||
1. **ตรง แต่สุภาพ** — พูดตรง ๆ ว่าทำได้หรือทำไม่ได้ แต่ไม่ดุ ไม่หยาบ
|
||||
2. **เน้นข้อมูล** — เวลาพูดถึงผลงาน บอกตัวเลข ไม่ใช่ "ดีขึ้นมาก" แบบกำกวม
|
||||
3. **เล่าจากประสบการณ์จริง** — มีเคสพัง มีเคสสำเร็จ ไม่อวดว่าทำได้หมดทุกอย่าง
|
||||
4. **ห้ามใช้คำว่า "ครบวงจร" "ทันสมัย" "รวดเร็ว" "ไร้รอยต่อ" "เพิ่มประสิทธิภาพ"** — คำพวกนี้ทุก agency ใช้ ไม่ได้ทำให้เราต่าง
|
||||
5. **พูดถึงเรื่องที่เราไม่เชื่อด้วย** — เว็บสวยไม่ได้แปลว่าขายได้ / AI ไม่ได้แทนทุกอย่าง / จ่ายแพงไม่ได้แปลว่าดี
|
||||
6. **ยอมรับว่าเราเป็น soloprenuer** — แต่ห้ามขอโทษ ห้ามทำเป็นข้ออ่อน ให้ทำเป็นข้อได้เปรียบ: คุณคุยกับคนที่จะทำงานจริง ไม่ใช่ทีมขาย
|
||||
7. **ช่วงราคา** — ไม่ลงเว็บ แต่พร้อมบอกเมื่อถาม ถ้าลูกค้าถามแล้วเราไม่ตอบ = ลูกค้าหาย
|
||||
8. **Quote ลูกค้าใช้ของจริง** — เอาคำที่ลูกค้าพูดจริง ๆ มาวาง ไม่ใช่แต่งให้สวย
|
||||
9. **เน้นว่าเราเลือกช่องทางให้เหมาะกับสินค้า + กลุ่มเป้าหมาย** — ไม่ยิงทุกที่ ไม่ใช้ AI ระดับ Frontier กับทุกงาน
|
||||
10. **พูดถึง "เราเขียนโค้ดเอง" และ "เราตอบแชตเอง" โดยไม่ต้องโอ้อวด** — แค่บอกตรง ๆ ว่าเราไม่ outsource
|
||||
|
||||
---
|
||||
|
||||
## คำที่ห้ามใช้ (Banned Words)
|
||||
|
||||
| ❌ ห้าม | ✅ ใช้แทน |
|
||||
|---|---|
|
||||
| ครบวงจร | บอกชัดว่าทำอะไรบ้าง |
|
||||
| ทันสมัย | บอกว่าใช้เทคโนโลยีอะไร เช่น Astro / n8n / local LLM |
|
||||
| รวดเร็ว | บอกตัวเลข เช่น "ส่งมอบภายใน 14 วัน" |
|
||||
| ไร้รอยต่อ | อธิบายว่าเชื่อมต่อระบบอะไรยังไง |
|
||||
| เพิ่มประสิทธิภาพ | บอกตัวเลข เช่น "ลดเวลา 4 ชม./สัปดาห์" |
|
||||
| หลากหลาย | บอกว่ามีอะไรบ้าง |
|
||||
| มีคุณภาพ | บอกเกณฑ์วัด |
|
||||
|
||||
---
|
||||
|
||||
## คำที่ใช้บ่อย (ใช้ได้)
|
||||
|
||||
- "วางแผนจากข้อมูล" / "ใช้สถิติจริง"
|
||||
- "เราเขียนเอง / ทำเอง" / "ไม่ outsource"
|
||||
- "จ่ายเมื่อใช้ / เริ่มต้นที่..."
|
||||
- "ถ้าทำไม่ได้ จะบอกตรง ๆ"
|
||||
- "เคสเราเคยพังแบบนี้" (เล่าเคสจริง)
|
||||
|
||||
---
|
||||
|
||||
## Tone Examples
|
||||
|
||||
### ❌ ก่อนแก้ (AI-isms + ทั่วไปเกินไป)
|
||||
> เรามีบริการครบวงจร ทั้งเว็บไซต์ การตลาด และ AI เพื่อเพิ่มประสิทธิภาพให้ธุรกิจของคุณอย่างทันสมัยและรวดเร็ว
|
||||
|
||||
### ✅ หลังแก้ (เสียงของมอร์มินิมอร์)
|
||||
> เราทำเว็บ ทำการตลาด และวางระบบ AI ให้องค์กร — ทั้งหมดเริ่มจากดูข้อมูลของลูกค้าก่อน ไม่ใช่เดาจากประสบการณ์
|
||||
|
||||
---
|
||||
|
||||
### ❌ ก่อนแก้
|
||||
> เว็บไซต์ของเราสวยงาม ทันสมัย รองรับทุกอุปกรณ์
|
||||
|
||||
### ✅ หลังแก้
|
||||
> เว็บที่เราทำเน้นให้ขายได้ ไม่ใช่เน้นให้สวย — เพราะเว็บหลายเว็บที่ดูดีที่สุด ขายแย่ที่สุดก็มี
|
||||
|
||||
---
|
||||
|
||||
### ❌ ก่อนแก้
|
||||
> เราใช้ AI เพื่อเพิ่มประสิทธิภาพ
|
||||
|
||||
### ✅ หลังแก้
|
||||
> เราเลือกใช้ AI ตามงาน — งาน 80% ใช้ Model ราคาถูกก็พอ จะได้ไม่เปลืองเงินลูกค้า
|
||||
103
redesign-input/raw/moreminimore-content.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# MoreminiMore — เนื้อหาเว็บไซต์
|
||||
|
||||
## ข้อมูลบริษัท
|
||||
- **ชื่อ**: MoreminiMore
|
||||
- **ประเภทธุรกิจ**: ที่ปรึกษา AI + การตลาดออนไลน์ สำหรับ SME ไทย
|
||||
- **จุดเด่น**: เริ่มจากดูสถิติจริง ไม่ใช่เดาว่าควรทำอะไร
|
||||
- **สัญลักษณ์**: more**mini**more (mini = สีแดง #d4553a)
|
||||
|
||||
---
|
||||
|
||||
## Hero Section
|
||||
- **Headline**: พาธุรกิจคุณ **บินสูง** ด้วยข้อมูล
|
||||
- **Subheadline**: ที่ปรึกษา AI + การตลาดออนไลน์ สำหรับ SME ไทย — เริ่มจากดูสถิติของคุณก่อน
|
||||
- **CTA 1**: ปรึกษาฟรี 30 นาที →
|
||||
- **CTA 2**: ดูผลงานจริง
|
||||
- **Trust badges**: ✓ ปรึกษาฟรี 30 นาที · ✓ ไม่มีผูกมัด · ✓ เห็นผลภายใน 30 วัน
|
||||
|
||||
---
|
||||
|
||||
## Section 1: ผลลัพธ์จริง
|
||||
**หัวข้อ**: เราช่วย SME ไทย บินสูงขึ้น
|
||||
**คำอธิบาย**: ไม่ใช่แค่ทำเว็บ — แต่ช่วยให้ธุรกิจเติบโตจริง ด้วยข้อมูลจริง
|
||||
|
||||
| ตัวเลข | หัวข้อ | รายละเอียด |
|
||||
|--------|--------|-----------|
|
||||
| +373% | เพิ่มยอดขาย | Dataroot +373% impression ใน 1 เดือน |
|
||||
| −28% | ลดต้นทุน | ลดงบโฆษณา 28% โดยยอดขายไม่ลด |
|
||||
| 5 ชม. | ประหยัดเวลา | AI + Automation ทำงานแทน 5 ชม./วัน |
|
||||
|
||||
---
|
||||
|
||||
## Section 2: Case Study / Dataroot
|
||||
**หัวข้อ**: จากยิงโฆษณาแบบกว้าง สู่ผลลัพธ์ที่แม่นยำ
|
||||
**Quote**: "เราไม่ได้ยิงโฆษณาเก่ง เราแค่ดูสถิติ"
|
||||
|
||||
### ขั้นตอน:
|
||||
1. **วิเคราะห์ข้อมูล 3 เดือนย้อนหลัง** — ดูสถิติจริง ไม่ใช่เดา
|
||||
2. **แยกกลุ่มเป้าหมาย: 4 segments** — ยิงให้แม่น ไม่ใช่ยิงให้กว้าง
|
||||
3. **ได้ผลลัพธ์ +373% impression** — วัดผลได้จริง
|
||||
|
||||
### ตัวเลข:
|
||||
- +373% IMPRESSION
|
||||
- +114% CLICK
|
||||
- −28% AD_SPEND
|
||||
|
||||
**CTA**: อ่านเคสเต็ม →
|
||||
|
||||
---
|
||||
|
||||
## Section 3: บริการ
|
||||
**หัวข้อ**: เราทำอะไรได้บ้าง
|
||||
|
||||
| ไอคอน | บริการ | คำอธิบาย |
|
||||
|--------|--------|----------|
|
||||
| 🌐 | รับทำเว็บไซต์ | เว็บที่ Google รัก + โหลดเร็ว ไม่ใช่แค่สวย |
|
||||
| 🤖 | ที่ปรึกษา AI | AI ที่ใช้ได้จริงกับธุรกิจ ไม่ใช่แค่ buzzword |
|
||||
| 📈 | การตลาดออนไลน์ | SEO + Ads + Content ที่วัดผลได้ |
|
||||
| ⚡ | Automation | ทำงานแทน 5 ชม./วัน ด้วย AI |
|
||||
|
||||
---
|
||||
|
||||
## Section 4: ขั้นตอนทำงาน
|
||||
**หัวข้อ**: เราทำงานยังไง
|
||||
|
||||
| ขั้น | หัวข้อ | รายละเอียด |
|
||||
|------|--------|-----------|
|
||||
| 01 | ดูสถิติ | วิเคราะห์ข้อมูลปัจจุบัน — ไม่ใช่เดา |
|
||||
| 02 | วางแผน | กลยุทธ์ที่เหมาะกับธุรกิจคุณ |
|
||||
| 03 | ลงมือทำ | ทีมเราทำงานเอง — ไม่ outsource |
|
||||
| 04 | วัดผล | รายงานผลลัพธ์จริง — ไม่ใช่ vanity metrics |
|
||||
|
||||
---
|
||||
|
||||
## Section 5: บล็อก
|
||||
**หัวข้อ**: บทความล่าสุด
|
||||
|
||||
| ไอคอน | หัวข้อ | คำอธิบาย |
|
||||
|--------|--------|----------|
|
||||
| 📊 | 5 วิธีใช้ AI เพิ่มยอดขาย | เริ่มได้เลยวันนี้ |
|
||||
| 🎯 | Content แบบไหน Google รัก | อัปเดต SEO 2026 |
|
||||
| 🔧 | Automation 101 | เริ่มยังไงให้ได้ผล |
|
||||
|
||||
---
|
||||
|
||||
## Section 6: Contact
|
||||
**หัวข้อ**: พร้อมที่จะบินสูงขึ้นหรือยัง?
|
||||
**คำอธิบาย**: ปรึกษาฟรี 30 นาที — ไม่มีผูกมัด
|
||||
**CTA 1**: ปรึกษาฟรี →
|
||||
**CTA 2**: ดูผลงานจริง
|
||||
|
||||
---
|
||||
|
||||
## Navigation
|
||||
- เกี่ยวกับ
|
||||
- บริการ
|
||||
- ผลงาน
|
||||
- ปรึกษาฟรี → (CTA button)
|
||||
|
||||
---
|
||||
|
||||
## ภาษา
|
||||
- **ภาษาไทย** ทั้งหมด
|
||||
- **Font**: Kanit (หัวข้อ), Itim (เนื้อหา), JetBrains Mono (labels/eyebrow)
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "บริการ"
|
||||
category_icon: "💼"
|
||||
question: "มอร์มินิมอร์ทำอะไรบ้าง?"
|
||||
answer: "4 บริการหลัก — (1) รับทำเว็บไซต์ (Astro / WordPress) (2) ที่ปรึกษาการตลาดออนไลน์ (3) Automation / เชื่อมต่อระบบ (4) AI Consult ในองค์กร ทั้งหมดเริ่มจากดูข้อมูลของลูกค้าก่อน ไม่ใช่เดาว่าควรทำอะไร"
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "บริการ"
|
||||
category_icon: "💼"
|
||||
question: "ถ้ามีงบน้อย ควรเริ่มจากอะไร?"
|
||||
answer: "ถ้ายังไม่มีเว็บและไม่มีกิจกรรมออนไลน์เลย → เริ่มจากเว็บไซต์ก่อน เพราะเป็นบริการที่ถูกที่สุด ถ้ามีเว็บแล้วและมีกิจกรรมออนไลน์ → Marketing Consult จะคุ้มกว่า ถ้ารู้สึกยุ่งมากมีแต่ความผิดพลาด → Automation จะตอบโจทย์สุด ถ้ามีระบบพร้อมแล้วอยากรีดยอดขายหรือป้องกันปัญหาพนักงานลาออก → AI Consult"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/003-services-fit.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "บริการ"
|
||||
category_icon: "💼"
|
||||
question: "เหมาะกับธุรกิจแบบไหน?"
|
||||
answer: "SME ที่ต้องการคนช่วยดูเรื่อง Online Marketing และระบบ IT ลูกค้าที่ไม่มีความรู้ IT มาก แต่จำเป็นต้องใช้ระบบ IT ในการทำงาน ไม่เหมาะกับ: องค์กรขนาดใหญ่ที่มีการเมืองเยอะ คนที่อยากได้ของฟรีหรือจ่ายน้อยแต่คาดหวังงานระดับแสน และกลุ่ม IT ทั่วไป (ยกเว้นขาย Software เฉพาะทาง เช่น ERP)"
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "บริการ"
|
||||
category_icon: "💼"
|
||||
question: "รับงานอุตสาหกรรมเฉพาะไหม?"
|
||||
answer: "รับหลากหลาย แต่ไม่รับทุกอย่าง — เราเน้นงานที่วัดผลได้ ไม่ว่าจะเป็น E-commerce, บริการ, B2B, คลินิก, ร้านอาหาร, ผู้ผลิต, สถานศึกษา, ที่ปรึกษา ดูตัวอย่างงานได้ที่หน้า Portfolio ถ้าไม่แน่ใจว่าอุตสาหกรรมของคุณเหมาะ นัดคุย 30 นาทีฟรีได้เลย"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/005-price-start.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ราคา"
|
||||
category_icon: "💰"
|
||||
question: "ราคาเริ่มต้นเท่าไหร่?"
|
||||
answer: "เว็บไซต์: Astro เริ่ม 5,000 บาท / WordPress เริ่ม 30,000 บาท (ขึ้นอยู่กับความซับซ้อน) · ที่ปรึกษา Marketing และ Automation: เริ่ม 10,000 บาท/เดือน · ที่ปรึกษา AI: เริ่ม 20,000 บาท/เดือน · Host: เริ่ม 5,000 บาท/ปี ราคาจะขึ้นอยู่กับ Requirement จริง บอกได้เมื่อคุยกัน"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/006-price-packages.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ราคา"
|
||||
category_icon: "💰"
|
||||
question: "มีแพ็คเกจไหม?"
|
||||
answer: "ไม่มีแพ็คเกจตายตัว เพราะงานแต่ละชิ้นต่างกัน บางเว็บใช้เวลา 1 สัปดาห์ บางเว็บใช้ 3 เดือน เราจะส่ง Proposal เป็น PDF พร้อมรายละเอียดงาน ราคา ระยะเวลา ให้คุณอ่านก่อนเซ็น แก้ไข scope ได้"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/007-price-payment.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ราคา"
|
||||
category_icon: "💰"
|
||||
question: "จ่ายยังไง?"
|
||||
answer: "เว็บไซต์: มัดจำ 50% ตอนเซ็น ที่เหลือจ่ายตอนส่งมอบ · ที่ปรึกษารายเดือน: จ่ายต้นเดือนของทุกเดือน เริ่มจ่ายเดือนแรกตอนเซ็นสัญญา ออกใบกำกับภาษีได้"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/008-price-hidden.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ราคา"
|
||||
category_icon: "💰"
|
||||
question: "มีค่าใช้จ่ายแอบแฝงไหม?"
|
||||
answer: "ไม่มี — เราจะบอกทุกค่าใช้จ่ายใน Proposal ตั้งแต่ต้น ไม่มี \"อันนี้เพิ่มเงินนะ\" ตอนใกล้ส่งมอบ ถ้ามีงานเพิ่มจริง ๆ จะคุยและตกลงราคาก่อนทำ"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/009-time-website.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ระยะเวลา"
|
||||
category_icon: "⏱️"
|
||||
question: "ทำเว็บเสร็จในกี่วัน?"
|
||||
answer: "Astro: 14-30 วัน · WordPress: 2-4 เดือน · ถ้าจะติด เราจะบอกก่อน 7 วัน ไม่ใช่บอกตอนส่งงาน — เคสไหนที่เคยส่งช้า เราคืนเงิน Pro-rata"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/010-time-seo.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ระยะเวลา"
|
||||
category_icon: "⏱️"
|
||||
question: "SEO ใช้เวลาเห็นผลกี่เดือน?"
|
||||
answer: "SEO ปกติใช้เวลา 3-6 เดือนถึงจะเห็นผลชัด ขึ้นอยู่กับคีย์เวิร์ดและคู่แข่ง เราเคยมีเคสติดหน้า 1 Google ใน 4 เดือน แต่ก็มีเคสที่ใช้เวลานานกว่านั้น จะบอกคุณตรง ๆ ตั้งแต่แรกว่าคาดว่าเห็นผลเมื่อไหร่"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/011-time-rush.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ระยะเวลา"
|
||||
category_icon: "⏱️"
|
||||
question: "งานด่วน ทำได้ไหม?"
|
||||
answer: "ทำได้ แต่จะคิดราคาเร่งด่วนเพิ่ม เพราะกระทบกับงานอื่นที่มีอยู่ เราจะบอกชัดว่าค่าเร่งเท่าไหร่ก่อนรับงาน"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/012-time-overrun.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "ระยะเวลา"
|
||||
category_icon: "⏱️"
|
||||
question: "ถ้างานล่าช้า คืนเงินไหม?"
|
||||
answer: "ถ้าเราส่งงานล่าช้าโดยไม่ได้แจ้งล่วงหน้า 7 วัน จะคืนเงิน Pro-rata ตามจริง เคสนี้เคยเกิดขึ้น 1-2 ครั้งในรอบหลายปี และคืนเงินไปแล้ว"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/013-ai-quality.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "AI & เทคนิค"
|
||||
category_icon: "🤖"
|
||||
question: "AI ใช้ของแพงหรือของถูก?"
|
||||
answer: "เราเลือกตามงาน ไม่ใช่เลือกของแพงสุดเสมอ งาน 80% ใช้ Model ราคาถูก (เช่น GPT-4o-mini, Haiku, Local LLM) ก็ได้ผล ส่วนงานที่ซับซ้อนมาก ๆ ค่อยใช้ของแพง วิธีนี้ช่วยลูกค้าประหยัดค่าใช้จ่ายได้มากกว่าครึ่ง"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/014-ai-technical.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "AI & เทคนิค"
|
||||
category_icon: "🤖"
|
||||
question: "ต้องมีความรู้เทคนิคไหม?"
|
||||
answer: "ไม่ต้อง เราดูแลตั้งแต่ต้นจนจบ ตั้งแต่วิเคราะห์ ออกแบบ พัฒนา ไปจนถึง Deploy และดูแลหลังขาย จะสอนการใช้งานจนทีมคุณใช้เป็น"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/015-ai-pdpa.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "AI & เทคนิค"
|
||||
category_icon: "🤖"
|
||||
question: "ข้อมูลปลอดภัยไหม (PDPA)?"
|
||||
answer: "ปลอดภัย สำหรับงานที่ต้องการความลับ เราใช้ Local LLM ที่รันในเครื่องของลูกค้า ข้อมูลไม่ออกไปไหน ส่วนงานทั่วไปใช้ API ของผู้ให้บริการที่เชื่อถือได้ พร้อมทำ NDA ได้"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/016-ai-which.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "AI & เทคนิค"
|
||||
category_icon: "🤖"
|
||||
question: "ควรใช้ AI ตัวไหน?"
|
||||
answer: "ขึ้นอยู่กับงาน ถ้าเป็นแชทบอททั่วไป ใช้ GPT-4o-mini หรือ Claude Haiku ก็พอ ถ้าเป็นงานวิเคราะห์ข้อมูล ใช้ GPT-4o หรือ Claude Sonnet ถ้าเป็นงานที่ต้องการความลับ ใช้ Local LLM (Llama, Qwen) เรามี AI Audit ฟรี ช่วยวิเคราะห์ว่าธุรกิจคุณควรใช้ AI ตัวไหน"
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "หลังการขาย"
|
||||
category_icon: "🛠️"
|
||||
question: "มีประกันงานไหม?"
|
||||
answer: "มี — ถ้าเว็บมีปัญหาจากการพัฒนาของเรา จะแก้ไขให้ฟรี 30-90 วันหลังส่งมอบ (ขึ้นอยู่กับประเภทงาน) ถ้าเกิดจากการแก้ไขของลูกค้าเอง จะคิดค่าแก้ตามจริง"
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "หลังการขาย"
|
||||
category_icon: "🛠️"
|
||||
question: "ติดต่อช่องทางไหน?"
|
||||
answer: "LINE OA: @moreminimore (ตอบเร็วที่สุด) · โทร: 080-995-5945 · Email: contact@moreminimore.com ทีมที่ตอบคือคนที่ทำงานให้คุณ ไม่ใช่ Bot ไม่ใช่คนอื่น"
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "หลังการขาย"
|
||||
category_icon: "🛠️"
|
||||
question: "มีแพ็คเกจดูแลรายเดือนไหม?"
|
||||
answer: "มี เริ่ม 2,000 บาท/เดือน รวมอัปเดตเนื้อหา ปรับ SEO แก้บั๊ก ตอบคำถามผ่าน LINE ถ้าไม่เอาแพ็คเกจ ก็จ่ายเป็นงาน ๆ ไป แล้วแต่ความเหมาะ"
|
||||
---
|
||||
6
redesign-input/raw/src-content/faq/020-support-refund.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: "หลังการขาย"
|
||||
category_icon: "🛠️"
|
||||
question: "ถ้าไม่พอใจ ขอเงินคืนได้ไหม?"
|
||||
answer: "ภายใน 7 วันแรกหลังเริ่มงาน ถ้าคุณรู้สึกว่าไม่ใช่ ขอยกเลิกได้ จะคืนเงินตามส่วนงานที่ยังไม่ได้ทำ เราไม่ผูก commitment"
|
||||
---
|
||||
86
redesign-input/raw/src-content/pages/about.md
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: "เกี่ยวกับเรา"
|
||||
subtitle: "ที่ปรึกษาที่ทำงานเอง ไม่ใช่ทีมขายที่ส่งงานต่อ"
|
||||
hero_badge: "เกี่ยวกับเรา"
|
||||
---
|
||||
|
||||
# เกี่ยวกับมอร์มินิมอร์
|
||||
|
||||
## เริ่มจากตรงนี้
|
||||
|
||||
มอร์มินิมอร์ ก่อตั้งปี 2020 จากประสบการณ์ตรงที่เห็น SME ไทยเสียเงินหลายแสนไปกับ
|
||||
|
||||
- เว็บไซต์ที่ "สวยแต่ไม่มีคนเข้า"
|
||||
- โฆษณาที่ "ยิงเยอะแต่ไม่มีคนซื้อ"
|
||||
- AI tools ที่ "ว้าวแต่ใช้ไม่เป็น"
|
||||
|
||||
เราเลยตั้งใจว่าจะทำให้ต่าง
|
||||
|
||||
## นโยบายของเรา
|
||||
|
||||
**เป้าหมายของเราคือการเพิ่มกำไรให้ลูกค้า** เพราะถ้าลูกค้ามีกำไรมากขึ้น ลูกค้าก็จะสามารถใช้บริการเราต่อไปได้
|
||||
|
||||
ทุกระบบที่ส่งมอบต้องตอบคำถามเดียวให้ได้: **"ลูกค้ามีกำไรเพิ่มขึ้นจริงไหม"** — ไม่ใช่แค่ส่งงานตามสัญญา
|
||||
|
||||
## วิธีทำงานของเรา
|
||||
|
||||
เราไม่ได้ทำงานแบบเดียวกับทุกที่ — เพราะลูกค้าแต่ละคนมีบริบท งบประมาณ และทีมต่างกัน
|
||||
|
||||
- **งานที่ต้องใช้ความเชี่ยวชาญเฉพาะทาง** — เราจะทำเอง เพราะถ้าเราไม่ทำเอง เราจะตอบคำถามลูกค้าไม่ได้
|
||||
- **งานที่ต้องทำซ้ำ ๆ ปริมาณเยอะ** — เราจะใช้ bot หรือ outsource ให้คนที่เชี่ยวชาญเฉพาะด้าน เพราะเรื่องบางเรื่อง คนที่ทำเป็นอาชีพจะทำได้ดีกว่า
|
||||
- **งานที่ต้องตอบลูกค้าตลอด 24 ชั่วโมง** — เราจะใช้ bot ช่วยคัดกรองเบื้องต้น แล้วเราจะตามด้วยคน เพราะบางเรื่อง bot ตอบไม่ได้
|
||||
|
||||
สรุปคือ — **ผลงานที่ออกมาจะขึ้นอยู่กับบริบทของลูกค้า ไม่ใช่วิธีทำงานของเรา** เราเลือกวิธีที่จะทำให้ลูกค้าได้ผลลัพธ์ที่ดีที่สุด ไม่ใช่วิธีที่เราถนัดที่สุด
|
||||
|
||||
## เราเชื่ออะไร
|
||||
|
||||
- **เว็บสวยไม่ได้แปลว่าขายได้** — เว็บหลายเว็บที่ดูดีที่สุด ขายแย่ที่สุดก็มี
|
||||
- **AI ไม่ได้แทนทุกอย่าง** — แต่ถ้ารู้จักใช้ จะประหยัดหรือเปิดโอกาสใหม่ที่คาดไม่ถึง
|
||||
- **จ่ายแพงไม่ได้แปลว่าดี** — งาน 80% ใช้ของถูกได้ ส่วนที่เหลือค่อยใช้ของแพง
|
||||
- **ทำเผื่อมากเกินไป** มักจะทำให้จ่ายเกินความจำเป็น
|
||||
- **"สิ่งที่ถูกต้อง" ไม่ใช่ "สิ่งที่ลูกค้าต้องการ" เสมอไป** — เราเช็คเสมอว่าสิ่งที่เราจะทำตรงกับที่ลูกค้าต้องการจริงไหม
|
||||
- **ระบบที่สุดยอดที่คนใช้ไม่เป็น = เสียเงินเปล่า** — เราเน้นให้คนใช้ได้จริง ไม่ใช่แค่ส่งของแพง ๆ
|
||||
|
||||
## เบื้องหลังการทำงาน
|
||||
|
||||
เรานั่งทำงานที่บ้าน ใช้ MacBook ตัวเดียว แต่มี **เครื่องมือด้าน marketing intelligence** ที่ช่วยให้เราเข้าใจตลาดได้ลึกกว่าคนทั่วไป:
|
||||
|
||||
- **ระบบดูโฆษณาคู่แข่ง** — ดูว่าคู่แข่งยิงโฆษณาอะไร คำไหน convert ดี งบประมาณเท่าไหร่ เพื่อให้ลูกค้าวางกลยุทธ์ได้โดยไม่ต้องเดา
|
||||
- **ระบบวิเคราะห์ keyword + SEO gap** — หาโอกาสที่คู่แข่งยังไม่ได้ทำ เพื่อให้ลูกค้าได้ traffic ก่อน
|
||||
- **ระบบติดตาม trend ตลาด** — รู้ว่าตลาดกำลังไปทางไหนก่อนที่ลูกค้าจะรู้ตัว
|
||||
- **Stack:** JavaScript, Python, PHP, n8n, OpenAI API, Meta API, Google Analytics, Looker Studio — แล้วแต่งาน
|
||||
|
||||
## เรื่องเล่าจากลูกค้า
|
||||
|
||||
> "จ่ายไม่อั้นเปิดตลาดใหม่ให้ที"
|
||||
> — ลูกค้าหลังขยายช่องทางการตลาดสำเร็จ
|
||||
|
||||
> "ผลตอบรับดีเกินคาดแฮะ"
|
||||
> — ลูกค้าหลังปรับกลยุทธ์โฆษณา
|
||||
|
||||
> "ผมตามประชุมแต่ลูกค้าบอกว่า 'ไม่ต้องหรอก เพราะคนทักมาจนยุ่งไปหมดแล้ว'"
|
||||
> — ลูกค้าหลังใช้ระบบจองออนไลน์/แชทบอททำงานแทน
|
||||
|
||||
> "พี่คนโทรมาเพิ่มขึ้นครับ แถมถามสินค้าที่ไม่เคยมีคนถามด้วย"
|
||||
> — ลูกค้าหลัง SEO ติดอันดับและมีคนเข้าเว็บเพิ่ม
|
||||
|
||||
(เรื่องเล่าจากคำตอบลูกค้าจริง ที่ระบุไว้ในบริบทการสนทนาตอนเริ่มโปรเจกต์)
|
||||
|
||||
## ลูกค้าที่เหมาะกับเรา
|
||||
|
||||
- SME ที่ต้องการคนช่วยดูเรื่อง Online Marketing และระบบ IT
|
||||
- ลูกค้าที่ไม่มีความรู้ IT มาก แต่จำเป็นต้องใช้ระบบ IT
|
||||
- คนที่ต้องการที่ปรึกษาจริง ๆ ไม่ใช่คนมาขายของ
|
||||
|
||||
## ลูกค้าที่ไม่เหมาะ
|
||||
|
||||
- องค์กรขนาดใหญ่ที่ต้องการความเป็นทางการสูง + การเมืองเยอะ + ต้องสร้างภาพลักษณ์เกินตัว
|
||||
- คนที่อยากได้ของฟรี หรือจ่ายน้อยระดับพัน แต่คาดหวังงานระดับแสน
|
||||
- กลุ่ม IT ทั่วไป — เป็นคู่แข่งเกือบทั้งหมด ยกเว้นกลุ่มขาย Software เฉพาะทาง เช่น ERP
|
||||
|
||||
## กระบวนการทำงาน
|
||||
|
||||
1. **ปรึกษาฟรี 30-60 นาที** — คุยกับเจ้าของธุรกิจ ฟังปัญหา เป้าหมาย งบประมาณ ให้คำแนะนำเบื้องต้น ไม่ผูก commitment
|
||||
2. **วางแผน + ส่ง Proposal** — วิเคราะห์เชิงลึก ดูคู่แข่ง ส่ง Proposal เป็น PDF คุณอ่าน ถามคำถาม แก้ไข scope ได้ก่อนเซ็น
|
||||
3. **ดำเนินการ** — เราจะแจ้งความคืบหน้าของงานเป็นช่วง ๆ ผ่าน LINE Group ของโปรเจกต์ คุณเห็นว่าเราทำอะไรไปแล้วบ้าง และจะมี demo เมื่อเราพร้อมส่งงานรอบใหญ่ ๆ เท่านั้น — เราไม่อยากผูกมัดตัวเองกับ deadline แบบ sprint เพราะงานจริงไม่ได้แบ่งเป็นรอบสั้น ๆ ได้ตลอด
|
||||
4. **ส่งมอบ + ดูแล** — ส่งมอบงาน + อบรมทีม + มอบคู่มือ หลังส่งมอบ ถ้ามีการปรับเปลี่ยนเล็ก ๆ น้อย ๆ หรือแก้ไขจุดบกพร่อง เราจะดูแลให้โดยไม่คิดค่าใช้จ่ายเพิ่ม ยกเว้นกรณีที่เป็นการสร้าง feature ใหม่ หรือปรับแต่งครั้งใหญ่ เราจะคิดค่าใช้จ่ายเป็นครั้ง ๆ ไปตามขอบเขตงาน
|
||||
69
redesign-input/raw/src-content/pages/home.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
badge: "ที่ปรึกษาที่วางกลยุทธ์จากข้อมูล ไม่ใช่จากประสบการณ์ล้วน ๆ"
|
||||
title: "เว็บขายไม่ได้ โฆษณาเปลือง งานซ้ำเติมคน — เราแก้ให้ตรงจุด"
|
||||
subtitle: "รับทำเว็บ ที่ปรึกษาการตลาด และวางระบบ AI ในองค์กร เริ่มจากดูสถิติของคุณก่อน ไม่ใช่เดาว่าควรทำอะไร"
|
||||
problem_section_title: "4 ปัญหาที่เจอบ่อยที่สุด"
|
||||
problem_section_subtitle: "แต่ละข้อมีวิธีแก้ที่เจาะจง — เราไม่ได้บอกว่า 'เราทำได้หมด' แต่บอกว่า 'ถ้าเป็นแบบนี้ ทำแบบนี้'"
|
||||
service_section_title: "ทำอะไรได้บ้าง"
|
||||
service_section_subtitle: "เริ่มจากอันที่ปวดที่สุด ค่อยขยายไปอันอื่น"
|
||||
service_cta: "ดูบริการทั้งหมด"
|
||||
portfolio_section_badge: "ผลงานจริง ไม่ใช่ Mockup"
|
||||
portfolio_section_title: "ลูกค้าจริง ตัวเลขจริง"
|
||||
portfolio_section_subtitle: "คลิกดูเว็บจริงได้เลย"
|
||||
portfolio_cta: "ดูผลงานทั้งหมด"
|
||||
final_cta_title: "คุยกันก่อน 30 นาที ฟรี"
|
||||
final_cta_desc: "เราจะถามคำถาม 5 ข้อ แล้วบอกคุณได้เลยว่าควรเริ่มจากตรงไหน — จะบอกตรง ๆ ว่าทำได้หรือทำไม่ได้"
|
||||
final_cta_button: "นัดคุย 30 นาที"
|
||||
final_cta_line: "ทัก LINE: @moreminimore"
|
||||
final_cta_reassurance: "ไม่มี commitment · ไม่มี script sales · พูดตรง ๆ"
|
||||
---
|
||||
|
||||
# 4 ปัญหาที่ SME ไทยเจอบ่อยที่สุด
|
||||
|
||||
เราเจอปัญหาแบบนี้ซ้ำ ๆ กับลูกค้า 4 แบบ แต่ละแบบมีวิธีแก้ต่างกัน
|
||||
|
||||
## 1. ลงโฆษณาแล้วยอดไม่ขยับ
|
||||
|
||||
**อาการ:** คลิกเยอะ ยอดขายเท่าเดิม งบหม<E0B8AB>ไปกับคนที่ไม่ซื้อ
|
||||
|
||||
**สาเหตุส่วนใหญ่:** เลือกกลุ่มเป้าหมายผิด หรือยิงทุก Platform โดยไม่ดูว่าอันไหนคุ้ม
|
||||
|
||||
**เราแก้ยังไง:** ดูสถิติ 3 เดือนย้อนหลัง แยกว่า Platform ไหน Convert ดี ตัดอันที่เสียเงินเปล่า ปรับ Creative ให้ดึงดูดคนที่พร้อมจ่าย
|
||||
|
||||
> ตัวอย่าง: ลูกค้ารายหนึ่งเพิ่ม Impression 373% และเพิ่ม Click 114% ในเดือนแรก โดยใช้งบน้อยลง 28% — ดูเคสเต็มได้ที่หน้า Portfolio
|
||||
|
||||
## 2. เว็บมีคนเข้า แต่ไม่มีคนซื้อ
|
||||
|
||||
**อาการ:** Traffic เข้าพอสมควร แต่ไม่มีใครทัก ไม่มีใครโทร ตะกร้าค้าง
|
||||
|
||||
**สาเหตุส่วนใหญ่:** เว็บสวยแต่ไม่ได้ออกแบบมาให้คนซื้อ หรือมีจุดติดขัดที่ทำให้คนออกก่อนซื้อ
|
||||
|
||||
**เราแก้ยังไง:** ดู Heatmap ว่าคนเข้ามาแล้วทำอะไร ตรงไหนที่คนออก ตรงไหนที่คนค้าง ปรับจุดนั้น ๆ
|
||||
|
||||
> ตัวอย่าง: ลูกค้า B2B รายหนึ่งมีคนเข้าเว็บเยอะ แต่ไม่มี Lead — เพิ่ม Lead 2.4 เท่าใน 1 เดือน โดยไม่ต้องเพิ่มงบโฆษณา
|
||||
|
||||
## 3. งานซ้ำ ๆ ใช้เวลาคนเป็นชั่วโมงทุกวัน
|
||||
|
||||
**อาการ:** ทีมต้องคีย์ข้อมูล ทำรายงาน ตอบแชตเดิม ๆ จนไม่มีเวลาทำงานหลัก
|
||||
|
||||
**สาเหตุส่วนใหญ่:** ระบบเก่าที่ไม่ได้เชื่อมกัน หรือยังทำ Manual อยู่
|
||||
|
||||
**เราแก้ยังไง:** ดู Workflow ก่อน แล้วเลือกเครื่องมือที่เหมาะ — บางงานใช้ n8n บางงานเขียน Script บางงานใช้ AI
|
||||
|
||||
> ตัวอย่าง: บริษัทที่ปรึกษาขนาดเล็กใช้เวลาทำรายงาน 30+ ชม./เดือน — ลดเหลือ 2 ชม./เดือน
|
||||
|
||||
## 4. ใช้ AI แต่ไม่เห็นผล
|
||||
|
||||
**อาการ:** จ่ายแพง ใช้ AI ระดับ Frontier กับทุกงาน แต่ผลลัพธ์ไม่คุ้มเงิน
|
||||
|
||||
**สาเหตุส่วนใหญ่:** ใช้ AI ผิดแบบ — งานหลายอย่างใช้ Model ราคาถูกก็ได้ผลเท่า ๆ กัน
|
||||
|
||||
**เราแก้ยังไง:** เลือก AI ตามงาน ไม่ใช่เลือกของแพงสุด — เน้น Local LLM สำหรับงานที่ต้องการความลับ
|
||||
|
||||
> ตัวอย่าง: งาน 80% ของธุรกิจใช้ Model ราคาถูกได้ ประหยัดค่าใช้จ่ายได้มากกว่าครึ่ง
|
||||
|
||||
---
|
||||
|
||||
# เริ่มจากตรงไหนดี?
|
||||
|
||||
ถ้าไม่แน่ใจว่าปัญหาของคุณตรงกับข้อไหน — นัดคุย 30 นาทีฟรี เราจะช่วยดู
|
||||
12
redesign-input/raw/src-content/portfolio/baofuling.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "Baofuling Shop"
|
||||
url: "https://baofulingshop.com"
|
||||
category: "webdev"
|
||||
category_label: "Website Development"
|
||||
industry: "สินค้าความงาม"
|
||||
what_we_did: "พัฒนาเว็บไซต์ E-commerce ขายสินค้าสกินแคร์ พร้อมระบบตะกร้า + ชำระเงิน"
|
||||
result: "เว็บไซต์ขายของออนไลน์ครบวงจร ดูแลเองได้"
|
||||
thumbnail: "/images/portfolio/baofuling.png"
|
||||
featured: true
|
||||
order: 19
|
||||
---
|
||||
30
redesign-input/raw/src-content/portfolio/dataroot.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: "Dataroot"
|
||||
url: "https://erp.dataroot.asia"
|
||||
category: "consult"
|
||||
category_label: "Consult"
|
||||
industry: "ตัวแทนจำหน่าย Odoo ERP ในไทย"
|
||||
thumbnail: "/images/portfolio/dataroot.png"
|
||||
description: "ตัวแทนจำหน่าย Odoo ERP ในไทย วิเคราะห์กลุ่มเป้าหมาย ปรับโครงสร้างแคมเปญ และขยายช่องทาง Facebook"
|
||||
what_we_did: "วิเคราะห์ข้อมูลโฆษณา 3 เดือน เจาะกลุ่มเป้าหมายใหม่ และขยายช่องทาง Facebook"
|
||||
result: "Impression ↑373%, Click ↑114.2%, ad spend ↓28.3%"
|
||||
featured: true
|
||||
order: 1
|
||||
case_study: true
|
||||
---
|
||||
|
||||
## Study: Dataroot
|
||||
|
||||
Dataroot เป็นตัวแทนจำหน่าย Odoo ERP ในไทย เคสนี้ใช้เป็นตัวอย่างของการวางกลยุทธ์จากข้อมูลจริงก่อนตัดสินใจยิงโฆษณาเพิ่ม
|
||||
|
||||
## บริบท
|
||||
|
||||
แคมเปญเดิมยิงค่อนข้างกว้าง จึงเริ่มจากวิเคราะห์ข้อมูลโฆษณา 3 เดือนย้อนหลัง แล้วแยกกลุ่มเป้าหมายใหม่ให้ตรงกับความต้องการของตลาด ERP มากขึ้น
|
||||
|
||||
## ผลลัพธ์
|
||||
|
||||
- Impression เพิ่มขึ้น 373%
|
||||
- Click เพิ่มขึ้น 114.2%
|
||||
- Ad spend ลดลง 28.3%
|
||||
|
||||
[erp.dataroot.asia](https://erp.dataroot.asia) — เว็บปัจจุบันของ Dataroot
|
||||
12
redesign-input/raw/src-content/portfolio/jet-industries.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "Jet Industries"
|
||||
url: "https://jetindustries.co.th"
|
||||
category: "webdev"
|
||||
category_label: "Website Development"
|
||||
industry: "โรงงาน / B2B"
|
||||
what_we_did: "ออกแบบ + พัฒนาเว็บไซต์ B2B ทันสมัย"
|
||||
result: "เว็บไซต์ที่สื่อสารตรงกับกลุ่มลูกค้า B2B สมัครใช้งานง่ายขึ้น"
|
||||
thumbnail: "/images/portfolio/jetindustries.png"
|
||||
featured: true
|
||||
order: 18
|
||||
---
|
||||
12
redesign-input/raw/src-content/portfolio/lawyernoom.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "สำนักงานกฎหมาย ตถาตา"
|
||||
url: "https://lawyernoom.com"
|
||||
category: "webdev"
|
||||
category_label: "Website Development"
|
||||
industry: "สำนักงานกฎหมาย"
|
||||
what_we_did: "ออกแบบเว็บไซต์สำนักงานกฎหมาย น่าเชื่อถือ + SEO ท้องถิ่น"
|
||||
result: "เว็บไซต์มืออาชีพที่สร้างความเชื่อมั่นให้ลูกความ"
|
||||
thumbnail: "/images/portfolio/lawyernoom.png"
|
||||
featured: true
|
||||
order: 17
|
||||
---
|
||||
12
redesign-input/raw/src-content/portfolio/luadjob.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "เลือดจระเข้วานิไทย"
|
||||
url: "https://เลือดจระเข้วานิไทย.com"
|
||||
category: "consult, webdev"
|
||||
category_label: "Consult + Website Development"
|
||||
industry: "สินค้าอุปโภค / สุขภาพ"
|
||||
what_we_did: "พัฒนาเว็บไซต์ร้านค้าสมุนไพรและผลิตภัณฑ์เพื่อสุขภาพ"
|
||||
result: "เว็บไซต์ร้านค้าออนไลน์สำหรับผลิตภัณฑ์สุขภาพ"
|
||||
thumbnail: "/images/portfolio/luadjob.png"
|
||||
featured: true
|
||||
order: 16
|
||||
---
|
||||
12
redesign-input/raw/src-content/portfolio/lungfinler.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "Lungfinler"
|
||||
url: "https://lungfinler.com"
|
||||
category: "webdev"
|
||||
category_label: "Website Development"
|
||||
industry: "Digital Agency"
|
||||
what_we_did: "ออกแบบ + พัฒนาเว็บไซต์เอเจนซี่ดิจิตอล พร้อมระบบ Portfolio และ Blog"
|
||||
result: "เว็บไซต์เอเจนซี่ครบวงจร แสดงผลงานได้สวยงาม"
|
||||
thumbnail: "/images/portfolio/lungfinler.png"
|
||||
featured: true
|
||||
order: 15
|
||||
---
|
||||