[分享] 撸了一个全自动微信公众号发文 Workflow(n8n + DeepSeek + Gemini),顺便开源了 mdnice 转换工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
koala9527
7.49D
1.52D
V2EX    deepseek

[分享] 撸了一个全自动微信公众号发文 Workflow(n8n + DeepSeek + Gemini),顺便开源了 mdnice 转换工具

  •  1
     
  •   koala9527 5 天前 633 次点击
    最近在折腾自动化内容产出,发现微信公众号的排版和发布流程非常割裂。虽然 mdnice 很好用,但它没有官方 API ,很难集成到自动化流里。

    于是自己动手撸了一套方案,并把其中最关键的 Markdown 转微信排版 环节封装成工具开源了。

    技术栈:

    n8n:作为全流程自动化编排中心。

    DeepSeek:负责高质量文本生成。

    Gemini (Image Generation):根据内容自动生成配图作为头图。

    自建 API (markdown2wechat):解析 mdnice 主题并将 MD 转换为适合微信预览的 HTML 格式。

    全流程逻辑:

    定时触发或 Webhook 触发。

    调用 DeepSeek API 生成符合排版规范的 Markdown 。

    调用 Gemini 生成文章封面图并自动上传。

    通过我的工具接口,将 MD 自动套用 mdnice 主题模板并转换为 HTML 。

    推送到草稿箱。

    工具开源地址: https://github.com/koala9527/markdown2wechat

    欢迎 V 友们拍砖,如果大家有更好的全自动发布 API 思路也欢迎交流。


    第 1 条附言    5 天前
    被 AI 折磨了好几天,逆向 mdnice 主题翻译逻辑一直有问题,现在终于勉强能用了

    用 AI 生成代码这个黑盒子去模拟 mdnice 主题转换的黑盒子
    7 条回复    2026-01-13 13:41:49 +08:00
    pol
        1
    pol  
       5 天前
    start 下,后面试试
    waityan
        2
    waityan  
       5 天前
    试下 skill /wechat-article-writer 文本的质量就很好
    allplay
        3
    allplay  
       5 天前 via Android
    这就是新一代的内容农场
    allplay
        4
    allplay  
       5 天前 via Android
    这种内容农场号,看到一个屏蔽一个
    koala9527
        5
    koala9527  
    OP
       5 天前
    @waityan 好的,我去看看,谢谢分享
    mephisto
        6
    mephisto  
       5 天前
    (markdown2wechat) markdown2wechat git:(main) uv run python main.py
    Traceback (most recent call last):
    File "/home/mephisto/github/markdown2wechat/main.py", line 10, in <module>
    from mdnice_transform import transform_to_mdnice_format
    File "/home/mephisto/github/markdown2wechat/mdnice_transform.py", line 11, in <module>
    from bs4 import BeautifulSoup, NavigableString, Tag
    ModuleNotFoundError: No module named 'bs4'
    (markdown2wechat) markdown2wechat git:(main) uv run python main.py
    Traceback (most recent call last):
    File "/home/mephisto/github/markdown2wechat/main.py", line 10, in <module>
    from mdnice_transform import transform_to_mdnice_format
    File "/home/mephisto/github/markdown2wechat/mdnice_transform.py", line 11, in <module>
    from bs4 import BeautifulSoup, NavigableString, Tag
    ModuleNotFoundError: No module named 'bs4'
    (markdown2wechat) markdown2wechat git:(main) vim pyproject.toml
    (markdown2wechat) markdown2wechat git:(main)
    (markdown2wechat) markdown2wechat git:(main) uv add bs4
    Resolved 49 packages in 974ms
    Prepared 3 packages in 219ms
    Installed 3 packages in 6ms
    + beautifulsoup4==4.14.3
    + bs4==0.0.2
    + soupsieve==2.8.1
    (markdown2wechat) markdown2wechat git:(main) uv run python main.py
    INFO: Started server process [21843]
    INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
    INFO: 127.0.0.1:58716 - "GET / HTTP/1.1" 200 OK
    INFO: 127.0.0.1:58716 - "GET /api/themes HTTP/1.1" 200 OK
    INFO: 127.0.0.1:58716 - "GET /favicon.ico HTTP/1.1" 404 Not Found
    INFO: 127.0.0.1:58716 - "POST /api/convert HTTP/1.1" 200 OK
    INFO: 127.0.0.1:38146 - "POST /api/convert HTTP/1.1" 200 OK
    需要把 bs4 加到依赖,这个转换工具还不错,对我来说有用,谢谢楼主。主题都感觉不怎么好看,代码高亮也没有
    koala9527
        7
    koala9527  
    OP
       5 天前
    @mephisto 优先使用 next 框架的转换吧,fastapi 的我还没有亲自验证,我还会继续优化的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2767 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 08:20 PVG 16:20 LAX 00:20 JFK 03:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86