Skip to content

Tools and Plugins

Choosing the right tools and plugins can greatly improve the efficiency and quality of Markdown writing. This guide introduces various types of tools to help you build a complete Markdown workflow.

Professional Code Editors

Visual Studio Code

Features: Free, cross-platform, rich plugins

markdown
Recommended plugins:
- Markdown All in One: All-in-one Markdown support
- Markdown Preview Enhanced: Enhanced preview
- markdownlint: Syntax checking and linting
- Paste Image: Quick image pasting
- Table Editor: Visual table editing
- Math to Image: Convert math formulas to images

Configuration Example:

json
{
  "markdown.preview.fontSize": 14,
  "markdown.preview.lineHeight": 1.6,
  "markdown.extension.toc.levels": "1..6",
  "markdown.extension.print.absoluteImgPath": false,
  "[markdown]": {
    "editor.wordWrap": "on",
    "editor.lineNumbers": "on",
    "editor.quickSuggestions": false
  }
}

Typora

Features: WYSIWYG, clean interface, rich themes

markdown
Main features:
- Real-time preview editing
- Math formula support
- Integrated chart drawing
- Export to multiple formats
- Auto image copy
- Visual table editing

Mark Text

Features: Open source, real-time preview, excellent performance

markdown
Core features:
- Real-time preview rendering
- Focus mode
- Math formula support
- Flowchart support
- Multiple export formats
- Custom themes

Online Editors

StackEdit

Features: Browser-based, cloud sync, collaboration

markdown
Highlights:
- Real-time sync to Google Drive, Dropbox
- Publish to GitHub, blog platforms
- Offline editing support
- Math formulas and charts
- Collaborative editing
- Version history

Dillinger

Features: Simple interface, multi-platform integration

markdown
Integrated platforms:
- GitHub
- Dropbox
- Google Drive
- OneDrive
- Export to HTML, PDF
- Real-time preview

HackMD

Features: Team collaboration, presentation features

markdown
Collaboration features:
- Multi-user real-time editing
- Comment system
- Version control
- Permission management
- Presentation mode
- Book mode

Preview and Conversion Tools

Static Site Generators

VitePress

Features: Vue ecosystem, excellent performance, modern

javascript
// .vitepress/config.js
export default {
  title: 'My Documentation',
  description: 'A VitePress site',
  
  themeConfig: {
    nav: [
      { text: 'Home', link: '/' },
      { text: 'Guide', link: '/guide/' }
    ],
    
    sidebar: {
      '/guide/': [
        {
          text: 'Getting Started',
          items: [
            { text: 'Introduction', link: '/guide/introduction' },
            { text: 'Installation', link: '/guide/installation' }
          ]
        }
      ]
    }
  },
  
  markdown: {
    math: true,
    mermaid: true,
    lineNumbers: true
  }
}

GitBook

Features: Beautiful interface, team collaboration, version management

markdown
Feature highlights:
- Modern reading experience
- Team collaborative editing
- Multi-format export
- Search functionality
- Integrated analytics
- API documentation generation

Docusaurus

Features: Facebook open source, React ecosystem, multilingual support

javascript
// docusaurus.config.js
module.exports = {
  title: 'My Site',
  tagline: 'The tagline of my site',
  url: 'https://your-docusaurus-test-site.com',
  
  presets: [
    [
      '@docusaurus/preset-classic',
      {
        docs: {
          sidebarPath: require.resolve('./sidebars.js'),
          editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/',
        },
        blog: {
          showReadingTime: true,
          editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/blog/',
        },
        theme: {
          customCss: require.resolve('./src/css/custom.css'),
        },
      },
    ],
  ],
  
  themeConfig: {
    navbar: {
      title: 'My Site',
      logo: {
        alt: 'My Site Logo',
        src: 'img/logo.svg',
      },
    },
  },
};

Format Conversion Tools

Pandoc

Features: Universal converter, CLI tool, rich formats

bash
# Markdown to PDF
pandoc document.md -o document.pdf

