SiamCafe.net Blog
Technology

seo analysis คือ

seo analysis คอ
seo analysis คือ | SiamCafe Blog
2025-09-01· อ. บอม — SiamCafe.net· 1,695 คำ

SEO Analysis คืออะไร

SEO Analysis (การวิเคราะห์ SEO) คือกระบวนการตรวจสอบและประเมินประสิทธิภาพของเว็บไซต์ในแง่ Search Engine Optimization เพื่อหาจุดแข็ง จุดอ่อน และโอกาสในการปรับปรุงอันดับบน Google ครอบคลุม Technical SEO, On-page SEO, Off-page SEO, Content Analysis และ Competitor Analysis การทำ SEO Analysis เป็นประจำช่วยให้เว็บไซต์ติดอันดับสูงขึ้น มี organic traffic มากขึ้น และแปลงเป็นรายได้ได้ดีขึ้น บทความนี้อธิบายวิธีวิเคราะห์ SEO ครบทุกด้าน พร้อม Python tools สำหรับ automate การวิเคราะห์

SEO Analysis Components

# seo_components.py — SEO Analysis components
import json

class SEOComponents:
    COMPONENTS = {
        "technical": {
            "name": "Technical SEO",
            "description": "โครงสร้างเว็บไซต์ที่ search engine crawl และ index ได้ง่าย",
            "checks": [
                "Site speed (Core Web Vitals: LCP, FID, CLS)",
                "Mobile-friendliness (responsive design)",
                "SSL certificate (HTTPS)",
                "XML sitemap + robots.txt",
                "Canonical tags (ป้องกัน duplicate content)",
                "Structured data (Schema.org markup)",
                "Crawl errors (404, 500, redirect chains)",
            ],
        },
        "onpage": {
            "name": "On-page SEO",
            "description": "เนื้อหาและ HTML elements ในแต่ละหน้า",
            "checks": [
                "Title tag (50-60 ตัวอักษร, มี keyword)",
                "Meta description (150-160 ตัวอักษร)",
                "H1-H6 heading structure",
                "Keyword density (1-3%)",
                "Internal linking",
                "Image alt text",
                "URL structure (สั้น, มี keyword)",
            ],
        },
        "offpage": {
            "name": "Off-page SEO",
            "description": "สัญญาณภายนอกเว็บไซต์ — backlinks, social signals",
            "checks": [
                "Backlink profile (quality + quantity)",
                "Domain Authority / Domain Rating",
                "Referring domains diversity",
                "Anchor text distribution",
                "Social media signals",
                "Brand mentions",
            ],
        },
        "content": {
            "name": "Content Analysis",
            "description": "คุณภาพและความเกี่ยวข้องของเนื้อหา",
            "checks": [
                "Content quality (E-E-A-T: Experience, Expertise, Authority, Trust)",
                "Content freshness (อัปเดตเป็นประจำ)",
                "Content depth (ครอบคลุม topic)",
                "Keyword targeting (primary + secondary + LSI)",
                "Content gap analysis (topics ที่ยังไม่มี)",
            ],
        },
        "competitor": {
            "name": "Competitor Analysis",
            "description": "วิเคราะห์คู่แข่งเพื่อหาโอกาส",
            "checks": [
                "Competitor keywords (keywords ที่คู่แข่งติดอันดับ)",
                "Content comparison (เนื้อหาของคู่แข่ง)",
                "Backlink gap (backlinks ที่คู่แข่งมี เราไม่มี)",
                "SERP features (featured snippets, PAA)",
            ],
        },
    }

    def show_components(self):
        print("=== SEO Analysis Components ===\n")
        for key, comp in self.COMPONENTS.items():
            print(f"[{comp['name']}]")
            print(f"  {comp['description']}")
            for check in comp["checks"][:4]:
                print(f"  • {check}")
            print()

seo = SEOComponents()
seo.show_components()

Python SEO Analyzer

# seo_analyzer.py — Python SEO analysis tool
import json
import re

