A Python script that converts markdown meeting notes into well-formatted Google Docs with proper styling, nested bullets, checkboxes, and mention highlighting. Github Link - https://github.com/tanmaydhal/markdown-to-google-docs
- ✅ Converts markdown headers to Google Docs heading styles (H1, H2, H3)
- ✅ Maintains nested bullet point hierarchy with proper indentation
- ✅ Converts markdown checkboxes
- [ ]into actual Google Docs checkboxes - ✅ Highlights @mentions with bold blue text
- ✅ Styles footer information (meeting metadata) in italics
- ✅ Handles both
*and-bullet formats - ✅ Preserves document structure and formatting
- Google account with access to Google Drive
- Google Colab (recommended) or local Python environment
google-auth
google-auth-oauthlib
google-auth-httplib2
google-api-python-clientThese are pre-installed in Google Colab. For local use:
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client- Open Google Colab
- Upload the
markdown_to_gdocs.ipynbnotebook - Run all cells in order
- When prompted, authenticate with your Google account
- The script will create a new Google Doc and output the link
- Go to Google Colab
- Click
File→Open notebook→GitHubtab - Enter this repository URL
- Select the
markdown_to_gdocs.ipynbnotebook - Run all cells and authenticate when prompted
The notebook includes sample meeting notes. Simply run all cells to convert them to a Google Doc.
To convert your own markdown:
- Replace the
MARKDOWN_NOTESvariable with your content:
MARKDOWN_NOTES = """
# Your Title Here
## Section 1
- Bullet point 1
- Bullet point 2
- Nested bullet
## Action Items
- [ ] @john: Complete task A
- [ ] @sarah: Review document B
"""- Run the script to generate your Google Doc
# Main Title (H1)
## Section Header (H2)
### Subsection Header (H3)* Standard bullet
* Nested bullet (2 spaces)
* Deeper nested bullet (4 spaces)- [ ] Unchecked task
- [ ] @username: Task with mention@username will be highlighted in bold blue---
Meeting recorded by: Name
Duration: X minutes(Text after --- is styled in italics)
├── AnsibleHealthFullStackTask.ipynb.ipynb # Main Colab notebook
├── README.md # This file
- Authentication: Uses Google Colab's built-in authentication
- Document Creation: Creates a new Google Doc via the Docs API
- Parsing: Processes markdown line-by-line
- Formatting: Builds batch API requests for:
- Text insertion
- Heading styles
- Bullet/checkbox creation
- Text styling (bold, color, italic)
- Indentation levels
- Execution: Sends all formatting requests in a single batch update
- Make sure you're signed into Google in your browser
- Try clearing browser cache and re-authenticating
- Ensure your Google account has Drive access enabled
- Check the console output for error messages
- Verify your Google account has permission to create docs
- Ensure you granted all requested permissions during auth
- Verify markdown syntax (proper spacing for nested bullets)
- Check that indentation uses 2 spaces per level
- Ensure checkboxes use the format
- [ ]exactly
The Google Docs API has the following limits:
- 300 requests per minute per project
- This script uses batch updates to minimize request count
Feel free to open issues or submit pull requests for improvements!
MIT License - feel free to use and modify as needed.
Created for converting markdown meeting notes to Google Docs format.
- Google Docs API documentation
- Google Colab for providing easy authentication