# 🚀 SEO Multi-Channel Skills - Installation & Testing Guide **Last Updated:** 2026-03-08 **Status:** ✅ Ready for Testing --- ## 📦 INSTALLATION ### **Step 1: Install Python Dependencies** ```bash # Navigate to skills directory cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills # Option A: Install all at once (recommended) pip install "pythainlp[default]" pyyaml python-dotenv pandas aiohttp tqdm rich markdown python-frontmatter GitPython Pillow # Option B: Install per skill pip install -r seo-multi-channel/scripts/requirements.txt pip install -r seo-analyzers/scripts/requirements.txt ``` ### **Step 2: Verify Installation** ```bash # Test PyThaiNLP python3 -c "from pythainlp import word_tokenize; print(word_tokenize('บริการ podcast hosting'))" # Expected output: ['บริการ', ' ', 'podcast', ' ', 'hosting'] ``` ### **Step 3: Install with Conda (Alternative)** ```bash # If using conda instead of pip conda install pythainlp pip install pyyaml python-dotenv pandas tqdm rich ``` --- ## 🧪 TESTING COMMANDS ### **Test 1: Keyword Analyzer (seo-analyzers)** ```bash cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/seo-analyzers/scripts python3 thai_keyword_analyzer.py \ --text "บริการ podcast hosting ที่ดีที่สุดช่วยให้คุณเผยแพร่ podcast ไปยัง Apple Podcasts, Spotify ได้ง่าย" \ --keyword "บริการ podcast" \ --language th ``` **Expected Output:** ``` 📊 Keyword Analysis Results Keyword: บริการ podcast Word Count: 15 Occurrences: 2 Density: 13.33% (target: 1.0-1.5%) Status: too_high 💡 Recommendations: • ลดการใช้คำหลักลง อาจถูกมองว่า keyword stuffing ``` --- ### **Test 2: Readability Analyzer (seo-analyzers)** ```bash cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/seo-analyzers/scripts python3 thai_readability.py \ --text "มาเริ่ม podcast กันเลย! ไม่ต้องรอให้พร้อม 100% แค่มีไอเดียดีๆ กับไมค์หนึ่งอัน คุณก็เริ่มต้นได้แล้ว" \ --output text ``` **Expected Output:** ``` 📖 Thai Readability Analysis Sentence Count: 3 Word Count: 28 Avg Sentence Length: 9.3 words Grade Level: ง่าย (ม.6-ม.9) Formality: กันเอง (Casual) Readability Score: 75/100 ``` --- ### **Test 3: Content Quality Scorer (seo-analyzers)** ```bash cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/seo-analyzers/scripts python3 content_quality_scorer.py \ --text "# คู่มือ Podcast Hosting บริการ podcast hosting เป็นสิ่งสำคัญสำหรับ podcaster ทุกคน..." \ --keyword "podcast hosting" \ --output text ``` **Expected Output:** ``` ⭐ Content Quality Score Overall Score: 65.0/100 Status: fair Action: Address priority fixes Category Scores: • Keyword Optimization: 15/25 • Readability: 18/25 • Structure: 17/25 • Brand Voice: 15/25 ``` --- ### **Test 4: Multi-Channel Generation (seo-multi-channel)** ```bash cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/seo-multi-channel/scripts python3 generate_content.py \ --topic "บริการ podcast hosting" \ --channels facebook google_ads blog \ --language th \ --output test-output ``` **Expected Output:** ``` 🎯 Generating content for: บริการ podcast hosting 📱 Channels: facebook, google_ads, blog 🌐 Language: th Generating facebook... [Image Generation] Would generate image for facebook Topic: บริการ podcast hosting, Type: social Generating google_ads... Generating blog... ✅ Results saved to: output/บริการ-podcast-hosting/results.json 📊 Summary: Topic: บริการ podcast hosting Channels generated: 3 - facebook: 5 variations - google_ads: 3 variations - blog: 1 variations ✨ Done! ``` --- ### **Test 5: Create Context Files (seo-context)** ```bash cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/seo-context/scripts python3 context_manager.py \ --create \ --project "/Users/kunthawatgreethong/Gitea/opencode-skill/test-website" \ --industry "podcast" \ --formality "normal" ``` **OR using --action:** ```bash python3 context_manager.py \ --action create \ --project "/Users/kunthawatgreethong/Gitea/opencode-skill/test-website" \ --industry "podcast" ``` **Expected Output:** ``` 📝 Context Manager Project: /Users/kunthawatgreethong/Gitea/opencode-skill/test-website Creating context files... Industry: podcast Audience: Thai audience Formality: normal ✅ Context created successfully! 📁 Created files: ✓ brand-voice.md ✓ target-keywords.md ✓ seo-guidelines.md ✓ internal-links-map.md ✓ data-services.json ✓ style-guide.md 📍 Location: /Users/kunthawatgreethong/Gitea/opencode-skill/test-website/context ``` --- ## 🐛 TROUBLESHOOTING ### **Error: No module named 'pythainlp'** ```bash # Solution: Install PyThaiNLP pip install pythainlp # Or with conda conda install pythainlp ``` ### **Error: yaml.parser.ParserError** ```bash # Solution: Template files have been fixed # Pull latest version or manually fix YAML syntax # Check that template values don't have unquoted text with special chars ``` ### **Error: unrecognized arguments: --create** ```bash # Solution: Use either --create flag OR --action create python3 context_manager.py --create --project ./my-website # OR python3 context_manager.py --action create --project ./my-website ``` ### **Error: PyThaiNLP download failed** ```bash # Solution: Skip download - basic tokenizers work without it # PyThaiNLP includes built-in tokenizers that work immediately pip install pythainlp # That's enough for basic functionality ``` ### **Thai text displays as garbage characters** ```bash # Solution: Ensure UTF-8 encoding export PYTHONIOENCODING=utf-8 python3 your_script.py ``` --- ## 📊 EXPECTED BEHAVIOR ### **What Works Now:** ✅ Thai keyword density analysis ✅ Thai readability scoring ✅ Content quality scoring (0-100) ✅ Multi-channel content generation (structure) ✅ Context file creation ✅ YAML template loading ✅ CLI argument parsing ### **What's Placeholder:** ⏳ Actual content generation (returns template structure) ⏳ Image generation/edit integration (design ready) ⏳ Website auto-publish (design ready) ⏳ API connectors for analytics (manager pattern ready) --- ## 🎯 NEXT STEPS AFTER TESTING 1. **Run all 5 tests above** 2. **Report any bugs** (unexpected errors) 3. **Test with your real content** 4. **Customize templates** for your brand voice 5. **Integrate with actual LLM** for content generation (future) --- ## 📞 SUPPORT If you encounter issues: 1. Check error message carefully 2. Verify all dependencies installed 3. Try with simple Thai text first 4. Check file encoding is UTF-8 5. Report bug with full error traceback --- **All core features are implemented and ready for testing!** 🎉