class SEOAnalyzer:
    CODE = """
# seo_tool.py — Automated SEO analysis
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import re

class PageSEOAnalyzer:
    def __init__(self, url):
        self.url = url
        self.soup = None
        self.issues = []
        self.scores = {}
    
    def fetch(self):
        resp = requests.get(self.url, timeout=10)
        self.soup = BeautifulSoup(resp.text, 'html.parser')
        self.status_code = resp.status_code
        self.response_time = resp.elapsed.total_seconds()
        return self
    
    def check_title(self):
        title = self.soup.find('title')
        if not title:
            self.issues.append(('critical', 'Missing title tag'))
            self.scores['title'] = 0
            return
        
        text = title.get_text().strip()
        length = len(text)
        
        if length < 30:
            self.issues.append(('warning', f'Title too short ({length} chars)'))
            self.scores['title'] = 50
        elif length > 60:
            self.issues.append(('warning', f'Title too long ({length} chars)'))
            self.scores['title'] = 70
        else:
            self.scores['title'] = 100
    
    def check_meta_description(self):
        meta = self.soup.find('meta', attrs={'name': 'description'})
        if not meta or not meta.get('content'):
            self.issues.append(('critical', 'Missing meta description'))
            self.scores['meta_desc'] = 0
            return
        
        length = len(meta['content'])
        if length < 120:
            self.issues.append(('warning', f'Meta description short ({length} chars)'))
            self.scores['meta_desc'] = 60
        elif length > 160:
            self.issues.append(('warning', f'Meta description long ({length} chars)'))
            self.scores['meta_desc'] = 70
        else:
            self.scores['meta_desc'] = 100
    
    def check_headings(self):
        h1s = self.soup.find_all('h1')
        if len(h1s) == 0:
            self.issues.append(('critical', 'Missing H1 tag'))
            self.scores['h1'] = 0
        elif len(h1s) > 1:
            self.issues.append(('warning', f'Multiple H1 tags ({len(h1s)})'))
            self.scores['h1'] = 60
        else:
            self.scores['h1'] = 100
    
    def check_images(self):
        images = self.soup.find_all('img')
        missing_alt = [img for img in images if not img.get('alt')]
        
        if missing_alt:
            self.issues.append(('warning', f'{len(missing_alt)} images missing alt text'))
            self.scores['images'] = max(0, 100 - len(missing_alt) * 10)
        else:
            self.scores['images'] = 100
    
    def check_links(self):
        links = self.soup.find_all('a', href=True)
        internal = [l for l in links if urlparse(l['href']).netloc in ('', urlparse(self.url).netloc)]
        external = [l for l in links if l not in internal]
        
        self.scores['internal_links'] = min(100, len(internal) * 5)
        self.scores['external_links'] = min(100, len(external) * 10)
    
    def full_analysis(self):
        self.fetch()
        self.check_title()
        self.check_meta_description()
        self.check_headings()
        self.check_images()
        self.check_links()
        
        overall = sum(self.scores.values()) / max(len(self.scores), 1)
        return {
            'url': self.url,
            'overall_score': round(overall, 1),
            'scores': self.scores,
            'issues': self.issues,
            'response_time': self.response_time,
        }

# Usage
analyzer = PageSEOAnalyzer('https://example.com')
result = analyzer.full_analysis()
print(f"Score: {result['overall_score']}/100")
for severity, issue in result['issues']:
    print(f"  [{severity.upper()}] {issue}")
"""

    def show_code(self):
        print("=== SEO Analyzer ===")
        print(self.CODE[:600])

analyzer = SEOAnalyzer()
analyzer.show_code()

SEO Tools

# seo_tools.py — SEO tools comparison
import json