# Markdown to Word
gpandoc document.md -o document.docx

# Markdown to HTML (custom style)
pandoc document.md -s --css=style.css -o document.html

# Batch conversion
find . -name "*.md" -exec pandoc {} -o {}.pdf \;

# Use template
pandoc document.md --template=template.html -o output.html

# Generate TOC
pandoc document.md --toc --toc-depth=3 -o document.pdf

markdownlint

Features: Syntax checking, unified standards, auto-fix

bash
# Install
npm install -g markdownlint-cli

# Check a single file
markdownlint README.md

# Check a directory
markdownlint docs/

# Auto-fix
markdownlint --fix *.md

# Use config file
markdownlint --config .markdownlint.json docs/

Configuration Example:

json
{
  "default": true,
  "MD013": {
    "line_length": 120,
    "code_blocks": false,
    "tables": false
  },
  "MD033": {
    "allowed_elements": ["div", "span", "img", "a"]
  },
  "MD041": false
}

Image and Media Tools

Image Processing Tools

PicGo

Features: Auto upload, multi-platform support, plugin extensions

markdown
Supported platforms:
- Qiniu Cloud
- Tencent Cloud COS
- Upyun
- GitHub
- Alibaba Cloud OSS
- Imgur
- Custom upload

Configuration Example:

json
{
  "picBed": {
    "uploader": "github",
    "github": {
      "repo": "username/image-repo",
      "token": "your_github_token",
      "path": "images/",
      "customUrl": "https://cdn.jsdelivr.net/gh/username/image-repo",
      "branch": "main"
    }
  },
  "settings": {
    "autoRename": true,
    "uploadNotification": true
  }
}

ImageOptim / TinyPNG

Features: Image compression, reduce size, maintain quality

bash
# Use ImageOptim CLI
imageoptim *.png *.jpg

# Use TinyPNG API
curl --user api:YOUR_API_KEY \
     --data-binary @original.png \
     --output compressed.png \
     https://api.tinify.com/shrink

Chart Generation Tools

draw.io (diagrams.net)

Features: Free, powerful, multi-format export

markdown
Use cases:
- System architecture diagrams
- Flowchart design
- UML diagrams
- Network topology diagrams
- Mind maps
- Prototyping

Excalidraw

Features: Hand-drawn style, collaborative editing, easy to use

markdown
Special features:
- Hand-drawn style diagrams
- Real-time collaboration
- Offline use
- Export PNG/SVG
- Library management
- Infinite canvas

Documentation Management Platforms

Team Collaboration Tools

Notion

Features: All-in-one workspace, database functions, rich templates

markdown
Document features:
- Hierarchical page structure
- Real-time collaborative editing
- Database integration
- Template system
- Multimedia support
- API integration

Confluence

Features: Enterprise-grade, permission management, strong integration

markdown
Enterprise features:
- Advanced permission control
- Approval workflows
- Brand customization
- Enterprise integration
- Advanced search
- Analytics reports

GitBook

Features: Developer-friendly, version control, beautiful interface

markdown
Core advantages:
- Git integration
- Version history
- Team collaboration
- Custom domain
- Search functionality
- Analytics data

Publishing Platforms

GitHub Pages

Features: Free hosting, version control, custom domain

yaml
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    
    - name: Setup Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '16'
        
    - name: Install dependencies
      run: npm install
      
    - name: Build
      run: npm run build
      
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./dist

Netlify

Features: Fast deployment, CDN acceleration, form handling

toml
# netlify.toml
[build]
  publish = "dist"
  command = "npm run build"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

[build.environment]
  NODE_VERSION = "16"

Vercel

Features: Zero-config deployment, global CDN, preview deployments

json
{
  "builds": [
    {
      "src": "package.json",
      "use": "@vercel/static-build",
      "config": {
        "distDir": "dist"
      }
    }
  ],
  "routes": [
    {
      "handle": "filesystem"
    },
    {
      "src": "/(.*)",
      "dest": "/index.html"
    }
  ]
}

Automation Tools

