Convert Markdown into Slack Block Kit format using Mistune. Useful for LLM-powered chatbots!
- View Kitchen Sink Markdown: test/testdata/kitchen_sink.md.txt
- View Output in Block Kit Builder: https://app.slack.com/block-kit-builder/#...
- 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.SlackRenderer
and adding your own logic (such as you may want to upload the image somewhere as well)
uv add mistune-slack
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
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
uv run test
MIT