@captain_z/lyra
v1.0.6
Published
Universal content generation framework with plugin-based architecture
Downloads
213
Maintainers
Readme
Lyra
Lyra 是一个面向 Markdown 内容生产的 CLI 工具,用于生成周报内容、组装文章 Prompt,并治理 frontmatter 元数据(尤其是 tags)。
包名:@captain_z/lyra
命令:lyra
目录
功能
- 模板化内容生成(
weekly等) - 通过
lyra article/lyra prompt组装 Prompt - 使用
lyra schedule执行调度 - 使用
lyra check-images检查图片域名 - 使用
lyra check-metadata检查并整理元数据与 tags
安装
# 全局安装
npm install -g @captain_z/lyra
# 本地安装
npm install @captain_z/lyra快速开始
# 1) 初始化配置
lyra init
# 2) 查看模板
lyra list
# 3) 预览生成(不写文件)
lyra weekly --dry-run
# 4) 真实生成
lyra weekly命令参考
| 命令 | 别名 | 说明 |
|---|---|---|
| lyra | - | 启动交互模式 |
| lyra <template> | - | 按模板快速生成 |
| lyra create [template] | lyra c | 显式生成命令 |
| lyra list | lyra ls | 列出模板 |
| lyra init | - | 初始化配置 |
| lyra config | - | 查看/验证配置 |
| lyra schedule | lyra sched | 启动调度器 |
| lyra check-images | lyra check-img | 图片域名白名单检查 |
| lyra check-metadata | lyra check-meta | 元数据与 tags 整理 |
| lyra article | lyra a | 文章 Prompt 组装 |
| lyra prompt | lyra p | article 的兼容别名 |
| lyra publish | - | 发布到平台草稿(WeChat API/Playwright) |
发布配置(多内容 + 模块关联)
- 建议使用独立的
wechat.publish.json/zhihu.publish.json配置文件 - 发布配置仅包含平台发布字段(AI 配置跟随
.lyrarc.json) - 密钥类配置(如
WECHAT_ACCESS_TOKEN、AI_API_KEY)请放在.env(会自动加载),需要时可用--env指定自定义文件,参考.env.example
{
"lyraConfig": "./.lyrarc.json",
"title": "默认标题",
"author": "Lyra",
"digest": "默认摘要",
"thumb_image_path": "./Output/Z° North/Publish/default-cover.png",
"cover_source_order": ["ai", "unsplash", "placeholder"],
"articles": [
{
"title": "Weekly #12",
"module": "weekly",
"contentFile": "./Output/Z° North/Z°N Weekly/drafts/2026-03-16-weekly.html"
},
{
"title": "生活志 · 通勤观察",
"contentFile": "./Output/Z° North/Z°N 生活志/drafts/2026-03-16-life.html"
}
]
}发布命令:
lyra publish --config ./wechat.publish.json元数据与标签治理
lyra check-metadata 同时支持目录与单文件,并支持自动去重和 AI 补全标签。
# 目录检查(不改文件)
lyra check-metadata --path ../your-notes-repo
# 自动整理 tags
lyra check-metadata --path ../your-notes-repo --fix-tags
# 单文件整理
lyra check-metadata --path ./Input/Notes/today.md --fix-tags
# 本地清洗后,再用 AI 补全 tags
lyra check-metadata --path ../your-notes-repo --fix-tags --ai-tags --provider openai常用参数:
--path <path>:目录或单个 Markdown 文件--fix-tags:去重、trim、分隔符清洗--ai-tags:按标题和正文补全更合适 tags--max-tags <n>:每篇最大 tags 数(默认8)--min-tags <n>:每篇最小 tags 数(默认1)--dry-run:只预览不落盘
Provider 说明:
- 统一使用
.env中的AI_API_KEY - 用
AI_BASE_URL切换不同提供商(OpenAI 兼容,如 OpenRouter/LiteLLM) AI_MODEL控制模型名
示例 .env:
AI_API_KEY=your_key
AI_BASE_URL=https://openrouter.ai/api/v1
AI_MODEL=openai/gpt-4o-miniLiteLLM 示例:
AI_API_KEY=your_key
AI_BASE_URL=http://localhost:4000/v1
AI_MODEL=gpt-4o-miniUnsplash(封面兜底):
UNSPLASH_ACCESS_KEY=your_unsplash_key引用链接:
{
"templates": {
"weekly": {
"export": {
"referenceLinks": { "enabled": true }
}
}
}
}配置发现规则
CLI 会从当前目录向上查找:
.lyrarc.lyrarc.json.lyrarc.yaml.lyrarc.yml.lyrarc.js.lyrarc.cjs.lyrarc.mjslyra.config.jsonlyra.config.jslyra.config.cjslyra.config.mjs
最小配置示例
{
"global": {
"logLevel": "info",
"defaultTemplate": "weekly"
},
"templates": {
"weekly": {
"enabled": true,
"template": {
"path": "./templates/weekly.hbs"
},
"sources": {
"articles": "./articles",
"tools": "./tools",
"notes": "./notes"
},
"output": {
"path": "./output",
"filename": "Weekly-{{issueNumber}}.md"
},
"content": {
"articles": { "topN": 10, "minRating": 0 },
"tools": { "perCategory": 3 },
"notes": { "groupBy": "none" }
}
}
}
}版本策略
使用语义化版本(MAJOR.MINOR.PATCH):
MAJOR:不兼容变更MINOR:向后兼容功能PATCH:向后兼容修复
建议每次发布至少递增 PATCH。
故障排查
npm publish 在 prepublishOnly 失败
若在 npm run build 阶段出现 EPERM(dist 不可写),先清理并重建:
rm -rf dist
npm run build找不到配置文件
lyra init输出内容不符合预期
lyra weekly --dry-run --verbose文档
许可证
MIT