CI/CD Integration

GitHub Actions

Workflow Example:

yaml
name: Documentation Build and Deploy

on:
  push:
    branches: [ main ]
    paths: [ 'docs/**' ]
  pull_request:
    branches: [ main ]
    paths: [ 'docs/**' ]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    
    - name: Lint Markdown
      uses: articulate/actions-markdownlint@v1
      with:
        config: .markdownlint.json
        files: 'docs/**/*.md'

  build:
    needs: lint
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    
    - name: Setup Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '16'
        cache: 'npm'
        
    - name: Install dependencies
      run: npm ci
      
    - name: Build VitePress
      run: npm run docs:build
      
    - name: Upload artifact
      uses: actions/upload-pages-artifact@v1
      with:
        path: docs/.vitepress/dist

  deploy:
    needs: build
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
    - name: Deploy to GitHub Pages
      id: deployment
      uses: actions/deploy-pages@v1

Pre-commit Hooks

Config file .pre-commit-config.yaml:

yaml
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files
      
  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.32.2
    hooks:
      - id: markdownlint
        args: ['--fix']
        
  - repo: https://github.com/psf/black
    rev: 22.10.0
    hooks:
      - id: black
        language_version: python3
        
  - repo: local
    hooks:
      - id: docs-build
        name: Build documentation
        entry: npm run docs:build
        language: system
        files: '^docs/.*\.md$'
        pass_filenames: false

Documentation Generation Tools

API Documentation Auto-generation

javascript
// Use JSDoc to generate API documentation
/**
 * Create a new user
 * @param {Object} userData - User data
 * @param {string} userData.name - User name
 * @param {string} userData.email - Email address
 * @param {string} [userData.role=user] - User role
 * @returns {Promise<Object>} Created user object
 * @example
 * const user = await createUser({
 *   name: 'John Doe',
 *   email: 'john@example.com'
 * });
 */
async function createUser(userData) {
  // Implementation...
}
bash
# Generate documentation
jsdoc src/ -d docs/api/ -c jsdoc.conf.json

OpenAPI/Swagger Documentation

yaml
# openapi.yaml
openapi: 3.0.0
info:
  title: User Management API
  version: 1.0.0
  description: RESTful API for user management system

paths:
  /users:
    post:
      summary: Create a new user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        '201':
          description: User created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'

components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: string
          example: "12345"
        name:
          type: string
          example: "John Doe"
        email:
          type: string
          format: email
          example: "john@example.com"
    
    CreateUserRequest:
      type: object
      required:
        - name
        - email
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        role:
          type: string
          default: "user"

Performance Optimization Tools

Build Optimization

Image Optimization Script

javascript
// optimize-images.js
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');

async function optimizeImages(dir) {
  const files = fs.readdirSync(dir);
  
  for (const file of files) {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    
    if (stat.isDirectory()) {
      await optimizeImages(filePath);
    } else if (/\.(jpg|jpeg|png)$/i.test(file)) {
      const outputPath = filePath.replace(/\.(jpg|jpeg|png)$/i, '.webp');
      
      await sharp(filePath)
        .webp({ quality: 80 })
        .toFile(outputPath);
        
      console.log(`Optimized: ${file} -> ${path.basename(outputPath)}`);
    }
  }
}

optimizeImages('./docs/assets/images');

Documentation Build Script

javascript
// build-docs.js
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');

function buildDocs() {
  console.log('📝 Start building documentation...');
  
  // 1. Check Markdown syntax
  console.log('🔍 Checking Markdown syntax...');
  execSync('markdownlint docs/', { stdio: 'inherit' });
  
  // 2. Optimize images
  console.log('🖼️ Optimizing images...');
  execSync('node optimize-images.js', { stdio: 'inherit' });
  
  // 3. Build static site
  console.log('🏗️ Building static site...');
  execSync('vitepress build docs', { stdio: 'inherit' });
  
  // 4. Generate sitemap
  console.log('🗺️ Generating sitemap...');
  generateSitemap();
  
  console.log('✅ Documentation build complete!');
}

