精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

閱讀效率提升300%:Dify+Markdown實(shí)現(xiàn)自動(dòng)化知識(shí)梳理全解析 原創(chuàng)

發(fā)布于 2025-6-23 06:43
瀏覽
0收藏

在早年閱讀網(wǎng)上的技術(shù)博客時(shí),我習(xí)慣一邊看文章一邊在語(yǔ)雀筆記中畫思維導(dǎo)圖。然而,回過(guò)頭來(lái)看,這種方式其實(shí)效率不高。有了AI后,我們可以先讓AI為我們生成相應(yīng)的思維導(dǎo)圖,以便我們對(duì)知識(shí)有個(gè)初步認(rèn)識(shí),再去深入閱讀文章,這樣會(huì)更有效。在這篇文章中,我將分享如何使用dify自動(dòng)生成文章的思維導(dǎo)圖,以提高我們吸收知識(shí)的速度。

安裝插件

先在dify的插件市場(chǎng)安裝如下兩個(gè)插件:

  1. Markdown轉(zhuǎn)換器:用于生成html文件
  2. Agent策略插件:調(diào)用mcp server,將markdown轉(zhuǎn)成html

編寫mcp server

我們需要開發(fā)一個(gè) MCP 服務(wù)器,通過(guò) HTTP 接口為 Dify 提供 Markdown 轉(zhuǎn)思維導(dǎo)圖的服務(wù)。該服務(wù)將使用 markmap-cli 工具實(shí)現(xiàn)核心轉(zhuǎn)換功能,要調(diào)用這個(gè)工具需要先安裝 Node.js 環(huán)境(包含 npm),然后通過(guò)命令 ??npm install -g markmap-cli?? 全局安裝這個(gè)必備工具。

sudo apt update
sudo apt install nodejs npm
npm install -g markmap-cli

下面是對(duì)應(yīng)的mcp server代碼,運(yùn)行這個(gè)腳本之前需要先pip install mcp,  然后執(zhí)行python mcp.py --host 0.0.0.0 --port 27018,dify對(duì)應(yīng)的Agent節(jié)點(diǎn)配置的服務(wù)端地址是http://ip:27018/sse。

import asyncio
import tempfile
import os
import shutil
import sys
import argparse
import logging
from pathlib import Path
from mcp.server.fastmcp import FastMCP

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

# Parse command line arguments
def parse_arguments():
    parser = argparse.ArgumentParser(description='MCP Server for converting Markdown to mindmaps')
    parser.add_argument('--return-type', choices=['html', 'filePath'], default='html',
                        help='Whether to return HTML content or file path. Default: html')
    parser.add_argument('--host', default='localhost',
                        help='Host address to bind the server. Default: localhost')
    parser.add_argument('--port', type=int, default=8000,
                        help='Port number to run the server. Default: 1100')

    return parser.parse_args()

# Global configuration
args = parse_arguments()
RETURN_TYPE = args.return_type

# Initialize FastMCP server
mcp = FastMCP("mindmap-server", host=args.host, port=args.port)

# Log server configuration
logging.info("Starting Mindmap Server with configuration:")
logging.info(f"Host: {args.host}")
logging.info(f"Port: {args.port}")
logging.info(f"Return Type: {args.return_type}")

async def create_temp_file(content: str, extension: str) -> str:
    """Create a temporary file with the given content and extension."""
    temp_dir = tempfile.mkdtemp(prefix='mindmap-')
    file_path = os.path.join(temp_dir, f"input{extension}")

    with open(file_path, mode='w') as f:
        f.write(content)

    return file_path

