{
  "schemaVersion": "1.0",
  "item": {
    "slug": "md2pdf-converter",
    "name": "Markdown to PDF Converter (v2.0)",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/tianxingleo/md2pdf-converter",
    "canonicalUrl": "https://clawhub.ai/tianxingleo/md2pdf-converter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/md2pdf-converter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=md2pdf-converter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/generate_emoji_mapping.py",
      "scripts/md2pdf-local.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/md2pdf-converter"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/md2pdf-converter",
    "agentPageUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "Convert Markdown documents to professional PDFs with FULL Unicode support, Chinese fonts, and colorful emojis (3660 emojis including all variants). Uses Pandoc + WeasyPrint with a local Twemoji cache to work offline after first run."
      },
      {
        "title": "Quick Start",
        "body": "Convert a Markdown file to PDF:\n\nbash scripts/md2pdf-local.sh input.md output.pdf\n\nFirst run only: Downloads ~150MB emoji resources (Twemoji 14.0.0) from GitHub. Subsequent runs work offline.\n\nExample:\n\nbash scripts/md2pdf-local.sh report.md report.pdf"
      },
      {
        "title": "Features",
        "body": "✅ Full Unicode support (Chinese, Japanese, Korean)\n✅ Complete emoji support (Twemoji 14.0.0, 3660 colorful PNGs)\n✅ All emoji variants (skin tones, hair styles, regional flags, etc.)\n✅ Offline operation after initial setup\n✅ Professional PDF layout with page numbers\n✅ Code highlighting, tables, blockquotes\n✅ Accurate emoji mapping via Python pre-generated lookup table"
      },
      {
        "title": "Dependencies",
        "body": "Pandoc - Universal document converter\nWeasyPrint - CSS-to-PDF renderer\nPython 3 - For emoji mapping generation\nwget - For emoji download (first run only)"
      },
      {
        "title": "How It Works",
        "body": "First run: Downloads Twemoji 14.0.0 to ~/.cache/md2pdf/emojis/\nPython script: Generates emoji → filename mapping table (emoji_mapping.json)\nPandoc: Converts Markdown to HTML with a Lua filter that replaces emoji characters with local image references\nWeasyPrint: Renders HTML to PDF using:\n\nAR PL UMing CN for Chinese characters\nLocal emoji images (PNG, 72x72px, colorful)\nProfessional CSS styling"
      },
      {
        "title": "Emoji Cache Location",
        "body": "~/.cache/md2pdf/\n├── emojis/                    # 3660 colorful PNG files\n│   ├── 0023-fe0f-20e3.png\n│   ├── 1f600.png\n│   └── ...\n└── emoji_mapping.json         # Emoji to filename mapping\n    {\n      \"🙀\": \"1f600.png\",\n      \"⌛\": \"0023-fe0f-20e3.png\",\n      ...\n    }"
      },
      {
        "title": "Emoji Mapping",
        "body": "The Python script generate_emoji_mapping.py scans all Twemoji files and creates a precise mapping from emoji characters to PNG filenames. This ensures accurate emoji replacement even for complex variants like skin tones and regional indicators."
      },
      {
        "title": "Fonts",
        "body": "Primary Chinese font: AR PL UMing CN\n\nFallback: Noto Sans SC, Noto Sans CJK SC, Microsoft YaHei\n\nMonospace: Menlo, Monaco"
      },
      {
        "title": "v2.0 (Current)",
        "body": "✅ Switched to Twemoji 14.0.0 (complete version)\n✅ 3660 colorful emojis (including all variants)\n✅ Python pre-generated mapping for accurate emoji replacement\n✅ Fixed black-and-white emoji display issue\n✅ Proper support for emoji variants (skin tones, hair styles, etc.)"
      },
      {
        "title": "v1.0 (Previous)",
        "body": "Used emoji-datasource-google (~2000-3000 emojis)\nSimple hex-based filename matching (inaccurate for variants)\nSome emojis displayed as Unicode characters (black-and-white)"
      },
      {
        "title": "Font Issues",
        "body": "If Chinese characters display incorrectly, ensure AR PL UMing CN is installed:\n\n# Ubuntu/Debian\nsudo apt-get install fonts-arphic-uming\n\n# Check if installed\nfc-list | grep \"AR PL UMing\""
      },
      {
        "title": "Emoji Not Showing",
        "body": "Check if emoji cache exists: ls ~/.cache/md2pdf/emojis/\nCheck if mapping exists: ls ~/.cache/md2pdf/emoji_mapping.json\nIf missing, delete cache and re-run: rm -rf ~/.cache/md2pdf\nVerify emoji file exists: ls ~/.cache/md2pdf/emojis/1f600.png"
      },
      {
        "title": "Emoji Displaying as Black-and-White",
        "body": "This issue has been FIXED in v2.0. If you still see black-and-white emojis:\n\nVerify you're using the v2.0 script:\ngrep \"TWEMOJI_VERSION\" scripts/md2pdf-local.sh\n# Should show: TWEMOJI_VERSION=\"14.0.0\"\n\n\n\nClear cache and regenerate:\nrm -rf ~/.cache/md2pdf\nbash scripts/md2pdf-local.sh test.md test.pdf"
      },
      {
        "title": "WeasyPrint Errors",
        "body": "Install missing dependencies:\n\n# Ubuntu/Debian\nsudo apt-get install python3-weasyprint\n\n# Or via pip\npip3 install weasyprint"
      },
      {
        "title": "Python Script Errors",
        "body": "If generate_emoji_mapping.py fails:\n\n# Check Python version\npython3 --version\n# Should be Python 3.6+\n\n# Check emoji cache\nls ~/.cache/md2pdf/emojis"
      },
      {
        "title": "scripts/",
        "body": "md2pdf-local.sh - Main conversion script with automatic emoji caching and mapping\n\ngenerate_emoji_mapping.py - Python script to generate emoji lookup table\n\nUsage: Direct execution from any location (uses absolute paths):\n\nbash /path/to/skills/md2pdf-converter/scripts/md2pdf-local.sh input.md output.pdf\n\nKey Features:\n\nAutomatic Twemoji download and caching\nPython pre-generated emoji mapping (accurate)\nLua filter for emoji replacement\nCSS styling for professional output\nTemporary file cleanup (automatic)"
      },
      {
        "title": "Comparison: v1.0 vs v2.0",
        "body": "Featurev1.0 (Old)v2.0 (New)Emoji Sourceemoji-datasource-googleTwemoji 14.0.0Emoji Count~2000-30003660Color Display❌ Unstable✅ StableVariants Support❌ Incomplete✅ CompleteMapping Accuracy⚠️ Low✅ HighOffline Support✅ After first run✅ After first runFirst Run Size~68MB~150MB"
      },
      {
        "title": "Performance",
        "body": "First run: ~150MB download, 10-30 seconds (depending on network)\nSubsequent runs: Offline, seconds-level conversion\nMemory usage: ~150MB for emoji cache\nPDF generation: 1-5 seconds per page"
      },
      {
        "title": "Limitations",
        "body": "Missing emojis (newer than Twemoji 14.0.0) will display as Unicode characters\nFirst run requires internet connection (for Twemoji download)\nEmoji cache size: ~150MB (3660 PNG files at 72x72px)"
      }
    ],
    "body": "Markdown to PDF Converter (Complete Version)\nOverview\n\nConvert Markdown documents to professional PDFs with FULL Unicode support, Chinese fonts, and colorful emojis (3660 emojis including all variants). Uses Pandoc + WeasyPrint with a local Twemoji cache to work offline after first run.\n\nQuick Start\n\nConvert a Markdown file to PDF:\n\nbash scripts/md2pdf-local.sh input.md output.pdf\n\n\nFirst run only: Downloads ~150MB emoji resources (Twemoji 14.0.0) from GitHub. Subsequent runs work offline.\n\nExample:\n\nbash scripts/md2pdf-local.sh report.md report.pdf\n\nFeatures\n✅ Full Unicode support (Chinese, Japanese, Korean)\n✅ Complete emoji support (Twemoji 14.0.0, 3660 colorful PNGs)\n✅ All emoji variants (skin tones, hair styles, regional flags, etc.)\n✅ Offline operation after initial setup\n✅ Professional PDF layout with page numbers\n✅ Code highlighting, tables, blockquotes\n✅ Accurate emoji mapping via Python pre-generated lookup table\nTechnical Details\nDependencies\nPandoc - Universal document converter\nWeasyPrint - CSS-to-PDF renderer\nPython 3 - For emoji mapping generation\nwget - For emoji download (first run only)\nHow It Works\nFirst run: Downloads Twemoji 14.0.0 to ~/.cache/md2pdf/emojis/\nPython script: Generates emoji → filename mapping table (emoji_mapping.json)\nPandoc: Converts Markdown to HTML with a Lua filter that replaces emoji characters with local image references\nWeasyPrint: Renders HTML to PDF using:\nAR PL UMing CN for Chinese characters\nLocal emoji images (PNG, 72x72px, colorful)\nProfessional CSS styling\nEmoji Cache Location\n~/.cache/md2pdf/\n├── emojis/                    # 3660 colorful PNG files\n│   ├── 0023-fe0f-20e3.png\n│   ├── 1f600.png\n│   └── ...\n└── emoji_mapping.json         # Emoji to filename mapping\n    {\n      \"🙀\": \"1f600.png\",\n      \"⌛\": \"0023-fe0f-20e3.png\",\n      ...\n    }\n\nEmoji Mapping\n\nThe Python script generate_emoji_mapping.py scans all Twemoji files and creates a precise mapping from emoji characters to PNG filenames. This ensures accurate emoji replacement even for complex variants like skin tones and regional indicators.\n\nFonts\n\nPrimary Chinese font: AR PL UMing CN\n\nFallback: Noto Sans SC, Noto Sans CJK SC, Microsoft YaHei\n\nMonospace: Menlo, Monaco\n\nVersion History\nv2.0 (Current)\n✅ Switched to Twemoji 14.0.0 (complete version)\n✅ 3660 colorful emojis (including all variants)\n✅ Python pre-generated mapping for accurate emoji replacement\n✅ Fixed black-and-white emoji display issue\n✅ Proper support for emoji variants (skin tones, hair styles, etc.)\nv1.0 (Previous)\nUsed emoji-datasource-google (~2000-3000 emojis)\nSimple hex-based filename matching (inaccurate for variants)\nSome emojis displayed as Unicode characters (black-and-white)\nTroubleshooting\nFont Issues\n\nIf Chinese characters display incorrectly, ensure AR PL UMing CN is installed:\n\n# Ubuntu/Debian\nsudo apt-get install fonts-arphic-uming\n\n# Check if installed\nfc-list | grep \"AR PL UMing\"\n\nEmoji Not Showing\nCheck if emoji cache exists: ls ~/.cache/md2pdf/emojis/\nCheck if mapping exists: ls ~/.cache/md2pdf/emoji_mapping.json\nIf missing, delete cache and re-run: rm -rf ~/.cache/md2pdf\nVerify emoji file exists: ls ~/.cache/md2pdf/emojis/1f600.png\nEmoji Displaying as Black-and-White\n\nThis issue has been FIXED in v2.0. If you still see black-and-white emojis:\n\nVerify you're using the v2.0 script:\n\ngrep \"TWEMOJI_VERSION\" scripts/md2pdf-local.sh\n# Should show: TWEMOJI_VERSION=\"14.0.0\"\n\n\nClear cache and regenerate:\n\nrm -rf ~/.cache/md2pdf\nbash scripts/md2pdf-local.sh test.md test.pdf\n\nWeasyPrint Errors\n\nInstall missing dependencies:\n\n# Ubuntu/Debian\nsudo apt-get install python3-weasyprint\n\n# Or via pip\npip3 install weasyprint\n\nPython Script Errors\n\nIf generate_emoji_mapping.py fails:\n\n# Check Python version\npython3 --version\n# Should be Python 3.6+\n\n# Check emoji cache\nls ~/.cache/md2pdf/emojis\n\nResources\nscripts/\n\nmd2pdf-local.sh - Main conversion script with automatic emoji caching and mapping\n\ngenerate_emoji_mapping.py - Python script to generate emoji lookup table\n\nUsage: Direct execution from any location (uses absolute paths):\n\nbash /path/to/skills/md2pdf-converter/scripts/md2pdf-local.sh input.md output.pdf\n\n\nKey Features:\n\nAutomatic Twemoji download and caching\nPython pre-generated emoji mapping (accurate)\nLua filter for emoji replacement\nCSS styling for professional output\nTemporary file cleanup (automatic)\nComparison: v1.0 vs v2.0\nFeature\tv1.0 (Old)\tv2.0 (New)\nEmoji Source\temoji-datasource-google\tTwemoji 14.0.0\nEmoji Count\t~2000-3000\t3660\nColor Display\t❌ Unstable\t✅ Stable\nVariants Support\t❌ Incomplete\t✅ Complete\nMapping Accuracy\t⚠️ Low\t✅ High\nOffline Support\t✅ After first run\t✅ After first run\nFirst Run Size\t~68MB\t~150MB\nPerformance\nFirst run: ~150MB download, 10-30 seconds (depending on network)\nSubsequent runs: Offline, seconds-level conversion\nMemory usage: ~150MB for emoji cache\nPDF generation: 1-5 seconds per page\nLimitations\nMissing emojis (newer than Twemoji 14.0.0) will display as Unicode characters\nFirst run requires internet connection (for Twemoji download)\nEmoji cache size: ~150MB (3660 PNG files at 72x72px)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tianxingleo/md2pdf-converter",
    "publisherUrl": "https://clawhub.ai/tianxingleo/md2pdf-converter",
    "owner": "tianxingleo",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/md2pdf-converter",
    "downloadUrl": "https://openagent3.xyz/downloads/md2pdf-converter",
    "agentUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/md2pdf-converter/agent.md"
  }
}