class SEOTools:
    FREE_TOOLS = {
        "google_search_console": {
            "name": "Google Search Console",
            "description": "ดู keywords ที่ Google แสดงเว็บไซต์, clicks, impressions, CTR, position",
            "best_for": "Keyword performance, indexing issues, Core Web Vitals",
            "cost": "ฟรี",
        },
        "google_analytics": {
            "name": "Google Analytics 4",
            "description": "วิเคราะห์ traffic, user behavior, conversions",
            "best_for": "Traffic analysis, user journey, conversion tracking",
            "cost": "ฟรี",
        },
        "google_pagespeed": {
            "name": "Google PageSpeed Insights",
            "description": "วัด Core Web Vitals และ performance score",
            "best_for": "Site speed, mobile performance, CWV",
            "cost": "ฟรี",
        },
        "google_trends": {
            "name": "Google Trends",
            "description": "ดู trend ของ keywords ตาม timeline และ region",
            "best_for": "Keyword trends, seasonal content planning",
            "cost": "ฟรี",
        },
    }

    PAID_TOOLS = {
        "ahrefs": {
            "name": "Ahrefs",
            "description": "Backlink analysis, keyword research, site audit",
            "best_for": "Backlink analysis ดีที่สุด, competitor research",
            "cost": "$99-999/month",
        },
        "semrush": {
            "name": "SEMrush",
            "description": "All-in-one SEO toolkit — keyword, audit, content, PPC",
            "best_for": "Keyword research, content marketing, PPC analysis",
            "cost": "$119-449/month",
        },
        "screaming_frog": {
            "name": "Screaming Frog SEO Spider",
            "description": "Website crawler — technical SEO audit",
            "best_for": "Technical SEO audit, crawl analysis",
            "cost": "ฟรี (500 URLs) / £199/year (unlimited)",
        },
        "surfer": {
            "name": "Surfer SEO",
            "description": "Content optimization — วิเคราะห์ SERP แนะนำ content",
            "best_for": "Content optimization, NLP-based recommendations",
            "cost": "$49-199/month",
        },
    }

    def show_free(self):
        print("=== Free SEO Tools ===\n")
        for key, tool in self.FREE_TOOLS.items():
            print(f"[{tool['name']}] {tool['cost']}")
            print(f"  Best for: {tool['best_for']}")
            print()

    def show_paid(self):
        print("=== Paid SEO Tools ===")
        for key, tool in self.PAID_TOOLS.items():
            print(f"  [{tool['name']}] {tool['cost']} — {tool['best_for']}")

tools = SEOTools()
tools.show_free()
tools.show_paid()

Keyword Research

# keyword_research.py — Keyword research guide
import json
import random

class KeywordResearch:
    PROCESS = {
        "seed": {
            "name": "1. Seed Keywords",
            "description": "เริ่มจาก keywords กว้างๆ ที่เกี่ยวกับธุรกิจ",
            "example": "SEO, การตลาดออนไลน์, digital marketing",
        },
        "expand": {
            "name": "2. Expand Keywords",
            "description": "ใช้ tools ขยาย seed keywords เป็น long-tail keywords",
            "tools": "Google Autocomplete, People Also Ask, Ahrefs Keywords Explorer",
        },
        "analyze": {
            "name": "3. Analyze Metrics",
            "description": "วิเคราะห์ search volume, keyword difficulty, CPC",
            "metrics": "Volume > 100/month, KD < 30 (เริ่มต้น), CPC > 0 (commercial intent)",
        },
        "intent": {
            "name": "4. Search Intent",
            "description": "เข้าใจ intent ของ keyword — Informational, Commercial, Transactional, Navigational",
            "mapping": "Informational → blog, Commercial → comparison, Transactional → product page",
        },
        "prioritize": {
            "name": "5. Prioritize",
            "description": "เลือก keywords ที่มีโอกาสติดอันดับ + ตรง business goal",
            "formula": "Priority = (Volume × CTR potential) / Difficulty",
        },
    }

    def show_process(self):
        print("=== Keyword Research Process ===\n")
        for key, step in self.PROCESS.items():
            print(f"[{step['name']}]")
            print(f"  {step['description']}")
            print()

    def keyword_example(self):
        print("=== Keyword Analysis Example ===")
        keywords = [
            {"keyword": "seo analysis คือ", "volume": random.randint(500, 2000), "kd": random.randint(10, 30), "intent": "Informational"},
            {"keyword": "seo analysis tool", "volume": random.randint(1000, 5000), "kd": random.randint(20, 50), "intent": "Commercial"},
            {"keyword": "seo audit free", "volume": random.randint(500, 3000), "kd": random.randint(15, 40), "intent": "Transactional"},
            {"keyword": "วิเคราะห์ seo เว็บไซต์", "volume": random.randint(200, 1000), "kd": random.randint(5, 20), "intent": "Informational"},
        ]
        print(f"  {'Keyword':<30} {'Volume':>8} {'KD':>5} {'Intent':<15}")
        print(f"  {'-'*60}")
        for kw in keywords:
            print(f"  {kw['keyword']:<30} {kw['volume']:>8} {kw['kd']:>5} {kw['intent']:<15}")

kr = KeywordResearch()
kr.show_process()
kr.keyword_example()

SEO Audit Checklist

# audit_checklist.py — SEO audit checklist
import json

