Convert Markdown into Slack Block Kit format using Mistune. Useful for LLM-powered chatbots!
Kitchen sink demo
- View Kitchen Sink Markdown: test/testdata/kitchen_sink.md.txt
- View Output in Block Kit Builder: https://app.slack.com/block-kit-builder/#...
Features
- Produces Slack Block Kit JSON for posting messages to Slack
- Renders Slack users, channels, broadcasts, and emojis
- Supports strikethrough, task lists, URLs, and code blocks
- Headings, paragraphs, block quotes, and dividers
- Ordered and bullet lists (with nesting and task-list support)
- Inline code and fenced code-block rendering
- Link conversion into Slack link elements
- Note: images not supported. It should be easy to add by subclassing
mistune_slack.renderer.SlackRendererand adding your own logic (such as you may want to upload the image somewhere as well)
Install
Usage
from mistune_slack import render_slack_blocks_from_markdown markdown = "# Hello, *world*!" blocks = render_slack_blocks_from_markdown(markdown) print(blocks) # post `blocks` to Slack
Advanced usage
import mistune from mistune.plugins.formatting import strikethrough from mistune.plugins.task_lists import task_lists from mistune.plugins.url import url from mistune_slack import SlackRenderer, slack_pluginSlackRenderer markdown = "# Hello, *world*!" renderer = mistune.create_markdown(renderer=SlackRenderer(), plugins=[slack_plugin, strikethrough, url, task_lists]) blocks: list[dict] = renderer(markdown) # type: ignore print(blocks) # post `blocks` to Slack
Testing
License
MIT