function generateSitemap() {
  const baseUrl = 'https://yoursite.com';
  const pages = findMarkdownFiles('./docs');
  
  const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${pages.map(page => `  <url>
    <loc>${baseUrl}${page}</loc>
    <lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>`).join('\n')}
</urlset>`;

  fs.writeFileSync('./docs/.vitepress/dist/sitemap.xml', sitemap);
}

function findMarkdownFiles(dir, basePath = '') {
  const files = [];
  const items = fs.readdirSync(dir);
  
  for (const item of items) {
    const fullPath = path.join(dir, item);
    const relativePath = path.join(basePath, item);
    
    if (fs.statSync(fullPath).isDirectory()) {
      files.push(...findMarkdownFiles(fullPath, relativePath));
    } else if (item.endsWith('.md') && item !== 'README.md') {
      const urlPath = relativePath
        .replace(/\.md$/, '.html')
        .replace(/\\/g, '/');
      files.push('/' + urlPath);
    }
  }
  
  return files;
}

buildDocs();

Tool Selection Guide

Choose Tools by Need

markdown
## Personal Blog Writing
Recommended combo:
- Editor: Typora or Mark Text
- Deployment: GitHub Pages + Jekyll
- Images: PicGo + GitHub
- Version: Git

## Team Documentation Collaboration
Recommended combo:
- Platform: Notion or GitBook
- Editor: VS Code + plugins
- Version: Git + GitHub
- Automation: GitHub Actions

## Technical Documentation Website
Recommended combo:
- Generator: VitePress or Docusaurus
- Editor: VS Code
- Deployment: Netlify or Vercel
- Charts: Mermaid + draw.io

## API Documentation
Recommended combo:
- Tools: Swagger/OpenAPI
- Generation: Redoc or SwaggerUI
- Integration: Postman
- Testing: Newman

## Academic Papers
Recommended combo:
- Editor: Typora + Pandoc
- Formulas: MathJax/KaTeX
- Citations: Zotero
- Conversion: Pandoc LaTeX

Cost Comparison

Tool TypeFree OptionsPaid OptionsEnterprise Version
EditorVS Code, Mark TextTypora (¥89)-
HostingGitHub PagesNetlify Pro (¥190/mo)Enterprise custom
CollaborationGitHubNotion (¥64/mo/user)Confluence (¥42/mo/user)
Image HostingGitHubQiniu Cloud (¥0.1/GB)Enterprise private cloud
Domaingithub.ioCustom domain (¥60/year)Enterprise domain

Summary Recommendations

markdown
🚀 Quick Start Kit:
1. Editor: VS Code + Markdown All in One
2. Preview: Real-time preview plugin
3. Version: Git + GitHub
4. Deployment: GitHub Pages
5. Images: Direct upload to repo

💰 Cost: Completely free
⏱️ Learning time: 1-2 hours
🎯 Suitable for: Personal blogs, small project docs
markdown
⚡ Professional Kit:
1. Editor: Typora + VS Code
2. Generator: VitePress
3. Image hosting: PicGo + cloud storage
4. Collaboration: GitHub + Issues
5. Automation: GitHub Actions
6. Monitoring: Google Analytics

💰 Cost: ¥200-500/year
⏱️ Learning time: 1-2 days
🎯 Suitable for: Tech teams, open source projects

Enterprise Setup

markdown
🏢 Enterprise Kit:
1. Platform: Confluence or GitBook
2. Editing: VS Code + team plugins
3. Version: Enterprise Git
4. Deployment: Private cloud + CDN
5. Collaboration: Full permission management
6. Integration: CI/CD + monitoring & alerts

💰 Cost: ¥5000-20000/year
⏱️ Deployment time: 1-2 weeks
🎯 Suitable for: Large enterprises, product documentation

By reasonably selecting and configuring these tools, you can build an efficient and professional Markdown documentation workflow, greatly improving the efficiency of documentation creation and maintenance.

Built by www.markdownlang.com