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.
Recommended Editors
Professional Code Editors
Visual Studio Code
Features: Free, cross-platform, rich plugins
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:
{
"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
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
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
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
Integrated platforms:
- GitHub
- Dropbox
- Google Drive
- OneDrive
- Export to HTML, PDF
- Real-time preview
HackMD
Features: Team collaboration, presentation features
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
// .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
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
// 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
# 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
# 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:
{
"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
Supported platforms:
- Qiniu Cloud
- Tencent Cloud COS
- Upyun
- GitHub
- Alibaba Cloud OSS
- Imgur
- Custom upload
Configuration Example:
{
"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
# 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
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
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
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
Enterprise features:
- Advanced permission control
- Approval workflows
- Brand customization
- Enterprise integration
- Advanced search
- Analytics reports
GitBook
Features: Developer-friendly, version control, beautiful interface
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
# .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
# 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
{
"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:
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
:
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
// 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...
}
# Generate documentation
jsdoc src/ -d docs/api/ -c jsdoc.conf.json
OpenAPI/Swagger Documentation
# 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
// 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
// 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
## 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 Type | Free Options | Paid Options | Enterprise Version |
---|---|---|---|
Editor | VS Code, Mark Text | Typora (¥89) | - |
Hosting | GitHub Pages | Netlify Pro (¥190/mo) | Enterprise custom |
Collaboration | GitHub | Notion (¥64/mo/user) | Confluence (¥42/mo/user) |
Image Hosting | GitHub | Qiniu Cloud (¥0.1/GB) | Enterprise private cloud |
Domain | github.io | Custom domain (¥60/year) | Enterprise domain |
Related Syntax
- HTML Embedding - HTML enhancements
- Math Formulas - LaTeX math expressions
- Diagrams - Chart drawing
- Best Practices - Writing recommendations
Summary Recommendations
Beginner Recommended Setup
🚀 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
Advanced Recommended Setup
⚡ 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
🏢 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.