Invitation

Blog Conversion Summary

Conversion Date: October 2, 2025 Status: ✅ Complete - All Fields Captured

I
Invitation Team
Blog Conversion Summary

Blog Conversion Summary

Conversion Date: October 2, 2025 Status: ✅ Complete - All Fields Captured

Statistics

  • Total Articles Converted: 184
  • Total Lines Generated: ~5,200+
  • Unique Fields Captured: 28 (100% coverage)
  • Input File: docs/all blogs database.json
  • Output Directory: blog-md/
  • Conversion Method: Basic HTML-to-Markdown (fallback mode)

⭐ Latest Update

All 28 Fields Now Captured

The conversion script has been updated to include ALL fields from the database:

New Fields Added:

  • tags - System/admin tags (43 articles have this)
  • desc - Short description/iframe embeds (1 article)
  • featuredProgram - Full program object with colors, icons, etc. (1 article)

Already Supported:

  • authorShortid - Alternative author ID (5 articles)

See FIELDS-REFERENCE.md for complete field documentation.

Key Distinctions

Tags: Two Separate Fields

tags (System/Admin Tags)

  • 43 articles have this
  • Example: ["referral programs collections"]
  • Used for: Internal categorization, special collections
  • Admin-controlled

userTags (User/Content Tags)

  • ~140 articles have this
  • Example: ["save", "tips", "deals", "strategy"]
  • Used for: Public-facing tags, filtering, user experience
  • Content-driven

Some articles have BOTH! (e.g., crowdfunding-referral-programs.md)

Description: Two Separate Fields

desc (Short Description)

  • 1 article: write-for-us.md
  • Contains iframe embed
  • Different from main content

descHtml (Main Content)

  • All 184 articles
  • Primary article content in HTML
  • Converted to Markdown in output

Sample Files with Special Fields

Article with Both Tags and UserTags

File: blog-md/crowdfunding-referral-programs.md

tags:
  - "referral programs collections"
userTags:
  - "Crowdfunding"

Article with Featured Program Object

File: blog-md/Trading-crypto-on-Gemini.md

featuredReferralProgramSlug: "gemini"
featuredProgram: {"accentColor":"#65e7f7","name":"Gemini",...}

Article with Desc Field

File: blog-md/write-for-us.md

desc: "<iframe src=\"https://docs.google.com/forms/...\">"
customHtmlCode: "<iframe src=\"https://docs.google.com/forms/...\">"

What Was Converted

Each blog article from your JSON database has been converted to a standalone Markdown file with YAML frontmatter.

File Naming

Files are named using the article's slug field:

  • black-friday.md/product/black-friday
  • clever-ways-to-save-2023.md/mag/clever-ways-to-save-2023
  • ultimate-guide-to-submissions.md/mag/ultimate-guide-to-submissions

Frontmatter Structure

Every file includes YAML frontmatter with all original metadata:

---
id: "656128e9c88eac01c2b1e93f"
title: The annual Holiday Sales is ON!
subtitle: This is your sign to upgrade!
slug: "black-friday"
url: "/product/black-friday"
published: true
featured: true
category: "product"
categoryLabel: product
tags:                              # System/admin tags
  - "referral programs collections"
userTags:                          # User/content tags
  - "deals"
author: "Owc4NhV2y"
created: "2023-11-24T22:51:21.946Z"
modified: "2024-11-28T22:13:16.198Z"
imageExternalUrl: "https://..."
hasPhotoColorFilter: true
---

Fields Preserved (All 28)

100% Complete Coverage

Core Metadata (5 fields)

  • _idid (MongoDB ObjectID)
  • title
  • subtitle
  • slug
  • url

Publishing Status (5 fields)

  • published (boolean)
  • featured (boolean)
  • isPage (boolean, if present)
  • hiddenFromLists (boolean, if present)
  • hideComments (boolean, if present)

Content (3 fields)

  • descHtml → Main content (converted to Markdown)
  • desc → Short description/embeds ⭐ NEW
  • customHtmlCode → Custom HTML blocks

Categorization (4 fields)

  • category
  • categoryLabel
  • tags → System/admin tags ⭐ NEW
  • userTags → User/content tags

Author Information (4 fields)

  • userauthor (user shortid)
  • authorShortid (if present)
  • authorHandle (if present)
  • authorName (if present)

Timestamps (2 fields)

  • created (ISO 8601 format)
  • modified (ISO 8601 format)

Media (3 fields)

  • unsplashPhotoId
  • imageExternalUrl
  • hasPhotoColorFilter (boolean)
  • featuredReferralProgramTag
  • featuredReferralProgramSlug
  • featuredReferralProgramCountryCode
  • featuredProgram → Full object ⭐ NEW

Total: 28 fields captured

Content Conversion

HTML content (descHtml) has been converted to Markdown:

