- ✅ Ghost v5 running on Docker (port 2368)
- ✅ Custom theme v15 installed and working
- ✅ Theme includes lift-only hover animations
- ✅ All button/card hover behaviors fixed
- ✅ 24 blog posts extracted
- ✅ 43 static pages extracted
- ✅ 51 assets identified
- ✅ 8 shortcode types analyzed (62 total uses)
- ✅
hugo_extractor.py- Extracts all Hugo content - ✅
shortcode_converter.py- Converts Hugo shortcodes to HTML - ✅
ghost_importer.py- Imports content to Ghost via API - ✅
migrate.sh- Complete migration orchestration
Hugo Site (Production) → http://cybermonkey.net.au
Ghost Site (Ready) → http://localhost:2368
Migration Scripts → Ready to run
Custom Theme → Installed and active
- Company News (9 posts): Chamber membership, Microsoft sponsorship, directory listings
- Technical Guides (8 posts): Baby's first series, infrastructure docs
- Security Education (5 posts): Phishing guides, password managers
- Industry Analysis (2 posts): Privacy, surveillance, business compromise
- Core Pages: Homepage, About, Contact, Services
- Product Pages: Delphi XDR, Phishing Training, Persephone
- Resources: Education, guides, comparisons, FAQs
- Governance: 9 policy documents, licensing, accessibility
- Documentation: Technical docs, API references
card: 62 uses → ✅ Converted to HTML cards
grid: 22 uses → ✅ Converted to CSS Grid
btn: 11 uses → ✅ Converted to HTML buttons
section: 4 uses → ✅ Converted to HTML sections
cta: 3 uses → ✅ Converted to call-to-action blocks
current: 3 uses → ⚠️ Manual conversion needed
tabs: 2 uses → ✅ Converted to HTML tabs
recent: 1 uses → ✅ Converted to placeholder
cd /Users/henry/Dev/helen/migration
./migrate.shThis will:
- Extract all Hugo content
- Convert shortcodes
- Import to Ghost (with dry-run first)
- Generate migration report
# 1. Activate virtual environment
source venv/bin/activate
# 2. Extract content (already done)
python3 scripts/hugo_extractor.py --content-dir ../content --output-dir extracted
# 3. Convert shortcodes (already done)
python3 scripts/shortcode_converter.py --input-file extracted/hugo_posts.json --output-file converted/ghost_posts.json
python3 scripts/shortcode_converter.py --input-file extracted/hugo_pages.json --output-file converted/ghost_pages.json
# 4. Get Ghost Admin API key
# Visit: http://localhost:2368/ghost/
# Go to: Settings → Integrations → Create Custom Integration → Copy Admin API Key
# 5. Import to Ghost
python3 scripts/ghost_importer.py \
--ghost-url http://localhost:2368 \
--admin-key "YOUR_API_KEY_HERE" \
--posts-file converted/ghost_posts.json \
--pages-file converted/ghost_pages.json \
--static-assets ../static \
--dry-run # Remove for actual import- Site Settings: Title, description, timezone
- Navigation: Set up primary/secondary menus
- Design: Confirm custom theme is active
- Integrations: Configure analytics, email
- Unknown Shortcodes: 3
currentshortcodes need manual conversion - Image Paths: Verify all images uploaded correctly
- Internal Links: Update any broken cross-references
- Meta Data: Check titles, descriptions, tags
- URL Mapping: Set up redirects for changed URLs
- Sitemap: Verify Ghost sitemap generation
- Meta Tags: Confirm social sharing works
- Analytics: Connect Google Analytics/Tag Manager
Production: Hugo Site → cybermonkey.net.au (active)
Development: Ghost Site → localhost:2368 (ready)
- Week 1: Complete content migration to Ghost
- Week 2: Set up staging environment (Ghost on staging.cybermonkey.net.au)
- Week 3: User testing and final adjustments
- Week 4: Production cutover with redirects
/Users/henry/Dev/helen/
├── migration/
│ ├── scripts/ # Migration tools
│ ├── extracted/ # Hugo content (JSON)
│ ├── converted/ # Ghost-ready content
│ ├── assets/ # Static files
│ └── migrate.sh # Main migration script
├── hugo-to-ghost/
│ └── cybermonkey-ghost-theme-repo/ # Custom theme source
├── content/ # Original Hugo content
├── static/ # Original Hugo assets
└── HUGO_TO_GHOST_MIGRATION_PLAN.md # Comprehensive plan
Issue: {{< current >}} shortcode not converted
Files: 3 pages use this
Workaround: Replace with current date manually or JavaScript
Issue: Some Hugo features don't have Ghost equivalents
- Series/Categories: Converted to tags
- Hierarchical Content: Flattened structure
- Custom Templates: Adapted to Ghost's model
Issue: Hugo's JSON search not directly portable Status: Ghost theme includes basic search placeholder Future: Implement with Ghost Content API
- 100% Content Extracted: 24 posts + 43 pages
- 90%+ Shortcodes Converted: 97% automated conversion
- Theme Matching: Visual design preserved
- Zero Downtime: Dual-site approach ready
- SEO Preservation: URL redirects needed
- User Experience: Navigation/search to verify
All systems are ready for migration. The Hugo site can continue running while Ghost is being populated and tested.
Recommend next action:
- Run the migration script:
./migrate.sh - Review imported content in Ghost Admin
- Address the 3 manual shortcode conversions
- Plan staging environment deployment
Estimated time to complete migration: 2-4 hours Estimated time to production-ready: 1-2 weeks with testing