Convert Markdown files to Confluence storage format and Jira markup, then publish them directly to your Atlassian tools using REST APIs.
- ✅ Converts Markdown to Confluence storage format
- ✅ Supports code blocks, math, tables, images, footnotes, and more
- ✅ Handles definition lists, strikethrough, and advanced Markdown features
- ✅ Publishes pages to Confluence via REST API
- ✅ CLI for batch conversion and publishing
- ✅ Converts Markdown to Jira markup format
- ✅ Creates new issues or updates existing ones
- ✅ Adds content as comments to existing issues
- ✅ Supports parent-child relationships
- ✅ Handles code blocks, tables, links, and formatting
- ✅ Automatic header spacing and UTF-8 encoding
- ✅ Robust error handling with HTTP status codes
- ✅ Configuration management with secure credential storage
- ✅ Test suite and comprehensive documentation
- ✅ Utility scripts for preprocessing markdown files
- ✅ Modern Python architecture with dataclasses and type hints
- Python 3.7+
- requests
- markdown
- python-frontmatter
- mdx-math (for math support)
Install dependencies:
pip install -r requirements.txtFor Confluence:
python confluence_config.py --setupFor Jira:
python jira_config.py --setupFor Confluence:
python confluence_config.py --generate-scriptFor Jira:
python jira_config.py --generate-scriptConfluence:
./convert_confluence.shJira:
./convert_jira.shpython confluence_markdown_converter.py <file1.md> <file2.md> \
--base-url https://your-domain.atlassian.net \
--username your-email@example.com \
--api-token your-confluence-api-token \
--space-key YOURSPACEKEY \
[--parent-page "Parent Page Title"] \
[--page-title "Custom Page Title"] \
[--page-id "Confluence Page ID"] \
[--enable-math]python jira_markdown_converter.py <file1.md> <file2.md> \
--base-url https://your-domain.atlassian.net \
--username your-email@example.com \
--api-token your-jira-api-token \
--project-key PROJ \
[--issue-type "Task"] \
[--priority "Medium"] \
[--assignee "username"] \
[--time-estimate "2h"] \
[--parent-key "PROJ-123"] \
[--issue-key "PROJ-123"] \
[--as-comment]- Full Jira markup conversion with proper formatting
- Issue creation, updates, and comment support
- Parent-child relationship handling
- Automatic time estimate parsing from markdown
- CommandLine dataclass for clean CLI argument handling
- HTTP status code constants using
http.HTTPStatuslibrary - Shared response handler with proper UTF-8 encoding
- Robust error handling for JSON decode errors
- Automatic header spacing for better Jira readability
- Enhanced code block support with syntax highlighting
- Improved table conversion for both Confluence and Jira
- Better list handling and formatting
- Input folder ignored by Git for privacy
- Secure credential storage in configuration files
- Environment-based configuration support
- Comprehensive API documentation with limitations noted
Run the test suite:
python -m unittest discover testsTest API connections:
python tests/test_jira_connection.py
python tests/test_confluence_connection.pyCreate the following directory structure for your markdown files:
input/
├── confluence/
│ └── your_file.md
└── jira/
└── your_file.md
input/ directory is ignored by Git for privacy and security.
- Purpose: Convert Markdown to Confluence pages
- Features: Page creation/updates, hierarchical structure, code blocks, tables, links
- Use Cases: Documentation, project wikis, knowledge bases
- 📖 Detailed Documentation
- Purpose: Convert Markdown to Jira issues and comments
- Features: Issue creation/updates, comments, parent-child relationships, code blocks
- Use Cases: Bug reports, feature requests, technical specifications
- 📖 Detailed Documentation
- 📖 API Documentation
All utility scripts are located in the scripts/ folder:
# Add header levels to markdown files
python scripts/add_header_level.py input.md > output.md
# Add separators between sections
python scripts/add_separators.py input.md > output.md
# Adjust header levels
python scripts/adjust_headers.py input.md > output.md- Nested lists: Currently supports only flat (single-level) lists
- Time tracking: Must be set manually in Jira web interface (API limitation)
- Field permissions: Some fields may be restricted based on Jira configuration
- Math support: Requires
--enable-mathflag for LaTeX rendering - Image handling: Images must be accessible via URL or uploaded separately
This project is licensed under the Apache License 2.0.
- 📖 Confluence Converter Guide - Complete setup and usage guide
- 📖 Jira Converter Guide - Complete setup and usage guide
- 📖 Jira API Documentation - API capabilities and limitations
- 📖 Configuration Testing Guide - Test your API connections