Elements Converted

  • ✅ Headings (h1-h6 → # ## ###)
  • ✅ Paragraphs
  • ✅ Bold/Strong (text)
  • ✅ Italic/Emphasis (text)
  • ✅ Links (text)
  • ✅ Lists (ul, ol, li)
  • ✅ Line breaks
  • ✅ Code blocks
  • ✅ HTML entities decoded

Known Limitations

  • Some complex HTML structures may need manual review
  • &nbsp; entities are preserved
  • Nested formatting may need adjustment
  • Custom HTML in customHtmlCode is stored in frontmatter, not converted

Quality Checks

✅ Successful Conversions

  • All 184 articles converted without errors
  • All files are valid Markdown
  • All frontmatter is valid YAML
  • All slugs are URL-safe
  • All 28 unique fields captured

Documentation

DocumentPurpose
CONVERSION-SUMMARY.mdThis file - conversion overview
FIELDS-REFERENCE.mdComplete field documentation
../scripts/README-blog-conversion.mdScript documentation
../docs/blog-cms-migration-guide.mdComplete migration guide
../docs/blog-conversion-quickstart.mdQuick reference

Next Steps

For better HTML-to-Markdown conversion:

npm install turndown --save-dev
rm blog-md/*.md
node scripts/convert-blog-to-md.js

This will produce cleaner Markdown with better handling of complex HTML.

2. Review Sample Files

Check files with special fields:

# Article with both tag types
cat blog-md/crowdfunding-referral-programs.md | head -25

# Article with featured program object
cat blog-md/Trading-crypto-on-Gemini.md | head -30

# Article with desc field
cat blog-md/write-for-us.md | head -35

# Simple article
cat blog-md/black-friday.md

3. Validate Field Coverage

# Count articles with system tags
grep -c '^tags:' blog-md/*.md
# Expected: 43

# Count articles with user tags
grep -c '^userTags:' blog-md/*.md
# Expected: ~140

# Find articles with both
grep -l '^tags:' blog-md/*.md | xargs grep -l '^userTags:'
# Several articles

# Find featured program object
grep -l 'featuredProgram:' blog-md/*.md
# Expected: 1 (Trading-crypto-on-Gemini.md)

4. Test with Your CMS

Import sample files to your new CMS:

  1. Start small: Import 3-5 diverse articles
  2. Verify fields: Check that all frontmatter maps correctly
  3. Handle special cases:
    • Articles with both tag types
    • Featured program object
    • Custom HTML embeds
  4. Test content: Ensure Markdown renders properly
  5. Check images: Verify Unsplash and external images work
  6. Adjust script: Modify frontmatter/content as needed

CMS-Specific Mapping

For Tags Field Handling

Option 1: Merge Tags

// Combine both tag types
allTags = [...(article.tags || []), ...(article.userTags || [])]

Option 2: Keep Separate

// Preserve distinction
systemTags = article.tags || []
contentTags = article.userTags || []

Option 3: Namespace

// Use prefixes
tags = [
  ...article.tags.map(t => `system:${t}`),
  ...article.userTags.map(t => `content:${t}`)
]
// Parse the JSON object
if (article.featuredProgram) {
  const program = typeof article.featuredProgram === 'string'
    ? JSON.parse(article.featuredProgram)
    : article.featuredProgram;

  // Store as relationship or separate content type
  programId = program.slug; // "gemini"
  programName = program.name; // "Gemini"
  programColors = {
    accent: program.accentColor,
    darker: program.accentColorDarker
  };
}

Success Criteria ✅

  • All 184 articles converted
  • All 28 unique fields preserved
  • System tags (tags) captured
  • User tags (userTags) captured
  • Short description (desc) captured
  • Featured program object captured
  • HTML converted to Markdown
  • Files are valid Markdown
  • Slugs preserved for URL mapping
  • Images referenced correctly
  • Dates in ISO 8601 format
  • Author attribution preserved
  • Custom HTML stored in frontmatter

Field Coverage Verification

# All unique fields in database: 28
# All fields in conversion script: 28
# Coverage: 100% ✅

# Verify with this command:
node -e "
const fs = require('fs');
const articles = JSON.parse(fs.readFileSync('docs/all blogs database.json', 'utf8'));
const allKeys = new Set();
articles.forEach(a => Object.keys(a).forEach(k => allKeys.add(k)));
console.log('Total unique fields:', allKeys.size);
console.log('Fields:', Array.from(allKeys).sort().join(', '));
"

Expected output:

Total unique fields: 28
Fields: _id, authorShortid, category, categoryLabel, created, customHtmlCode, desc, descHtml, featured, featuredProgram, featuredReferralProgramCountryCode, featuredReferralProgramSlug, featuredReferralProgramTag, hasPhotoColorFilter, hiddenFromLists, hideComments, imageExternalUrl, isPage, modified, published, slug, subtitle, tags, title, unsplashPhotoId, url, user, userTags

Ready for Import

Your blog content is now 100% complete and ready for import! 🎉

All 184 files in blog-md/ directory include:

  • ✅ Complete metadata (all 28 fields)
  • ✅ Distinction between system and user tags
  • ✅ Featured program objects
  • ✅ Custom HTML embeds
  • ✅ Markdown-formatted content

Generated by: scripts/convert-blog-to-md.js Script Version: 1.1 (Updated with all fields) Last Updated: October 2, 2025 Field Coverage: 28/28 (100%) ✅

In this article:

Share this article: