← 返回 Skills 市场
121
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install apple-notes-writer
功能描述
完美格式写入Apple备忘录。支持HTML格式、Markdown转换、多文件夹管理、自动转义特殊字符。
使用说明 (SKILL.md)
Apple Notes Writer
将内容以完美格式写入Apple备忘录(macOS only)。
功能特性
- ✅ HTML格式支持 - 标题、列表、粗体、斜体等丰富格式
- ✅ Markdown转换 - 自动将Markdown转为Apple Notes支持的HTML
- ✅ 特殊字符转义 - 自动处理引号、反斜杠等棘手字符
- ✅ 文件夹管理 - 支持创建文件夹、指定目标文件夹
- ✅ 更新模式 - 可选择更新同名笔记或创建新笔记
使用方法
方式一:直接调用Python脚本
# 写入HTML格式内容
python scripts/apple_notes.py write \
--title "我的笔记" \
--content "\x3Cdiv>\x3Ch1>标题\x3C/h1>\x3Cp>内容\x3C/p>\x3C/div>"
# 从Markdown文件写入
python scripts/apple_notes.py write \
--title "Markdown笔记" \
--file content.md \
--markdown
# 写入指定文件夹
python scripts/apple_notes.py write \
--title "工作笔记" \
--content "\x3Cdiv>\x3Cp>内容\x3C/p>\x3C/div>" \
--folder "工作"
# 更新已存在的笔记
python scripts/apple_notes.py write \
--title "我的笔记" \
--content "\x3Cdiv>\x3Cp>新内容\x3C/p>\x3C/div>" \
--update
# 读取笔记内容
python scripts/apple_notes.py read --title "我的笔记"
# 列出文件夹中的所有笔记
python scripts/apple_notes.py list --folder "工作"
# 创建新文件夹
python scripts/apple_notes.py create-folder --title "新项目"
方式二:在Python代码中使用
from scripts.apple_notes import AppleNotesWriter, markdown_to_html
# 创建写入器
writer = AppleNotesWriter(account="iCloud")
# 写入HTML内容
html_content = """\x3Cdiv>
\x3Ch1>会议记录\x3C/h1>
\x3Cp>时间:2024年3月28日\x3C/p>
\x3Cul>
\x3Cli>讨论项目进度\x3C/li>
\x3Cli>确定下周计划\x3C/li>
\x3C/ul>
\x3C/div>"""
result = writer.write(
title="会议记录",
content=html_content,
folder="工作",
update_existing=True
)
print(result) # SUCCESS: Note created/updated - 会议记录
# Markdown转HTML后写入
markdown_text = """
# 学习笔记
## 重点内容
- **第一点**:非常重要
- *第二点*:次要内容
### 总结
这是总结段落。
"""
html = markdown_to_html(markdown_text)
writer.write(title="学习笔记", content=html)
支持的HTML标签
Apple Notes原生支持以下HTML标签:
| 标签 | 效果 |
|---|---|
\x3Ch1> \x3Ch2> \x3Ch3> |
大标题、中标题、小标题 |
\x3Cp> |
段落 |
\x3Cbr> |
换行 |
\x3Cul> \x3Cli> |
无序列表(圆点) |
\x3Col> \x3Cli> |
有序列表(数字) |
\x3Cb> \x3Cstrong> |
粗体 |
\x3Ci> \x3Cem> |
斜体 |
\x3Cu> |
下划线 |
\x3Cdiv> |
容器(必须包裹内容) |
HTML格式规范
✅ 正确示例
\x3Cdiv>
\x3Ch1>大标题\x3C/h1>
\x3Cp>这是一个段落,包含\x3Cb>粗体文字\x3C/b>和\x3Ci>斜体文字\x3C/i>。\x3C/p>
\x3Cul>
\x3Cli>列表项1\x3C/li>
\x3Cli>列表项2\x3C/li>
\x3C/ul>
\x3C/div>
❌ 错误示例
\x3C!-- 错误:没有外层div包裹 -->
\x3Ch1>标题\x3C/h1>
\x3Cp>内容\x3C/p>
\x3C!-- 错误:使用不支持的标签 -->
\x3Cdiv>
\x3Ccode>代码块\x3C/code> \x3C!-- code标签不支持 -->
\x3Cimg src="..."> \x3C!-- img标签不支持 -->
\x3C/div>
\x3C!-- 错误:未闭合的标签 -->
\x3Cdiv>
\x3Cp>内容
\x3C/div>
Markdown转换规则
使用 markdown_to_html() 函数转换:
| Markdown | 转换结果 |
|---|---|
# 标题 |
\x3Ch1>标题\x3C/h1> |
## 标题 |
\x3Ch2>标题\x3C/h2> |
### 标题 |
\x3Ch3>标题\x3C/h3> |
**粗体** |
\x3Cb>粗体\x3C/b> |
*斜体* |
\x3Ci>斜体\x3C/i> |
- 列表项 |
\x3Cul>\x3Cli>列表项\x3C/li>\x3C/ul> |
1. 列表项 |
\x3Col>\x3Cli>列表项\x3C/li>\x3C/ol> |
| 空行 | \x3Cbr> |
特殊字符与符号
自动转义的字符
脚本自动处理以下特殊字符:
| 字符 | 处理方式 |
|---|---|
\ |
转义为 \\ |
" |
转义为 \" |
' |
无需转义 |
| `\ | |
| ` | 转为 \x3Cbr> |
\x3C > |
HTML转义(Markdown模式) |
推荐使用的特殊符号
Apple Notes完美支持以下Unicode符号:
| 符号 | 用途 | 示例 |
|---|---|---|
| ✓ | 完成/正确 | \x3Cli>✓ 已完成\x3C/li> |
| ✗ | 失败/错误 | \x3Cli>✗ 失败\x3C/li> |
| ⚠️ | 警告/注意 | \x3Cp>⚠️ 重要提醒\x3C/p> |
| ☐ | 待办复选框 | \x3Cli>☐ 待办事项\x3C/li> |
| ● | 列表圆点 | (\x3Cul>自动显示) |
| → | 箭头/流程 | \x3Cp>步骤1 → 步骤2\x3C/p> |
| 📌 | 标记重点 | \x3Cp>📌 核心结论\x3C/p> |
| 💡 | 提示/想法 | \x3Cp>💡 建议\x3C/p> |
触发词
当用户提到以下内容时,使用此技能:
| 触发词 | 场景 |
|---|---|
| "记笔记到备忘录" | 创建新笔记 |
| "写入Apple Notes" | 创建/更新笔记 |
| "创建备忘录" | 创建新笔记 |
| "更新备忘录" | 更新现有笔记 |
| "记录到备忘录" | 创建新笔记 |
| "保存到Apple备忘录" | 创建新笔记 |
| "添加到备忘录" | 追加内容 |
| "写入备忘录" | 创建新笔记 |
工作流程
- 确认需求 - 了解笔记主题、目标文件夹
- 准备内容 - 用HTML格式组织内容,或使用Markdown转换
- 转义字符 - 使用内置函数处理特殊字符
- 执行写入 - 运行AppleScript创建/更新笔记
- 验证结果 - 确认内容正确写入
- 反馈用户 - 报告完成情况和笔记位置
高级用法
更新现有笔记
通过笔记ID更新已有笔记:
# 获取笔记ID后更新
note_id = "x-coredata://.../ICNote/p20"
script = f'''
tell application "Notes"
set targetNote to note id "{note_id}"
set body of targetNote to "{escaped_content}"
end tell
'''
subprocess.run(['osascript', '-e', script])
验证写入结果
verify_script = f'''
tell application "Notes"
set targetNote to note id "{note_id}"
return body of targetNote
end tell
'''
result = subprocess.run(['osascript', '-e', verify_script],
capture_output=True, text=True)
print(result.stdout) # 打印笔记内容验证
完整示例
示例1:记录会议纪要
from scripts.apple_notes import AppleNotesWriter
writer = AppleNotesWriter()
content = """\x3Cdiv>
\x3Ch1>产品评审会议纪要\x3C/h1>
\x3Cp>\x3Cb>时间:\x3C/b>2024年3月28日 14:00\x3C/p>
\x3Cp>\x3Cb>参会人:\x3C/b>张三、李四、王五\x3C/p>
\x3Ch2>讨论事项\x3C/h2>
\x3Cul>
\x3Cli>确认Q2产品路线图\x3C/li>
\x3Cli>讨论新功能优先级\x3C/li>
\x3Cli>确定下周迭代计划\x3C/li>
\x3C/ul>
\x3Ch2>待办事项\x3C/h2>
\x3Cul>
\x3Cli>\x3Cb>张三\x3C/b>:完成需求文档(3月30日前)\x3C/li>
\x3Cli>\x3Cb>李四\x3C/b>:准备技术方案(4月1日前)\x3C/li>
\x3C/ul>
\x3Cp>---\x3C/p>
\x3Cp>\x3Ci>记录时间:2024-03-28 16:30\x3C/i>\x3C/p>
\x3C/div>"""
writer.write(
title="产品评审会议纪要-20240328",
content=content,
folder="工作",
update_existing=True
)
示例2:从Markdown文件批量导入
import os
from scripts.apple_notes import AppleNotesWriter, markdown_to_html
writer = AppleNotesWriter()
notes_dir = "/path/to/notes"
for filename in os.listdir(notes_dir):
if filename.endswith('.md'):
with open(os.path.join(notes_dir, filename), 'r') as f:
markdown_content = f.read()
html_content = markdown_to_html(markdown_content)
title = filename.replace('.md', '')
writer.write(
title=title,
content=html_content,
folder="导入的笔记"
)
print(f"已导入: {title}")
注意事项
- 仅支持macOS - 依赖AppleScript,Windows/Linux不可用
- iCloud账户 - 默认使用iCloud账户,可修改
account参数 - 文件夹必须存在 - 写入前确保目标文件夹已创建
- HTML标签限制 - 不支持
\x3Ccode>、\x3Cimg>、\x3Ctable>等复杂标签 - 内容长度限制 - 单条笔记建议不超过10MB
故障排查
问题:笔记创建成功但格式错乱
原因:HTML标签未闭合或不支持 解决:检查所有标签是否正确闭合,只使用支持的标签
问题:特殊字符显示异常
原因:引号或反斜杠未正确转义 解决:使用脚本内置的转义函数,不要手动转义
问题:找不到文件夹
原因:文件夹不存在或名称错误
解决:先用create-folder创建文件夹,或检查文件夹名称
问题:AppleScript执行失败
原因:权限问题或Apple Notes未运行 解决:确保Apple Notes已安装并至少运行过一次,检查自动化权限
依赖
- macOS 10.14+
- Python 3.7+
- Apple Notes.app
许可证
MIT License
安全使用建议
这个技能看起来实现了它宣称的功能:通过本地 Python 脚本调用 osascript/AppleScript 在 macOS 的 Apple Notes 中创建、更新和读取笔记。注意事项:
- 该脚本会在本地执行 AppleScript(osascript),因此 macOS 的“自动化/辅助权限”可能会弹出授权提示。保证在受信任的机器上运行并授予最小必要权限。
- 批量导入会读取你指定目录下的文件(.md),只有在你信任这些文件内容时再运行以避免把不期望的内容写入 Notes。
- 虽然没有网络/外部凭据调用,但脚本会把你提供的任意内容写入系统 Notes;在将敏感信息通过此工具写入系统前请三思。
- 如果有顾虑,可先审阅 scripts/apple_notes.py 源码(已包含在包中)并在非生产帐号或测试机器上试运行。
功能分析
Type: OpenClaw Skill
Name: apple-notes-writer
Version: 1.0.0
The apple-notes-writer skill is a legitimate tool for automating Apple Notes on macOS. It uses Python's subprocess module to execute AppleScript (osascript) for creating, reading, and managing notes. The code includes functional escaping logic (_escape_for_applescript) to prevent command injection within the AppleScript environment and provides a simple Markdown-to-HTML converter. No evidence of data exfiltration, malicious persistence, or harmful prompt injection was found across the scripts (apple_notes.py) or documentation (SKILL.md).
能力评估
Purpose & Capability
技能名/描述(写入 Apple Notes)与其所需项一致:没有外部凭据、没有不相关的二进制或配置路径。代码实现通过 AppleScript 操作 Notes(macOS-only),这是实现该目的的合理手段。
Instruction Scope
SKILL.md 指示运行本地 Python 脚本、可读取本地 Markdown 文件并将内容通过 AppleScript 写入 Notes。指令只引用本地文件、AppleScript 和 Notes,未要求读取系统范围凭据或把数据发送到外部网络端点。批量导入会读取指定目录下的 .md 文件——这与功能预期一致。
Install Mechanism
无安装规范(instruction-only + 附带脚本文件),不会自动下载或在安装时写入不明二进制。代码以脚本形式包含在包内,执行时使用本机 osascript。
Credentials
无需任何环境变量、API 密钥或外部凭据。请求的本地资源(文件路径、Notes 帐户)与功能直接相关,未见与功能无关的敏感凭据。
Persistence & Privilege
技能未设置 always:true,也不会修改其他技能或全局代理配置。默认允许模型调用(平台默认),但这与技能能力和风险无不一致之处。
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install apple-notes-writer - 安装完成后,直接呼叫该 Skill 的名称或使用
/apple-notes-writer触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Apple Notes Writer 1.0.0 – 首次发布
- 支持以HTML格式完美写入Apple备忘录,适配标题、列表、粗体、斜体等基础样式
- 自动将Markdown内容转换为Apple Notes兼容的HTML
- 内置特殊字符转义与处理,保证内容格式安全
- 支持指定/创建文件夹、更新或新建同名笔记
- 提供Python API及命令行脚本调用方式,方便集成与自动化
- 附带故障排查、示例代码、格式规范与高级用法说明
元数据
常见问题
apple-notes-writer 是什么?
完美格式写入Apple备忘录。支持HTML格式、Markdown转换、多文件夹管理、自动转义特殊字符。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 121 次。
如何安装 apple-notes-writer?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install apple-notes-writer」即可一键安装,无需额外配置。
apple-notes-writer 是免费的吗?
是的,apple-notes-writer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
apple-notes-writer 支持哪些平台?
apple-notes-writer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 apple-notes-writer?
由 johnmuin(@johnmuin)开发并维护,当前版本 v1.0.0。
推荐 Skills