{
  "nodes": [
    {
      "id": "root",
      "type": "text",
      "text": "## AI 自媒体实战｜搭建自己的个人 IP\n\n**愿景**\n让 AI 融入生活，让学习帮助人实现自己的目标。\n\n**课程目标**\n从真实经历出发，学清楚、讲明白，建立能持续创作的账号。\n\n**毕业交付**\n一个真实账号＋三条原创内容＋一份证据化复盘＋个人创作手册。\n\n**当前状态**\n18 课大纲与练习已开放；全部新课视频待更新。",
      "x": 40,
      "y": 2640,
      "width": 520,
      "height": 560,
      "color": "5"
    },
    {
      "id": "method",
      "type": "text",
      "text": "## 共学的方法｜以教促学，保留人的判断\n\n**学习循环**\n自己先解释 → AI 逐步追问 → 回到原文查证补学 → 做真实作品 → 根据反馈修正。\n\n**人的工作**\n提供真实经历、核查事实、选择方向、解释取舍。AI 协助提问、整理、提出候选方案与检查遗漏。",
      "x": 700,
      "y": 0,
      "width": 2490,
      "height": 250,
      "color": "4"
    },
    {
      "id": "m1",
      "type": "text",
      "text": "## 01｜找到自己的起点\n\n第 01–03 课\n\n**阶段任务**\n找到有经历支撑的主题，向真实的人验证。",
      "x": 700,
      "y": 700,
      "width": 460,
      "height": 230,
      "color": "5"
    },
    {
      "id": "ip01",
      "type": "text",
      "text": "## 01｜让 AI 采访你，找到第一个值得讲的主题\n\n**讲什么**\n把经历、兴趣和能力分开；从真实小事提取可讲的主题；区分主题假设与专业承诺。\n\n**费曼追问**\n为什么是你来讲？如果不用“成长”“赋能”这些词，你会怎么说？\n\n计划视频 10 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 400,
      "width": 730,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip01-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n口述三件亲历的小事，让 AI 一次追问一个问题，整理出三个候选主题；你依据证据选一个。\n\n**作品**\n一张主题卡：帮助谁、解决什么、三条经历证据、第一条内容题目。\n\n**验收**\n主题能指向一个具体问题；三条经历均可解释；没有虚构身份或成绩。",
      "x": 2160,
      "y": 400,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip02",
      "type": "text",
      "text": "## 02｜和真实的人聊，找出他们的真问题\n\n**讲什么**\n从愿景缩小到第一批受众；学习不诱导的访谈；辨别客套赞同与真实需求。\n\n**费曼追问**\n你怎么知道这是对方的困难，而不是你希望他有的困难？\n\n计划视频 10 分钟 · 练习约 45 分钟",
      "x": 1300,
      "y": 700,
      "width": 730,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip02-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n先生成五个开放问题，采访两位可能的受众，再让 AI 整理经同意且去标识的记录。\n\n**作品**\n两份匿名访谈摘要＋一张受众问题卡。\n\n**验收**\n每个需求都能回指受访者原话或行为；AI 推测单独标记；没有采访则标待验证。",
      "x": 2160,
      "y": 700,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip03",
      "type": "text",
      "text": "## 03｜写下账号承诺，也写下边界\n\n**讲什么**\n综合自己的经历与受众需求；写清谁会看、看完能做什么；形成可调整的定位。\n\n**费曼追问**\n如果删掉你的名字，这个定位还能让人认出你的特点吗？\n\n计划视频 10 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 1000,
      "width": 730,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip03-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n把主题卡和访谈交给 AI，请它找定位中的空话、证据缺口与过度承诺，比较两种方向。\n\n**作品**\n账号定位卡 v1＋三条内容支柱＋一条不做清单。\n\n**验收**\n一句话说清对象、问题和帮助；每条支柱都有经历或资料支撑；边界明确。",
      "x": 2160,
      "y": 1000,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "m2",
      "type": "text",
      "text": "## 02｜用 AI 学，也用自己的话讲\n\n第 04–06 课\n\n**阶段任务**\n脱离 AI 能解释，回到来源能查证。",
      "x": 700,
      "y": 1600,
      "width": 460,
      "height": 230,
      "color": "4"
    },
    {
      "id": "ip04",
      "type": "text",
      "text": "## 04｜先讲给 AI 听，找出自己没懂的地方\n\n**讲什么**\n把复述与理解分开；用例子、反例和适用条件检验理解；记录修正过程。\n\n**费曼追问**\n离开原文和 AI，你能用生活中的例子把它说清楚吗？\n\n计划视频 9 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 1300,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip04-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n先关掉资料独立解释，再让 AI 扮演新手逐题追问；卡住时回到原文补学。\n\n**作品**\n一份三分钟复述＋三处理解缺口＋修订后的解释。\n\n**验收**\n保留未修改的初次复述；每个缺口有补学依据；能举一个自己的例子。",
      "x": 2160,
      "y": 1300,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip05",
      "type": "text",
      "text": "## 05｜做一张证据卡，拦住 AI 的漂亮错话\n\n**讲什么**\n区分事实、观点、推测和演示；核对来源与日期；留下不知道的地方。\n\n**费曼追问**\n这句话凭什么成立？有什么证据会让你改变判断？\n\n计划视频 10 分钟 · 练习约 35 分钟",
      "x": 1300,
      "y": 1600,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip05-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n让 AI 从草稿抽取可核验的说法，列出所需证据；人打开原始来源核查，删改无依据表述。\n\n**作品**\n一张事实与来源表＋一版核查过的短稿。\n\n**验收**\n重要事实能找到原始出处及日期；未核实内容不写成事实；案例与个人判断有标识。",
      "x": 2160,
      "y": 1600,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip06",
      "type": "text",
      "text": "## 06｜把一次实践写成自己的案例\n\n**讲什么**\n用问题、尝试、卡点、修正、结果讲述过程；区分亲历与借用的方法。\n\n**费曼追问**\n如果结果不理想，这个案例还能让别人学到什么？\n\n计划视频 10 分钟 · 练习约 40 分钟",
      "x": 1300,
      "y": 1900,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip06-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n将操作笔记、截图和个人复述交给 AI，按时间整理；追问关键转折并检查因果跳跃。\n\n**作品**\n一份案例卡＋前后对照证据＋方法来源说明。\n\n**验收**\n结果有截图或记录；失败和局限保留；参考方法与自己的发现分开。",
      "x": 2160,
      "y": 1900,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "m3",
      "type": "text",
      "text": "## 03｜把素材变成内容系列\n\n第 07–09 课\n\n**阶段任务**\n从问题和证据长出选题与脚本。",
      "x": 700,
      "y": 2500,
      "width": 460,
      "height": 230,
      "color": "6"
    },
    {
      "id": "ip07",
      "type": "text",
      "text": "## 07｜从用户问题里长出选题\n\n**讲什么**\n把受众的问题与自己的经历交叉；区分大主题和可回答的小问题；给选题排优先级。\n\n**费曼追问**\n你为什么现在讲这一条？它和受众最近的困难有什么关系？\n\n计划视频 9 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 2200,
      "width": 730,
      "height": 255,
      "color": "6"
    },
    {
      "id": "ip07-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n用定位、访谈、案例生成十个选题候选，按相关性、证据和制作难度筛选。\n\n**作品**\n十条选题卡＋准备制作的三条系列选题。\n\n**验收**\n每条选题有具体受众、问题和证据；三条内容各有作用，不能只是换标题。",
      "x": 2160,
      "y": 2200,
      "width": 1030,
      "height": 255,
      "color": "6"
    },
    {
      "id": "ip08",
      "type": "text",
      "text": "## 08｜一条内容只交付一个清楚的收获\n\n**讲什么**\n选择一个主要问题；安排解释、例子、演示与行动；避免堆砌观点。\n\n**费曼追问**\n听众只记住一句话，应该是哪句？其他段落为什么还要保留？\n\n计划视频 9 分钟 · 练习约 25 分钟",
      "x": 1300,
      "y": 2500,
      "width": 730,
      "height": 255,
      "color": "6"
    },
    {
      "id": "ip08-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n让 AI 为同一份真实素材提出两种结构，比较理解成本；自己选择并口头试讲。\n\n**作品**\n一份 60–90 秒内容骨架＋删改理由。\n\n**验收**\n开头的问题与结尾交付一致；至少一个具体例子；听众知道接下来做什么。",
      "x": 2160,
      "y": 2500,
      "width": 1030,
      "height": 255,
      "color": "6"
    },
    {
      "id": "ip09",
      "type": "text",
      "text": "## 09｜保住你的声音，写出第一份口播稿\n\n**讲什么**\n用自己的口头表达做底稿；把抽象词换成具体经历；用思考变化带动叙述。\n\n**费曼追问**\n哪一句一听就像你？哪一句只是 AI 写得好看？\n\n计划视频 10 分钟 · 练习约 35 分钟",
      "x": 1300,
      "y": 2800,
      "width": 730,
      "height": 255,
      "color": "6"
    },
    {
      "id": "ip09-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n先录一分钟自由表达，转写并人工校正，再请 AI 标记难懂、重复和不自然的句子。\n\n**作品**\n第一版口播稿＋原始口述＋修改对照。\n\n**验收**\n没有编造冲突；本人读起来顺口；关键观点能自己解释，保留个人措辞。",
      "x": 2160,
      "y": 2800,
      "width": 1030,
      "height": 255,
      "color": "6"
    },
    {
      "id": "m4",
      "type": "text",
      "text": "## 04｜做出第一组作品\n\n第 10–12 课\n\n**阶段任务**\n完成可播放、可理解的首条作品。",
      "x": 700,
      "y": 3400,
      "width": 460,
      "height": 230,
      "color": "2"
    },
    {
      "id": "ip10",
      "type": "text",
      "text": "## 10｜录下来：让画面帮你解释\n\n**讲什么**\n选择口播、录屏或混合；根据脚本设计必要画面；检查声音与敏感信息。\n\n**费曼追问**\n这一段画面帮观众理解了什么？只有装饰作用能不能删掉？\n\n计划视频 10 分钟 · 练习约 45 分钟",
      "x": 1300,
      "y": 3100,
      "width": 730,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip10-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 将定稿拆成镜头表、录屏动作和录前清单；本人用 Recordly 或手边录制工具实拍。\n\n**作品**\n一段完整原始录像＋镜头表。\n\n**验收**\n能听清；画面与讲述一致；账号、私信和密钥已避开；不需要昂贵设备。",
      "x": 2160,
      "y": 3100,
      "width": 1030,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip11",
      "type": "text",
      "text": "## 11｜剪出能听懂、能跟上的第一条视频\n\n**讲什么**\n剪掉无效等待；保留理解与操作停顿；校对字幕中的名称、数字与术语。\n\n**费曼追问**\n这处停顿是多余等待，还是观众理解所需要的时间？\n\n计划视频 10 分钟 · 练习约 45 分钟",
      "x": 1300,
      "y": 3400,
      "width": 730,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip11-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n让 AI 根据转写提出删减与字幕疑点，人对照原音和画面确认，再在剪辑工具中执行。\n\n**作品**\n第一条成片＋人工核对过的字幕。\n\n**验收**\n从头播放无黑场断句；字幕不改变原意；关键操作可看清；未把猜测改成肯定。",
      "x": 2160,
      "y": 3400,
      "width": 1030,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip12",
      "type": "text",
      "text": "## 12｜做标题和封面，让承诺与内容一致\n\n**讲什么**\n从作品真实收获提取标题；用层级和可读性设计封面；检查是否夸大。\n\n**费曼追问**\n点击进来的人，最后能得到标题答应他的东西吗？\n\n计划视频 8 分钟 · 练习约 25 分钟",
      "x": 1300,
      "y": 3700,
      "width": 730,
      "height": 255,
      "color": "2"
    },
    {
      "id": "ip12-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 提供三组标题与封面文字，并逐一指出视频里兑现承诺的位置；人做缩略图检查。\n\n**作品**\n三组包装候选＋一组定稿＋选择理由。\n\n**验收**\n标题可被内容兑现；手机缩略图可读；无虚假成绩、夸张收益与无依据保证。",
      "x": 2160,
      "y": 3700,
      "width": 1030,
      "height": 255,
      "color": "2"
    },
    {
      "id": "m5",
      "type": "text",
      "text": "## 05｜让账号承接你的内容\n\n第 13–15 课\n\n**阶段任务**\n搭建账号，真实发布一个内容系列。",
      "x": 700,
      "y": 4300,
      "width": 460,
      "height": 230,
      "color": "5"
    },
    {
      "id": "ip13",
      "type": "text",
      "text": "## 13｜搭好账号的第一眼\n\n**讲什么**\n让昵称、简介、头像与栏目表达同一个方向；先选择能持续使用的平台。\n\n**费曼追问**\n看完主页，别人能知道为什么要继续看你吗？\n\n计划视频 8 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 4000,
      "width": 730,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip13-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 根据定位卡检查资料一致性，给简介候选和置顶结构；本人到选定平台完成设置。\n\n**作品**\n一张真实账号主页截图＋资料卡。\n\n**验收**\n陌生人能说出你讲什么、帮谁；资料真实；不冒用身份；截图分享前脱敏。",
      "x": 2160,
      "y": 4000,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip14",
      "type": "text",
      "text": "## 14｜发布第一条，收回第一份真实反馈\n\n**讲什么**\n执行发布前检查；设计一个容易回答的问题；保存发布版本与反馈记录。\n\n**费曼追问**\n你希望观众回答什么，才能帮你判断这条内容有没有讲清楚？\n\n计划视频 8 分钟 · 练习约 30 分钟",
      "x": 1300,
      "y": 4300,
      "width": 730,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip14-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 帮忙检查稿件、字幕、来源和隐私，生成发布清单；本人确认发布并邀请真实反馈。\n\n**作品**\n第一条发布链接＋发布检查表＋反馈记录表。\n\n**验收**\n链接实际可访问；核查平台当前发布要求；没有反馈可标待收集，不能模拟评论。",
      "x": 2160,
      "y": 4300,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip15",
      "type": "text",
      "text": "## 15｜围绕同一问题，完成三条内容系列\n\n**讲什么**\n让三条内容分别解释、演示和纠错；适配图文时重做结构；避免机械复制。\n\n**费曼追问**\n为什么关注过第一条的人，还需要第二条和第三条？\n\n计划视频 10 分钟 · 练习约 90 分钟",
      "x": 1300,
      "y": 4600,
      "width": 730,
      "height": 255,
      "color": "5"
    },
    {
      "id": "ip15-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 根据首条作品与反馈补齐系列缺口，整理第二、三条素材需求和制作安排。\n\n**作品**\n三条实际作品及链接＋系列介绍。\n\n**验收**\n三条各解决一个相关小问题；共用证据可追溯；每条独立能看懂。",
      "x": 2160,
      "y": 4600,
      "width": 1030,
      "height": 255,
      "color": "5"
    },
    {
      "id": "m6",
      "type": "text",
      "text": "## 06｜形成能持续的创作习惯\n\n第 16–18 课\n\n**阶段任务**\n记录反馈，实验改进，沉淀个人方法。",
      "x": 700,
      "y": 5200,
      "width": 460,
      "height": 230,
      "color": "4"
    },
    {
      "id": "ip16",
      "type": "text",
      "text": "## 16｜看反馈，别让 AI 替小样本编故事\n\n**讲什么**\n分清观察、解释和待验证假设；记录指标口径与时间；小样本不下因果结论。\n\n**费曼追问**\n这是一条事实，还是你对事实的解释？还有其他原因吗？\n\n计划视频 10 分钟 · 练习约 35 分钟",
      "x": 1300,
      "y": 4900,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip16-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n把去标识的后台数据与评论交给 AI，要求指出缺失字段、其他可能原因和不能判断的部分。\n\n**作品**\n一份证据化复盘：三条观察、一个待验证问题。\n\n**验收**\n每条观察有数据或原话；注明时间、样本和分母；没有数据就做理解访谈复盘。",
      "x": 2160,
      "y": 4900,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip17",
      "type": "text",
      "text": "## 17｜下一条只改一个问题\n\n**讲什么**\n选一个可改变的因素；写下预期和观察办法；保留前后版本。\n\n**费曼追问**\n什么结果会让你放弃这次假设？你能控制哪些变量？\n\n计划视频 9 分钟 · 练习约 40 分钟",
      "x": 1300,
      "y": 5200,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip17-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\n让 AI 将复盘问题转成小实验方案，提醒时间、受众和分发差异，人选择一个执行。\n\n**作品**\n一张实验卡＋改版作品＋结果记录。\n\n**验收**\n只明确改一个主要因素；保存旧版；观察结果含不确定性，不保证增长。",
      "x": 2160,
      "y": 5200,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip18",
      "type": "text",
      "text": "## 18｜把方法留下，成为自己的创作系统\n\n**讲什么**\n整理来源、提示词和验收习惯；设置可持续节奏；用作品证明成长。\n\n**费曼追问**\n如果换一个题目、一个模型，这套方法还有哪些部分能用？\n\n计划视频 10 分钟 · 练习约 45 分钟",
      "x": 1300,
      "y": 5500,
      "width": 730,
      "height": 255,
      "color": "4"
    },
    {
      "id": "ip18-work",
      "type": "text",
      "text": "## AI 怎么帮 → 最后交付什么\n\n**AI 用法**\nAI 从真实完成记录提取可复用步骤和模板；换一个新选题试跑，补上失效条件。\n\n**作品**\n账号作品集＋个人创作手册＋下一轮两周计划。\n\n**验收**\n包含三条作品与复盘；模板在新题目上试过；写清人的确认点和适用边界。",
      "x": 2160,
      "y": 5500,
      "width": 1030,
      "height": 255,
      "color": "4"
    },
    {
      "id": "today",
      "type": "text",
      "text": "## 今天录第一集｜让 AI 采访你\n\n**前 3 分钟**\n讲真实经历，展示一张空白主题卡。\n\n**中间 4 分钟**\n演示 AI 追问，说明你接受或拒绝建议的理由。\n\n**最后 3 分钟**\n完成主题卡，不看 AI 用自己的话解释选择，布置作业。\n\n**当前采访进度**\n你在用 AI 学《个人影响力35讲》，准备以共学和自己的账号实践。现有约 1100 粉丝，反馈尚未系统整理。",
      "x": 1300,
      "y": 5940,
      "width": 1020,
      "height": 410,
      "color": "2"
    },
    {
      "id": "question",
      "type": "text",
      "text": "## 下一问｜等你自己的答案\n\n**采访问题**\n读到“找定位”时，哪个观点让你联想到自己的账号，觉得“这个问题我也有”或者“我还没想清楚”？\n\n**录制原则**\n先说自己的理解，再对照原文补学。不要为脚本编成功经历；1100 粉丝是现状，不代表付费意愿已验证。",
      "x": 2480,
      "y": 5940,
      "width": 710,
      "height": 410,
      "color": "2"
    },
    {
      "id": "reference",
      "type": "text",
      "text": "## 参考与创作边界\n\n**参考**\n于困困《个人影响力打造35讲》（得到）的定位、受众、选题、表达与复盘方法。\n\n**自己的设计**\n18 课按作品交付重组；加入经历证据、费曼追问、事实核查、AI 建议取舍与真实账号实验。具体课程内容以已上架的大纲为准；不承诺涨粉或收益。",
      "x": 700,
      "y": 6500,
      "width": 2490,
      "height": 250,
      "color": "6"
    }
  ],
  "edges": [
    {
      "id": "e001",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m1",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e002",
      "fromNode": "m1",
      "fromSide": "right",
      "toNode": "ip01",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e003",
      "fromNode": "ip01",
      "fromSide": "right",
      "toNode": "ip01-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e004",
      "fromNode": "m1",
      "fromSide": "right",
      "toNode": "ip02",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e005",
      "fromNode": "ip02",
      "fromSide": "right",
      "toNode": "ip02-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e006",
      "fromNode": "m1",
      "fromSide": "right",
      "toNode": "ip03",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e007",
      "fromNode": "ip03",
      "fromSide": "right",
      "toNode": "ip03-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e008",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m2",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e009",
      "fromNode": "m2",
      "fromSide": "right",
      "toNode": "ip04",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e010",
      "fromNode": "ip04",
      "fromSide": "right",
      "toNode": "ip04-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e011",
      "fromNode": "m2",
      "fromSide": "right",
      "toNode": "ip05",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e012",
      "fromNode": "ip05",
      "fromSide": "right",
      "toNode": "ip05-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e013",
      "fromNode": "m2",
      "fromSide": "right",
      "toNode": "ip06",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e014",
      "fromNode": "ip06",
      "fromSide": "right",
      "toNode": "ip06-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e015",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m3",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e016",
      "fromNode": "m3",
      "fromSide": "right",
      "toNode": "ip07",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e017",
      "fromNode": "ip07",
      "fromSide": "right",
      "toNode": "ip07-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e018",
      "fromNode": "m3",
      "fromSide": "right",
      "toNode": "ip08",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e019",
      "fromNode": "ip08",
      "fromSide": "right",
      "toNode": "ip08-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e020",
      "fromNode": "m3",
      "fromSide": "right",
      "toNode": "ip09",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e021",
      "fromNode": "ip09",
      "fromSide": "right",
      "toNode": "ip09-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e022",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m4",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e023",
      "fromNode": "m4",
      "fromSide": "right",
      "toNode": "ip10",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e024",
      "fromNode": "ip10",
      "fromSide": "right",
      "toNode": "ip10-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e025",
      "fromNode": "m4",
      "fromSide": "right",
      "toNode": "ip11",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e026",
      "fromNode": "ip11",
      "fromSide": "right",
      "toNode": "ip11-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e027",
      "fromNode": "m4",
      "fromSide": "right",
      "toNode": "ip12",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e028",
      "fromNode": "ip12",
      "fromSide": "right",
      "toNode": "ip12-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e029",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m5",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e030",
      "fromNode": "m5",
      "fromSide": "right",
      "toNode": "ip13",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e031",
      "fromNode": "ip13",
      "fromSide": "right",
      "toNode": "ip13-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e032",
      "fromNode": "m5",
      "fromSide": "right",
      "toNode": "ip14",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e033",
      "fromNode": "ip14",
      "fromSide": "right",
      "toNode": "ip14-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e034",
      "fromNode": "m5",
      "fromSide": "right",
      "toNode": "ip15",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e035",
      "fromNode": "ip15",
      "fromSide": "right",
      "toNode": "ip15-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e036",
      "fromNode": "root",
      "fromSide": "right",
      "toNode": "m6",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e037",
      "fromNode": "m6",
      "fromSide": "right",
      "toNode": "ip16",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e038",
      "fromNode": "ip16",
      "fromSide": "right",
      "toNode": "ip16-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e039",
      "fromNode": "m6",
      "fromSide": "right",
      "toNode": "ip17",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e040",
      "fromNode": "ip17",
      "fromSide": "right",
      "toNode": "ip17-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e041",
      "fromNode": "m6",
      "fromSide": "right",
      "toNode": "ip18",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e042",
      "fromNode": "ip18",
      "fromSide": "right",
      "toNode": "ip18-work",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e043",
      "fromNode": "today",
      "fromSide": "right",
      "toNode": "question",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e044",
      "fromNode": "method",
      "fromSide": "left",
      "toNode": "root",
      "toSide": "top",
      "fromEnd": "none",
      "toEnd": "arrow"
    },
    {
      "id": "e045",
      "fromNode": "root",
      "fromSide": "bottom",
      "toNode": "today",
      "toSide": "left",
      "fromEnd": "none",
      "toEnd": "arrow",
      "label": "今天先做"
    }
  ]
}