class SEOAuditChecklist:
    CHECKLIST = {
        "technical": [
            "HTTPS enabled (SSL certificate)",
            "Mobile-friendly (responsive design)",
            "Site speed < 3 seconds (LCP < 2.5s)",
            "XML sitemap submitted to GSC",
            "robots.txt ไม่ block important pages",
            "No broken links (404 errors)",
            "Canonical tags ถูกต้อง",
            "Schema markup (Organization, Article, FAQ)",
            "Hreflang tags (ถ้ามีหลายภาษา)",
        ],
        "onpage": [
            "Title tags unique ทุกหน้า (50-60 chars)",
            "Meta descriptions unique (150-160 chars)",
            "H1 tag มี 1 อัน per page",
            "H2-H6 structure ถูกต้อง",
            "Images มี alt text",
            "Internal links เชื่อมหน้าสำคัญ",
            "URL สั้น มี keyword",
            "Content > 1,000 words (สำหรับ blog)",
        ],
        "offpage": [
            "Backlinks จาก high-authority sites",
            "Anchor text หลากหลาย (branded + keyword + generic)",
            "No toxic/spam backlinks",
            "Google Business Profile (ถ้ามี local business)",
            "Social media profiles active",
        ],
        "content": [
            "Target keyword ใน title, H1, first paragraph",
            "Content ตอบ search intent",
            "No duplicate content",
            "Content updated ภายใน 6 เดือน",
            "FAQ section (ช่วยได้ featured snippets)",
        ],
    }

    def show_checklist(self):
        print("=== SEO Audit Checklist ===\n")
        for category, items in self.CHECKLIST.items():
            print(f"[{category.upper()}]")
            for item in items[:5]:
                print(f"  □ {item}")
            print()

    def scoring(self):
        print("=== SEO Score Guide ===")
        scores = [
            {"range": "90-100", "grade": "A", "status": "ดีมาก — maintain + optimize"},
            {"range": "70-89", "grade": "B", "status": "ดี — fix medium issues"},
            {"range": "50-69", "grade": "C", "status": "ปานกลาง — fix critical + medium"},
            {"range": "30-49", "grade": "D", "status": "ต้องปรับปรุงมาก"},
            {"range": "0-29", "grade": "F", "status": "ต้อง overhaul ทั้งระบบ"},
        ]
        for s in scores:
            print(f"  [{s['grade']}] {s['range']:>6} — {s['status']}")

audit = SEOAuditChecklist()
audit.show_checklist()
audit.scoring()

FAQ - คำถามที่พบบ่อย

Q: SEO Analysis ต้องทำบ่อยแค่ไหน?

A: Technical audit: ทุกเดือน (automated) หรือทุกไตรมาส (manual) Keyword tracking: ทุกสัปดาห์ Content audit: ทุก 3-6 เดือน Backlink monitoring: ทุกเดือน Competitor analysis: ทุกไตรมาส ใช้ tools อย่าง Google Search Console ดูข้อมูลทุกสัปดาห์

Q: เริ่มทำ SEO Analysis อย่างไร?

A: Step 1: Setup Google Search Console + Google Analytics (ฟรี) Step 2: Crawl เว็บด้วย Screaming Frog (ฟรี 500 URLs) Step 3: ตรวจ Core Web Vitals (PageSpeed Insights) Step 4: วิเคราะห์ keywords ที่ติดอันดับ (GSC) Step 5: ดู backlinks (Ahrefs free backlink checker) Step 6: แก้ไข critical issues ก่อน → medium → low

Q: Core Web Vitals สำคัญแค่ไหน?

A: Google ใช้เป็น ranking factor ตั้งแต่ 2021 LCP (Largest Contentful Paint): < 2.5s = ดี FID (First Input Delay): < 100ms = ดี (เปลี่ยนเป็น INP แล้ว) CLS (Cumulative Layout Shift): < 0.1 = ดี ส่งผลต่อ ranking โดยเฉพาะ mobile — ต้อง optimize

Q: Tool ไหนดีที่สุดสำหรับ SEO Analysis?

A: ฟรี: Google Search Console + Google Analytics + Screaming Frog Budget: Ubersuggest ($29/month) หรือ SE Ranking Professional: Ahrefs ($99/month) หรือ SEMrush ($119/month) Enterprise: SEMrush Enterprise หรือ BrightEdge เริ่มจาก: GSC + GA ฟรี → เพิ่ม Ahrefs/SEMrush เมื่อ serious

📖 บทความที่เกี่ยวข้อง

onpage seo คืออ่านบทความ → xauusd 5m chart analysisอ่านบทความ → forex gold fundamental analysisอ่านบทความ →

📚 ดูบทความทั้งหมด →