mcpField
W
writer-agent

writer-agent

github.com/hoangvantuan创意与媒体054 次安装2 周前更新
代码仓库

关于 writer-agent

Writer Agent 是将文档或 URL 转换为系列文章的写作技能,面向需要按指定风格和结构改写内容的用户。它根据文档长度选择处理流程,并支持多个维度的写作配置。

主要功能

  1. 01转换文档、网页和 YouTube URL
  2. 02选择声音、结构、身份、受众和情绪维度
  3. 03按输入长度选择处理层级
  4. 04支持主 Agent 写作或并行子 Agent 流程
  5. 05综合并检查生成的文章

适用场景

  1. 01将 PDF、DOCX 或 EPUB 转为文章系列
  2. 02把网页或 YouTube 内容改写为越南语文章
  3. 03为文章配置预设风格或自定义写作维度
  4. 04处理长文档并按层级拆分写作流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hoangvantuan/claude-plugin --skill writer-agent

安装后在 Claude Code 中输入/writer-agent确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

audiences/
busy-professionals.md
curious-beginners.md
deep-seekers.md
emotional_maps/
empower-challenge.md
provoke-transform.md
reflect-discover.md
identities/
contemplative-thinker.md
knowledge-curator.md
tech-builder.md
meta/
performance-benchmarks.md
references/
article-writer-prompt.md
context-extractor-prompt.md
context-optimization.md
decision-trees.md
detail-levels.md
dimension-comparison.md
dimension-selection.md
directory-structure.md
large-doc-processing.md
retry-workflow.md
shared-article-writing.md
steps-5-6-synthesize-verify.md
tier-1-workflow.md
tier-2-workflow.md
tier-3-workflow.md
tier-direct-path.md
scripts/
_wa-common.sh
convert_to_markdown.py
epub_converter.py
extract_structure.py

详细介绍

Writer Agent

将文档和 URL 转换为风格化的系列文章。

快速参考

参考资料用途加载步骤DPT1T2T3
directory-structure.md输出文件夹布局步骤 1✓✓✓✓
dimension-selection.md自定义模式维度表步骤 2(自定义)✓✓✓✓
decision-trees.md工作流决策指南仅在遇到疑惑时✓✓✓✓
retry-workflow.md错误恢复流程仅出错时-✓✓✓
large-doc-processing.md处理超过 50K 字的文档步骤 3(若超过 20K)--✓✓
article-writer-prompt.md子 Agent 提示词模板步骤 4-✓✓✓
context-extractor-prompt.md上下文提取模板步骤 3(Tier 2)--✓-
context-optimization.md上下文优化反模式步骤 3.1-✓✓✓
detail-levels.md输出详细程度选项步骤 2.5✓✓✓✓
shared-article-writing.md共享步骤 4.0-4.6步骤 4-✓✓✓

DP = 直接路径 | T1-T3 = Tier 1-3 | ✓ = 加载 | - = 跳过

Tier 工作流文件(在确定 Tier 后于步骤 2.7 加载):

Tier文件适用条件
直接路径tier-direct-path.md少于 20K 或(少于 50K 且文章数 ≤3)
Tier 1tier-1-workflow.md20K-50K(不符合直接路径条件)
Tier 2tier-2-workflow.md50K-100K
Tier 3tier-3-workflow.md>=100K

维度文件(在步骤 2 加载):voices/{voice}.md、structures/{structure}.md、identities/{identity}.md、audiences/{audience}.md、emotional_maps/{emotion}.md

工作流概览

直接路径(少于 20K 字,或少于 50K 字且文章数 <=3):

主 Agent 直接撰写所有文章,不使用子 Agent。

Input → Convert → Style/Structure → Plan → Write(main) → Synthesize → Verify
  1        1           2               3        4            5           6

标准路径(Tier 1-2,20K-100K 字):

Input → Convert → Style/Structure → Analyze → Extract → Write → Synthesize → Verify
  1        1           2               3         3         4        5           6

快速路径(Tier 3,>=100K 字):

Input → Convert → Style/Structure → Plan → Write(parallel) → Synthesize → Verify
  1        1           2              3          4              5           6

步骤 0:解析 Skill 路径(必需)

查找 wa-env → 运行 → 在整个工作流中使用绝对路径。

# Tìm wa-env (thử Glob trước, fallback find nếu plugin installed vào dotdir)
Glob("**/writer-agent/scripts/wa-env")  # hoặc Glob(".claude/**/wa-env")

# Chạy (dùng bash, không dùng source — để BASH_SOURCE resolve đúng)
bash {path_to_wa-env}
# → SCRIPTS_DIR, SKILL_DIR, VOICES_DIR, STRUCTURES_DIR, IDENTITIES_DIR,
#   AUDIENCES_DIR, EMOTIONS_DIR, TEMPLATES_DIR, REFERENCES_DIR

# Verify
assert Glob(f"{SCRIPTS_DIR}/wa-convert") and Glob(f"{VOICES_DIR}/*.md")

失败条件:未找到 wa-env → 停止。不要自行猜测路径。

第 1 步:输入处理

GUARD:SCRIPTS_DIR 已在 Step 0 中解析。如果尚未解析 → STOP,返回 Step 0。

检测输入类型并转换为 Markdown。

输出语言:始终使用越南语,无论源语言是什么。