async def run_mindmap(input_file: str, output_file: str = None) -> str:
    """Run markmap-cli on the input file and return the path to the output file.

    Args:
        input_file: Path to the input markdown file
        output_file: Optional path for the output HTML file

    Returns:
        str: Path to the generated HTML file
    """
    if output_file is None:
        output_file = os.path.splitext(input_file)[0] + '.html'

    if sys.platform == 'win32':
        args = ['cmd', '/c', 'npm', 'exec', '--yes', 'markmap-cli', '--', input_file, '-o', output_file, '--no-open']
    else:
        args = ['npx', '-y', 'markmap-cli', input_file, '-o', output_file, '--no-open']

    try:
        process = await asyncio.create_subprocess_exec(
            *args,
            stdout=asyncio.subprocess.PIPE,
            stderr=asyncio.subprocess.PIPE
        )

        stdout, stderr = await process.communicate()

        if process.returncode != 0:
            error_msg = stderr.decode() if stderr else "Unknown error"
            raise RuntimeError(f"markmap-cli exited with code {process.returncode}: {error_msg}")

        return output_file
    except Exception as e:
        raise RuntimeError(f"Failed to run markmap-cli: {str(e)}")

async def get_html_content(file_path: str) -> str:
    """Read the HTML content from the given file."""
    with open(file_path, 'r', encoding='utf-8') as f:
        return f.read()

@mcp.tool()
async def convert_markdown_to_mindmap(
    markdown_content: str,  # The Markdown content to convert
) -> str:
    """Convert Markdown content to a mindmap mind map.

    Args:
        markdown_content: The Markdown content to convert

    Returns:
        Either the HTML content or the file path to the generated HTML, 
        depending on the --return-type server argument
    """
    try:
        logging.info("Starting markdown to mindmap conversion")
        # Create a temporary markdown file
        input_file = await create_temp_file(markdown_content, '.md')
        logging.debug(f"Created temporary markdown file: {input_file}")

        # Run mindmap on it
        output_file = await run_mindmap(input_file)
        logging.debug(f"Generated mindmap file: {output_file}")

        # Check if the output file exists
        if not os.path.exists(output_file):
            error_msg = f"Output file was not created: {output_file}"
            logging.error(error_msg)
            raise RuntimeError(error_msg)

        # Return either the HTML content or the file path based on command line arg
        if RETURN_TYPE == 'html':
            html_content = await get_html_content(output_file)
            logging.info("Successfully converted markdown to HTML mindmap")
            return html_content
        else:
            logging.info(f"Successfully generated mindmap file at: {output_file}")
            return output_file
    except Exception as e:
        error_msg = f"Error converting Markdown to mindmap: {str(e)}"
        logging.error(error_msg)
        raise RuntimeError(error_msg)
    finally:
        # Clean up temporary files
        if 'input_file' in locals():
            temp_dir = os.path.dirname(input_file)
            try:
                shutil.rmtree(temp_dir, ignore_errors=True)
                logging.debug(f"Cleaned up temporary directory: {temp_dir}")
            except Exception as e:
                logging.warning(f"Failed to clean up temporary directory {temp_dir}: {str(e)}")

def main():
    """Entry point for the mindmap-mcp-server command."""
    global args, RETURN_TYPE

    # Parse arguments again to ensure parameters are captured when running as an entry point
    args = parse_arguments()
    RETURN_TYPE = args.return_type

    print(f"Starting mindmap-mcp-server with return type: {RETURN_TYPE}", file=sys.stderr)

    # Initialize and run the server
    mcp.run(transport='sse')

if __name__ == "__main__":
    main()

搭建工作流

搭建好的簡(jiǎn)略工作流如下:


閱讀效率提升300%:Dify+Markdown實(shí)現(xiàn)自動(dòng)化知識(shí)梳理全解析-AI.x社區(qū)

下面對(duì)關(guān)鍵節(jié)點(diǎn)做如下說(shuō)明:

LLM 生成markdown

我們利用gpt-4.1 對(duì)文件內(nèi)容轉(zhuǎn)換成markdown格式,對(duì)應(yīng)的prompt如下:

