Herramientas y Plugins
Elegir las herramientas y plugins adecuados puede mejorar enormemente la eficiencia y calidad de la escritura en Markdown. Esta guía presenta varios tipos de herramientas para ayudarte a construir un flujo de trabajo completo con Markdown.
Editores Recomendados
Editores de Código Profesionales
Visual Studio Code
Características: Gratis, multiplataforma, gran variedad de plugins
Plugins recomendados:
- Markdown All in One: Soporte integral para Markdown
- Markdown Preview Enhanced: Previsualización avanzada
- markdownlint: Revisión y linting de sintaxis
- Paste Image: Pegado rápido de imágenes
- Table Editor: Edición visual de tablas
- Math to Image: Convertir fórmulas matemáticas en imágenes
Ejemplo de configuración:
{
"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
Características: WYSIWYG, interfaz limpia, temas variados
Funciones principales:
- Edición con previsualización en tiempo real
- Soporte para fórmulas matemáticas
- Integración de gráficos
- Exportación a múltiples formatos
- Copia automática de imágenes
- Edición visual de tablas
Mark Text
Características: Código abierto, previsualización en tiempo real, excelente rendimiento
Funciones clave:
- Renderizado en tiempo real
- Modo de enfoque
- Soporte para fórmulas matemáticas
- Soporte para diagramas de flujo
- Múltiples formatos de exportación
- Temas personalizados
Editores en Línea
StackEdit
Características: Basado en el navegador, sincronización en la nube, colaboración
Destacados:
- Sincronización en tiempo real con Google Drive, Dropbox
- Publicación en GitHub, plataformas de blog
- Soporte de edición offline
- Fórmulas matemáticas y gráficos
- Colaboración
- Historial de versiones
Dillinger
Características: Interfaz simple, integración multiplataforma
Plataformas integradas:
- GitHub
- Dropbox
- Google Drive
- OneDrive
- Exportación a HTML, PDF
- Previsualización en tiempo real
HackMD
Características: Colaboración en equipo, funciones de presentación
Funciones de colaboración:
- Edición en tiempo real multi-usuario
- Sistema de comentarios
- Control de versiones
- Gestión de permisos
- Modo de presentación
- Modo de libro
Herramientas de Previsualización y Conversión
Generadores de Sitios Estáticos
VitePress
Características: Ecosistema Vue, excelente rendimiento, moderno
// .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
Características: Interfaz elegante, colaboración en equipo, gestión de versiones
Características destacadas:
- Experiencia de lectura moderna
- Colaboración en la edición
- Exportación multi-formato
- Funcionalidad de búsqueda
- Integración de análisis
- Generación de documentación de API
Docusaurus
Características: Código abierto de Facebook, ecosistema React, soporte multi-idioma
// 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',
},
},
},
};
Herramientas de Conversión de Formato
Pandoc
Características: Convertidor universal, herramienta CLI, formatos ricos
# Markdown a PDF
pandoc document.md -o document.pdf
# Markdown a Word
gpandoc document.md -o document.docx
# Markdown a HTML (estilo personalizado)
pandoc document.md -s --css=style.css -o document.html
# Conversión por lotes
find . -name "*.md" -exec pandoc {} -o {}.pdf \;
# Usar plantilla
pandoc document.md --template=template.html -o output.html
# Generar TOC
pandoc document.md --toc --toc-depth=3 -o document.pdf
markdownlint
Características: Revisión de sintaxis, estándares unificados, auto-corrección
# Instalar
npm install -g markdownlint-cli
# Revisar un archivo
markdownlint README.md
# Revisar un directorio
markdownlint docs/
# Auto-corregir
markdownlint --fix *.md
# Usar archivo de configuración
markdownlint --config .markdownlint.json docs/
Ejemplo de configuración:
{
"default": true,
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
},
"MD033": {
"allowed_elements": ["div", "span", "img", "a"]
},
"MD041": false
}
Herramientas de Imagen y Medios
Herramientas de Procesamiento de Imágenes
PicGo
Características: Carga automática, soporte multiplataforma, extensiones de plugins
Plataformas soportadas:
- Qiniu Cloud
- Tencent Cloud COS
- Upyun
- GitHub
- Alibaba Cloud OSS
- Imgur
- Carga personalizada
Ejemplo de configuración:
{
"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
Características: Compresión de imágenes, reducción de tamaño, mantenimiento de calidad
# Usar ImageOptim CLI
imageoptim *.png *.jpg
# Usar TinyPNG API
curl --user api:YOUR_API_KEY \
--data-binary @original.png \
--output compressed.png \
https://api.tinify.com/shrink
Herramientas de Generación de Gráficos
draw.io (diagrams.net)
Características: Gratuito, potente, exportación multi-formato
Casos de uso:
- Diagramas de arquitectura del sistema
- Diseño de diagramas de flujo
- Diagramas UML
- Diagramas de topología de red
- Mapas mentales
- Prototipado
Excalidraw
Características: Estilo a mano alzada, colaboración en tiempo real, fácil de usar
Características especiales:
- Diagramas a mano alzada
- Colaboración en tiempo real
- Uso offline
- Exportación PNG/SVG
- Gestión de bibliotecas
- Canvas infinito
Herramientas de Gestión de Documentación
Herramientas de Colaboración de Equipo
Notion
Características: Espacio de trabajo completo, funciones de base de datos, plantillas ricas
Características de documentos:
- Estructura jerárquica de páginas
- Edición colaborativa en tiempo real
- Integración de base de datos
- Sistema de plantillas
- Soporte multimedia
- Integración de API
Confluence
Características: A nivel empresarial, gestión de permisos, integración fuerte
Características empresariales:
- Control de permisos avanzado
- Flujos de aprobación
- Personalización de marca
- Integración empresarial
- Búsqueda avanzada
- Informes de análisis
GitBook
Características: Amigable para desarrolladores, control de versiones, interfaz elegante
Ventajas clave:
- Integración de Git
- Historial de versiones
- Colaboración en equipo
- Dominio personalizado
- Funcionalidad de búsqueda
- Datos de análisis
Plataformas de Publicación
GitHub Pages
Características: Alojamiento gratuito, control de versiones, dominio personalizado
# .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
Características: Despliegue rápido, aceleración de CDN, manejo de formularios
# netlify.toml
[build]
publish = "dist"
command = "npm run build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "16"
Vercel
Características: Despliegue sin configuración, CDN global, despliegues de vista previa
{
"builds": [
{
"src": "package.json",
"use": "@vercel/static-build",
"config": {
"distDir": "dist"
}
}
],
"routes": [
{
"handle": "filesystem"
},
{
"src": "/(.*)",
"dest": "/index.html"
}
]
}
Herramientas de Automatización
Integración CI/CD
GitHub Actions
Ejemplo de flujo de trabajo:
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
Archivo de configuración .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
Herramientas de Generación de Documentación
Auto-generación de Documentación de API
// Usar JSDoc para generar documentación de API
/**
* Crear un nuevo usuario
* @param {Object} userData - Datos del usuario
* @param {string} userData.name - Nombre del usuario
* @param {string} userData.email - Dirección de correo electrónico
* @param {string} [userData.role=user] - Rol del usuario
* @returns {Promise<Object>} Objeto del usuario creado
* @example
* const user = await createUser({
* name: 'John Doe',
* email: 'john@example.com'
* });
*/
async function createUser(userData) {
// Implementación...
}
# Generar documentación
jsdoc src/ -d docs/api/ -c jsdoc.conf.json
Documentación OpenAPI/Swagger
# openapi.yaml
openapi: 3.0.0
info:
title: API de Gestión de Usuarios
version: 1.0.0
description: API RESTful para el sistema de gestión de usuarios
paths:
/users:
post:
summary: Crear un nuevo usuario
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: Usuario creado con éxito
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"
Herramientas de Optimización de Rendimiento
Optimización de Construcción
Script de Optimización de Imágenes
// 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(`Optimizado: ${file} -> ${path.basename(outputPath)}`);
}
}
}
optimizeImages('./docs/assets/images');
Script de Construcción de Documentación
// build-docs.js
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
function buildDocs() {
console.log('📝 Iniciando la construcción de documentación...');
// 1. Revisar sintaxis Markdown
console.log('🔍 Revisando sintaxis Markdown...');
execSync('markdownlint docs/', { stdio: 'inherit' });
// 2. Optimizar imágenes
console.log('🖼️ Optimizando imágenes...');
execSync('node optimize-images.js', { stdio: 'inherit' });
// 3. Construir sitio estático
console.log('🏗️ Construyendo sitio estático...');
execSync('vitepress build docs', { stdio: 'inherit' });
// 4. Generar sitemap
console.log('🗺️ Generando sitemap...');
generateSitemap();
console.log('✅ Construcción de documentación completa!');
}
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();
Guía de Selección de Herramientas
Elegir Herramientas por Necesidad
## Escritura de Blogs Personales
Combo recomendado:
- Editor: Typora o Mark Text
- Despliegue: GitHub Pages + Jekyll
- Imágenes: PicGo + GitHub
- Versión: Git
## Colaboración en Documentación de Equipo
Combo recomendado:
- Plataforma: Notion o GitBook
- Editor: VS Code + plugins
- Versión: Git + GitHub
- Automatización: GitHub Actions
## Sitio Web de Documentación Técnica
Combo recomendado:
- Generador: VitePress o Docusaurus
- Editor: VS Code
- Despliegue: Netlify o Vercel
- Gráficos: Mermaid + draw.io
## Documentación de API
Combo recomendado:
- Herramientas: Swagger/OpenAPI
- Generación: Redoc o SwaggerUI
- Integración: Postman
- Pruebas: Newman
## Trabajos de Investigación
Combo recomendado:
- Editor: Typora + Pandoc
- Fórmulas: MathJax/KaTeX
- Citas: Zotero
- Conversión: Pandoc LaTeX
Comparación de Costos
Tipo de Herramienta | Opciones Gratuitas | Opciones Pagadas | Versión Empresarial |
---|---|---|---|
Editor | VS Code, Mark Text | Typora (¥89) | - |
Alojamiento | GitHub Pages | Netlify Pro (¥190/mo) | Alojamiento personalizado |
Colaboración | GitHub | Notion (¥64/mo/usuario) | Confluence (¥42/mo/usuario) |
Almacenamiento de Imágenes | GitHub | Qiniu Cloud (¥0.1/GB) | Nube privada empresarial |
Dominio | github.io | Dominio personalizado (¥60/año) | Dominio empresarial |
Sintaxis Relacionada
- Incorporación de HTML - Mejoras de HTML
- Fórmulas Matemáticas - Expresiones matemáticas en LaTeX
- Diagramas - Dibujo de gráficos
- Mejores Prácticas - Recomendaciones de escritura
Recomendaciones de Resumen
Configuración Recomendada para Principiantes
🚀 Kit de Inicio Rápido:
1. Editor: VS Code + Markdown All in One
2. Previsualización: Plugin de previsualización en tiempo real
3. Versión: Git + GitHub
4. Despliegue: GitHub Pages
5. Imágenes: Carga directa al repositorio
💰 Costo: Completamente gratuito
⏱️ Tiempo de aprendizaje: 1-2 horas
🎯 Apto para: Blogs personales, pequeños proyectos de documentación
Configuración Recomendada para Avanzados
⚡ Kit Profesional:
1. Editor: Typora + VS Code
2. Generador: VitePress
3. Alojamiento de imágenes: PicGo + almacenamiento en la nube
4. Colaboración: GitHub + Issues
5. Automatización: GitHub Actions
6. Monitoreo: Google Analytics
💰 Costo: ¥200-500/año
⏱️ Tiempo de aprendizaje: 1-2 días
🎯 Apto para: Equipos de tecnología, proyectos de código abierto
Configuración de Empresa
🏢 Kit de Empresa:
1. Plataforma: Confluence o GitBook
2. Edición: VS Code + plugins de equipo
3. Versión: Git empresarial
4. Despliegue: Nube privada + CDN
5. Colaboración: Gestión de permisos completa
6. Integración: CI/CD + monitoreo & alertas
💰 Costo: ¥5000-20000/año
⏱️ Tiempo de despliegue: 1-2 semanas
🎯 Apto para: Grandes empresas, documentación de productos
Al seleccionar y configurar razonablemente estas herramientas, puedes construir un flujo de trabajo de documentación eficiente y profesional, mejorando significativamente la eficiencia de creación y mantenimiento de la documentación.