输入类型检测方式操作
文件(PDF/DOCX/EPUB 等)路径 + 扩展名wa-convert {path}
URL(网页)http:// 或 https://wa-convert {url}
YouTube URLyoutube.com 或 youtu.bewa-convert {url}
纯文本 / .txt / .md无复杂扩展名重写 → wa-paste-text
文件/URL 转换
{SCRIPTS_DIR}/wa-convert [/path/to/file.pdf or url]

输出:writer-agent/{slug}-{timestamp}/input-handling/content.md

纯文本处理
  1. 读取内容(如果是文件)
  2. 重写为结构化 Markdown(添加标题,保留内容)
  3. 提议标题
  4. 执行:
echo "{rewritten_content}" | {SCRIPTS_DIR}/wa-paste-text - --title "{title}"
错误处理
错误操作
找不到文件请用户提供正确的路径
不支持的格式尝试使用 Docling,并向用户确认
URL 获取失败报告并停止
内容为空警告,并在继续前确认
PDF 已加密请用户提供解密后的版本

第 2 步:选择写作维度

系统包含 5 个独立维度。用户可选择预设组合,或选择 Custom 自由组合。

预设组合(推荐)

向用户展示下表,并询问选择哪个预设或“Custom”:

预设语气结构身份受众情感
教育者教师积木式结构技术构建者好奇的初学者赋能与挑战
讲故事者讲述者故事弧线沉思的思想者深度探索者反思与发现
分析师客观BLUF-证据知识策展人忙碌的专业人士赋能与挑战
探索者调查者五层结构知识策展人深度探索者激发与转变
导师引导者深度-实践沉思的思想者好奇的初学者反思与发现
反思者个人螺旋式回归沉思的思想者深度探索者反思与发现
禅师对话师徒式结构沉思的思想者深度探索者反思与发现

用法:显示上表 → 询问用户输入预设名称(例如“Educator”)或“Custom”。

  • 如果选择预设:5 个维度均已设置,跳至 Step 2.5
  • 如果选择 Custom:转到下方的 Step 2a-2f,逐一选择维度
  • 自适应结构:当内容类型混合或不适合固定结构时使用。仅可通过 Custom 模式选择,或由用户直接提出要求。
自定义模式

当用户选择“Custom”时 → 阅读 dimension-selection.md,逐一选择维度(语气 → 结构 → 身份 → 受众 → 情感),并进行兼容性检查。

第 2.5 步:选择详细程度

询问用户确认输出的详细程度。

级别比例描述
简洁15-25%概述,保留主要观点
标准30-40%平衡(推荐)
全面50-65%详细,保留更多示例
忠实75-90%几乎完整,按指定风格重写

默认值:标准(如果用户跳过或意图不明确)。PASS/FAIL 根据章节覆盖情况判定,而非字数。

详细的计算方法(target_ratio、example_percentage)和演示示例 → detail-levels.md。

第 2.6 步:层级参考表

规范层级定义(在整个文档中引用):

层级字数策略上下文处理方式术语表max_concurrent
Direct Path<20K 或(<50K 且 ≤3 篇文章)主 Agent 编写全部内容不适用(无子 Agent)内嵌(约 200 个词)不适用
Tier 120K-50K(不符合 Direct Path)子 Agent 直接读取源文档无上下文文件内嵌(约 200 个词)3
Tier 250K-100K智能压缩上下文提取器单独文件(约 600 个词)3
Tier 3>=100KFast Path,尽量减少开销无上下文文件内嵌(约 300 个词)2

优先级规则:

  • 首先检查 Direct Path 条件;这些条件优先于层级边界
  • 字数为 20K-50K 且文章数 ≤3 的文档使用 Direct Path(而非 Tier 1)
  • 只有不符合 Direct Path 条件的文档才会进入层级选择流程

注意:Direct Path 的 <50K 条件还受语言限制:EN 约 44K、VI 约 32K、混合语言约 38K 字。这些限制已预先计算在 structure.json → direct_path.capacity_ok 中。如果超出容量,则回退到 Tier 1。

主要区别:

  • Direct Path:主 Agent 负责处理所有内容(无子 Agent)
  • Tier 1:轻量级子 Agent,通过行范围读取源文档
  • Tier 2:通过上下文提取进行压缩(唯一使用单独术语表文件的层级)
  • Tier 3:与 Tier 1 类似,但分块更大、术语表选择更严格、并发数更低

第 2.7 步:加载层级工作流(必需)

确定 Step 2.6 中的层级后,读取相应的工作流文件:

tier = determine_tier(structure_json)  # Từ structure.json

if tier == "direct_path":
    Read(f"{SKILL_DIR}/references/tier-direct-path.md")
elif tier == 1:
    Read(f"{SKILL_DIR}/references/tier-1-workflow.md")
elif tier == 2:
    Read(f"{SKILL_DIR}/references/tier-2-workflow.md")
elif tier == 3:
    Read(f"{SKILL_DIR}/references/tier-3-workflow.md")

层级工作流文件包含 Steps 3-4。 完成 Step 4 后,加载 references/steps-5-6-synthesize-verify.md,以执行 Steps 5-6。

失败条件:如果未加载层级工作流文件 → 将不知道如何处理该层级的 Steps 3-4。停止并加载正确的文件。

评论

支持 Markdown