上下文內(nèi)容:{{#context#}}
## 核心任務(wù)
將上下文內(nèi)容轉(zhuǎn)化為符合以下標(biāo)準(zhǔn)的Markdown格式思維導(dǎo)圖框架:
1. **要素提取**:識(shí)別并提取關(guān)鍵實(shí)體、關(guān)系、流程三類核心要素
2. **邏輯重構(gòu)**:按「總-分」結(jié)構(gòu)重組信息,確保父子節(jié)點(diǎn)存在推導(dǎo)關(guān)系

## 格式規(guī)范
### 層級(jí)控制
- 主標(biāo)題 `#`(1級(jí)):文檔主題
- 章節(jié) `##`(2級(jí)):核心模塊(≥3個(gè))
- 子項(xiàng) `###`(3級(jí)):具體要素(每個(gè)父節(jié)點(diǎn)下≥2個(gè))

### 內(nèi)容標(biāo)記
- 關(guān)鍵術(shù)語(yǔ):**加粗顯示** + (簡(jiǎn)短釋義)
- 數(shù)據(jù)示例:```包裹的代碼塊```

## 質(zhì)量保障
1. 預(yù)檢機(jī)制(輸出前必須驗(yàn)證):
   - [ ] 無(wú)孤立節(jié)點(diǎn)(所有子項(xiàng)都有父節(jié)點(diǎn))
   - [ ] 無(wú)重復(fù)內(nèi)容(合并相似條目)

Agent

添加Agent策略時(shí),我選擇了環(huán)境準(zhǔn)備安裝的Agent策略插件,并指定了FunctionCalling策略。同時(shí),對(duì)上述的MCP工具進(jìn)行了配置。

閱讀效率提升300%:Dify+Markdown實(shí)現(xiàn)自動(dòng)化知識(shí)梳理全解析-AI.x社區(qū)

測(cè)試

我從網(wǎng)上找了一篇講解iphone15的文章,將其導(dǎo)入當(dāng)前的工作流系統(tǒng)。下面是生成的思維導(dǎo)圖,生成的內(nèi)容還是不錯(cuò)的:

閱讀效率提升300%:Dify+Markdown實(shí)現(xiàn)自動(dòng)化知識(shí)梳理全解析-AI.x社區(qū)

總結(jié)

當(dāng)然,上面的處理還只是一個(gè)比較粗糙的demo,我們還可以繼續(xù)優(yōu)化。首先,在數(shù)據(jù)采集環(huán)節(jié),我們可以增加網(wǎng)頁(yè)內(nèi)容直接抓取功能;其次,針對(duì)大篇幅文檔,可考慮采用分塊處理的迭代機(jī)制;此外,還需完善對(duì)圖文混合文檔中視覺(jué)元素的處理能力。這些優(yōu)化方向?qū)@著提升工具的實(shí)用性和處理效率。感興趣的朋友可以自行嘗試。


本文轉(zhuǎn)載自??AI 博物院?? 作者:longyunfeigu

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-6-23 10:48:34修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
亚洲国产高清自拍| 樱桃国产成人精品视频| 国产精品18久久久久久麻辣| 免费污网站在线观看| 亚洲第一二三四区| 综合自拍亚洲综合图不卡区| 国产精品xxx在线观看www| 欧美一级免费播放| 天堂资源中文在线| 另类小说综合欧美亚洲| 久久久久久久久网站| 在线免费观看日韩av| 亚洲国产一区二区久久| 狠狠躁夜夜躁久久躁别揉| 亚洲最新在线| 五月婷中文字幕| 韩国精品在线观看| 国产国语videosex另类| 国产性70yerg老太| 日韩欧美一区二区三区在线视频| 日韩三级视频在线看| 成人中文字幕av| 国产盗摄一区二区| 九九视频精品免费| 91精品国产高清久久久久久久久| 国产大屁股喷水视频在线观看| 福利在线一区| 欧美精品久久一区| 北条麻妃av高潮尖叫在线观看| 国产盗摄在线视频网站| 亚洲精品视频观看| 92福利视频午夜1000合集在线观看| 久久9999久久免费精品国产| 91精品秘密在线观看| 一区二区av在线| 中文人妻一区二区三区| 成人动漫视频| 日韩欧美国产1| 欧美成人福利在线观看| 欧美黄色网页| 日韩欧美福利视频| 成人中文字幕在线播放| 草美女在线观看| 亚洲精品国产成人久久av盗摄| 亚洲三级一区| 国产高清免费av在线| 久久综合视频网| 九九九九精品九九九九| 亚洲国产精品国自产拍久久| 国产精品影视天天线| 91久久久亚洲精品| 国产麻豆91视频| 久久国产精品免费| 国产日韩欧美黄色| 伊人久久成人网| 免费在线观看日韩欧美| 国产精品男人的天堂| 成人一级免费视频| 蜜桃精品视频在线| 成人国产精品色哟哟| 国产又大又黄的视频| 久久成人18免费观看| 91美女片黄在线观| 国产v在线观看| 国产成人精品免费| 福利精品视频| 天堂av在线资源| 国产视频不卡一区| 亚洲欧美日韩国产yyy| 欧美精品videos另类| 亚洲欧美乱综合| 大荫蒂性生交片| 激情视频网站在线播放色 | 亚洲欧洲久久久| 欧美日韩在线网站| 久久中文字幕视频| 国产精品7777| 日韩激情在线观看| 国产欧美精品在线| 亚洲av色香蕉一区二区三区| 99久久久精品| 亚洲精品美女久久7777777| 好了av在线| 亚洲电影在线播放| 无码日韩人妻精品久久蜜桃| 欧美黄色a视频| 精品日产卡一卡二卡麻豆| 四虎永久免费影院| 91精品天堂福利在线观看| 亚洲2020天天堂在线观看| 波多野结衣二区三区| 极品销魂美女一区二区三区| 国内一区在线| avtt亚洲| 亚洲国产日韩a在线播放性色| 国产高清精品在线观看| 99精品视频在线免费播放| 精品国产亚洲一区二区三区在线观看| 亚洲av无码国产精品久久| 国产精品久久久久久久久久10秀 | 精品亚洲一区二区| 顶级黑人搡bbw搡bbbb搡| 亚洲经典视频在线观看| 国产美女精品视频免费观看| 手机看片福利永久| 中文字幕亚洲区| 国内自拍在线观看| 亚洲超碰在线观看| 一个色综合导航| 日本一区二区三区四区五区| 精品一区二区三区av| 玖玖玖精品中文字幕| 最新日本在线观看| 欧美日韩一本到| 一本色道久久综合亚洲精品图片| 欧美片第1页综合| 国产精品一区二区三区久久久| 天堂网在线中文| 一区二区三区在线免费视频| 一区二区三区免费播放| 亚洲小说图片视频| 国内精品小视频在线观看| 国产精品无码一区二区桃花视频| 久久免费看少妇高潮| 国产精品www在线观看| 国产精品一区二区精品视频观看| 在线色欧美三级视频| 天天干天天干天天干天天| 懂色av噜噜一区二区三区av| 樱空桃在线播放| 欧洲亚洲精品| 在线视频一区二区| 中文字幕人成人乱码亚洲电影| 99精品久久99久久久久| 农民人伦一区二区三区| 日韩一二三区| 久久777国产线看观看精品| 黄色精品视频在线观看| 日本欧美韩国一区三区| 日本精品一区二区| 黄色aa久久| 亚洲第一中文字幕在线观看| 国产一级片免费观看| 国产99精品国产| 国产一区二区四区| 丁香五月缴情综合网| 久久久久久成人| 性少妇videosexfreexxx片| 一区二区三区欧美在线观看| 被黑人猛躁10次高潮视频| 中文字幕av亚洲精品一部二部| 成人两性免费视频| 2024短剧网剧在线观看| 欧美第一区第二区| 国产真实乱偷精品视频| 99久久久久久| 欧美精品aaaa| 久久视频国产| 亚洲一区二区日本| 国内小视频在线看| 欧美精品一区二区高清在线观看| 精品一区免费观看| 26uuu亚洲综合色欧美| 人妻有码中文字幕| 成人同人动漫免费观看| 成人看片人aa| 国产啊啊啊视频在线观看| 亚洲精品国产免费| 黄色av网站免费观看| 国产精品理论在线观看| 国产xxxxhd| 99av国产精品欲麻豆| 日韩不卡av| vam成人资源在线观看| 欧美激情亚洲另类| 欧美成人综合在线| 5月丁香婷婷综合| 国产五月天婷婷| 国产亚洲欧美一区在线观看| 久久久久xxxx| 亚洲一区久久| 中文字幕不卡每日更新1区2区| 97久久综合精品久久久综合| 欧美做爰性生交视频| 色多多视频在线观看| 亚洲成人性视频| 国产亚洲久一区二区| 一区二区三区四区激情| 中文字幕一二三四区| 国内成人精品2018免费看| 国产 日韩 亚洲 欧美| 日本不卡二三区| 国产欧美一区二区三区另类精品 | 欧美另类网站| 精品国产三区在线| 中国日韩欧美久久久久久久久| 99在线精品视频免费观看20| 欧美午夜电影在线| 亚洲国产123| 久久亚洲综合色| 亚欧美一区二区三区| 视频一区二区三区中文字幕| 青青视频免费在线| 精品一区二区三| 国产精品一区视频| 国产精品一区免费在线| 国产成人中文字幕| 极品视频在线| 欧美日韩第一视频| 日本网站在线免费观看视频| 精品一区二区电影| 成人爽a毛片一区二区| 欧美欧美欧美欧美| 波多野结衣高清在线| 欧美日韩激情视频8区| 老女人性淫交视频| 国产精品人妖ts系列视频| 一级国产黄色片| 国产成人免费在线观看不卡| 亚洲综合婷婷久久| 日韩精品一区第一页| 99视频在线免费播放| 欧美一区二区| 青少年xxxxx性开放hg| 久久国产电影| 色噜噜狠狠色综合网| 伊人久久大香线蕉综合网蜜芽| 成人午夜电影免费在线观看| 国产一区二区三区免费在线| 国产日韩欧美黄色| 日本黄色一区| 国产极品精品在线观看| 日韩欧美少妇| 国产精品女主播| 草莓视频成人appios| 国产成人涩涩涩视频在线观看| 美女一区网站| 日韩美女免费观看| 亚洲人免费短视频| 日本高清视频一区| 色8久久影院午夜场| 欧洲成人免费视频| 欧美日韩电影免费看| 国产91在线高潮白浆在线观看| 中文字幕在线中文字幕在线中三区 | 日韩成人av影院| 国产成人自拍网| 精品久久久久久无码人妻| 国产成人午夜精品影院观看视频 | 青青青手机在线视频观看| 亚洲电影在线看| 五月天婷婷在线播放| 日韩国产中文字幕| 免费毛片在线| 中文字幕精品av| 黄色成人影院| 欧美国产日韩一区二区在线观看 | 国产精品美乳在线观看| 高清av一区| 亚洲一区二区在线| 荡女精品导航| 久久久久网址| 日韩精品午夜| 51xx午夜影福利| 亚洲精品一级| www.xxx亚洲| 韩国av一区二区三区| ass极品水嫩小美女ass| 99热精品国产| 国产精品久久久久久久av| 中文字幕在线观看一区二区| a级片在线观看免费| 午夜精品久久久久久久久久| 99精品人妻国产毛片| 欧美日韩一区在线观看| 99视频在线观看免费| 亚洲精品美女免费| 91在线视频| 国内外成人免费激情在线视频网站 | 亚洲人成免费网站| 男人添女荫道口图片| 日韩精品成人一区二区三区| 91视频福利网| 91麻豆视频网站| 免费高清在线观看电视| 性感美女极品91精品| 久久这里只有精品9| 日韩美女在线视频| 国产精品久久一区二区三区不卡| 久久精品视频在线播放| 日本在线播放一二三区| 成人福利网站在线观看11| 香蕉久久精品| 日韩最新中文字幕| 日韩精品每日更新| 蜜桃视频无码区在线观看| 国产午夜精品一区二区三区四区| 欧美成人三级在线观看| 色吊一区二区三区| 亚洲av永久无码国产精品久久| 一区二区三区视频在线| 丁香花视频在线观看| 国产美女高潮久久白浆| 在线看成人短视频| 久久人人爽人人爽人人av| 麻豆一区二区三| 亚洲 小说 欧美 激情 另类| 亚洲制服欧美中文字幕中文字幕| 在线观看免费观看在线| 日韩精品视频免费| bl在线肉h视频大尺度| 91久久久久久| 91亚洲国产| 少妇黄色一级片| 2023国产精品视频| 国产精品第72页| 日韩午夜激情视频| 蜜芽在线免费观看| 国产精品夫妻激情| 香蕉视频一区| 日韩日韩日韩日韩日韩| 国产成人丝袜美腿| 三上悠亚作品在线观看| 欧美午夜精品一区二区蜜桃 | 99a精品视频在线观看| 中日韩在线视频| 久久福利资源站| 国产又黄又粗的视频| 91国偷自产一区二区使用方法| 色wwwwww| 97精品一区二区视频在线观看| 91麻豆精品国产91久久久久推荐资源| 丰满女人性猛交| 久久福利资源站| 日韩三级久久久| 欧美精品粉嫩高潮一区二区| 日本中文在线| 国产热re99久久6国产精品| 日韩激情一区| 欧美wwwwwww| 国产精品超碰97尤物18| 91亚洲视频在线观看| 日韩小视频在线观看| 日韩城人网站| 特大黑人娇小亚洲女mp4| 国产精一区二区三区| 久久亚洲国产成人精品性色| 精品日韩一区二区三区免费视频| 女子免费在线观看视频www| 国产激情美女久久久久久吹潮| 欧美成人有码| 亚洲一二三四五| 精品国产福利视频| 黄色免费在线播放| 国产精品视频自在线| 久久精品青草| 无码人妻丰满熟妇啪啪网站| 亚洲成va人在线观看| 欧洲亚洲在线| 国产美女久久久| 黄色成人精品网站| 好吊日免费视频| 欧美偷拍一区二区| huan性巨大欧美| 国产综合精品一区二区三区| 免费看亚洲片| 欧美xxxooo| 精品日韩在线观看| 香蕉成人av| 天天操天天干天天玩| 不卡的电视剧免费网站有什么| 国产又大又黄视频| 少妇高潮久久77777| 日韩区欧美区| 少妇性饥渴无码a区免费| 国产精品久久久久婷婷二区次| h片在线免费看| 欧美在线免费视频| 91成人影院| 美女又爽又黄视频毛茸茸| 欧美日韩中文字幕精品| 欧美野外wwwxxx| 日本婷婷久久久久久久久一区二区 | 日韩黄色大片网站| 人妻激情偷乱频一区二区三区| 日本韩国精品一区二区在线观看| 中文字幕有码在线视频| 免费精品视频一区| 国产伦精品一区二区三区免费迷 | www久久日com| 欧美日韩在线高清| 国产盗摄女厕一区二区三区| 免费视频网站在线观看入口| 欧美日本中文字幕| 国产永久精品大片wwwapp| 丰满少妇一区二区三区专区| 日本久久电影网| 色呦呦在线资源| 亚洲国产一区二区精品视频| av在线不卡网|