apple-notes-writer
by @johnmuin
完美格式写入Apple备忘录。支持HTML格式、Markdown转换、多文件夹管理、自动转义特殊字符。
clawhub install apple-notes-writer📖 About This Skill
name: apple-notes-writer description: 完美格式写入Apple备忘录。支持HTML格式、Markdown转换、多文件夹管理、自动转义特殊字符。
Apple Notes Writer
将内容以完美格式写入Apple备忘录(macOS only)。
功能特性
使用方法
方式一:直接调用Python脚本
# 写入HTML格式内容
python scripts/apple_notes.py write \
--title "我的笔记" \
--content "标题
内容
"从Markdown文件写入
python scripts/apple_notes.py write \
--title "Markdown笔记" \
--file content.md \
--markdown写入指定文件夹
python scripts/apple_notes.py write \
--title "工作笔记" \
--content "内容
" \
--folder "工作"更新已存在的笔记
python scripts/apple_notes.py write \
--title "我的笔记" \
--content "新内容
" \
--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 = """
会议记录
时间:2024年3月28日
- 讨论项目进度
- 确定下周计划
"""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标签:
| 标签 | 效果 |
|------|------|
| 这是一个段落,包含粗体文字和斜体文字。 内容
内容
使用 | Markdown | 转换结果 |
|----------|----------|
| 脚本自动处理以下特殊字符: | 字符 | 处理方式 |
|------|----------|
| Apple Notes完美支持以下Unicode符号: | 符号 | 用途 | 示例 |
|------|------|------|
| ✓ | 完成/正确 | ⚠️ 重要提醒 步骤1 → 步骤2 📌 核心结论 💡 建议 当用户提到以下内容时,使用此技能: | 触发词 | 场景 |
|--------|------|
| "记笔记到备忘录" | 创建新笔记 |
| "写入Apple Notes" | 创建/更新笔记 |
| "创建备忘录" | 创建新笔记 |
| "更新备忘录" | 更新现有笔记 |
| "记录到备忘录" | 创建新笔记 |
| "保存到Apple备忘录" | 创建新笔记 |
| "添加到备忘录" | 追加内容 |
| "写入备忘录" | 创建新笔记 | 1. 确认需求 - 了解笔记主题、目标文件夹
2. 准备内容 - 用HTML格式组织内容,或使用Markdown转换
3. 转义字符 - 使用内置函数处理特殊字符
4. 执行写入 - 运行AppleScript创建/更新笔记
5. 验证结果 - 确认内容正确写入
6. 反馈用户 - 报告完成情况和笔记位置 通过笔记ID更新已有笔记: 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])
writer = AppleNotesWriter() content = """ 时间:2024年3月28日 14:00 参会人:张三、李四、王五 --- 记录时间:2024-03-28 16:30 writer.write(
title="产品评审会议纪要-20240328",
content=content,
folder="工作",
update_existing=True
)
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}")
1. 仅支持macOS - 依赖AppleScript,Windows/Linux不可用
2. iCloud账户 - 默认使用iCloud账户,可修改 原因:HTML标签未闭合或不支持
解决:检查所有标签是否正确闭合,只使用支持的标签 原因:引号或反斜杠未正确转义
解决:使用脚本内置的转义函数,不要手动转义 原因:文件夹不存在或名称错误
解决:先用 原因:权限问题或Apple Notes未运行
解决:确保Apple Notes已安装并至少运行过一次,检查自动化权限 MIT License
| 大标题、中标题、小标题 |
| | 段落 |
| | 换行 |
| | 无序列表(圆点) |
| | 有序列表(数字) |
| | 粗体 |
| | 斜体 |
| | 下划线 |
| HTML格式规范
✅ 正确示例
大标题
❌ 错误示例
标题
代码块
Markdown转换规则
markdown_to_html() 函数转换:# 标题 | |
| 标题
## 标题 | |
| 标题
### 标题 | |
| 标题
粗体 | 粗体 |
| *斜体* | 斜体 |
| - 列表项 | |
| 1. 列表项 | |
| 空行 | |特殊字符与符号
自动转义的字符
\ | 转义为 \\ |
| " | 转义为 \" |
| ' | 无需转义 |
| \n | 转为 |
| < > | HTML转义(Markdown模式) |推荐使用的特殊符号
|
| ✗ | 失败/错误 | |
| ⚠️ | 警告/注意 | |
| ☐ | 待办复选框 | |
| ● | 列表圆点 | (自动显示) |
| → | 箭头/流程 | |
| 📌 | 标记重点 | |
| 💡 | 提示/想法 | |触发词
工作流程
高级用法
更新现有笔记
# 获取笔记ID后更新
note_id = "x-coredata://.../ICNote/p20"验证写入结果
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产品评审会议纪要
讨论事项
待办事项
示例2:从Markdown文件批量导入
import os
from scripts.apple_notes import AppleNotesWriter, markdown_to_html注意事项
account参数
3. 文件夹必须存在 - 写入前确保目标文件夹已创建
4. HTML标签限制 - 不支持、、等复杂标签
5. 内容长度限制 - 单条笔记建议不超过10MB
故障排查
问题:笔记创建成功但格式错乱
问题:特殊字符显示异常
问题:找不到文件夹
create-folder创建文件夹,或检查文件夹名称问题:AppleScript执行失败
依赖
许可证