🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Voice Memo Sync

by @ying-wen

Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。

Versionv1.6.1
Downloads693
TERMINAL
clawhub install voice-memo-sync

📖 About This Skill


name: voice-memo-sync description: | Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。 version: 1.6.1 author: Ying Wen homepage: https://github.com/ying-wen/voice-memo-sync license: MIT metadata: openclaw: emoji: "🎙️" os: ["darwin"] requires: bins: ["ffmpeg", "python3"] optional_bins: ["whisper-cli", "whisper", "yt-dlp", "remindctl", "summarize"] install: - id: init kind: script command: "./scripts/install.sh" label: "Initialize Voice Memo Sync" - id: ffmpeg kind: brew formula: ffmpeg bins: ["ffmpeg"] label: "Install FFmpeg (required)" - id: whisper-cpp kind: brew formula: whisper-cpp bins: ["whisper-cli"] label: "Install whisper-cpp (Metal GPU - recommended)" - id: whisper kind: brew formula: openai-whisper bins: ["whisper"] label: "Install Whisper (CPU fallback)" - id: yt-dlp kind: brew formula: yt-dlp bins: ["yt-dlp"] label: "Install yt-dlp (for video URLs)"

Voice Memo Sync 🎙️

Intelligent voice/video transcription and organization system. 智能语音/视频转录与整理系统。


Quick Start / 快速开始

# Run installation script / 运行安装脚本
cd ~/.openclaw/workspace/skills/voice-memo-sync
./scripts/install.sh

What it does / 安装内容: 1. Creates data directory memory/voice-memos/ / 创建数据目录 2. Creates config file config/voice-memo-sync.yaml / 创建配置文件 3. Creates Apple Notes folder "Voice Memos" / 创建 Apple Notes 文件夹 4. Checks dependencies and prompts installation / 检查依赖并提示安装


When to Use / 何时使用

USE this skill when user:

  • Sends voice/audio/video files / 发送语音/音频/视频文件
  • Sends YouTube/Bilibili URLs / 发送 YouTube/B站 链接
  • Sends transcript text files / 发送转录文本文件
  • Says "sync voice memos", "process recording", "organize this video"
  • 说「同步语音备忘录」「处理录音」「整理这个视频」
  • DO NOT use when:

  • User just wants to play audio/video / 用户只想播放音视频
  • User asks about music/podcasts without transcription needs / 询问音乐/播客但不需要转录

  • Supported Formats / 支持格式

    ⚡ Metal GPU Acceleration (NEW)

    On Apple Silicon, whisper-cpp provides 15-20x faster transcription:

    | Audio | CPU (openai-whisper) | Metal GPU (whisper-cpp) | |-------|---------------------|------------------------| | 5 min | ~5 min | ~20 sec | | 30 min | ~30 min | ~2 min | | 60 min | ~60 min | ~4 min |

    # Install for Metal acceleration (recommended)
    brew install whisper-cpp
    

    The skill auto-detects and uses Metal when available.

    | Type / 类型 | Formats / 格式 | Processing / 处理方式 | |-------------|----------------|----------------------| | Voice Memos | .qta, .m4a | Apple native (QTA metadata) → Whisper fallback | | Audio | .mp3, .wav, .aac, .flac | Whisper local transcription | | Video | .mp4, .mov, .mkv, .webm | ffmpeg extract → Whisper | | YouTube | URL | summarize CLI → yt-dlp fallback | | Bilibili | URL | yt-dlp download → Whisper | | Text | .txt, .md | Direct read, skip transcription | | Documents | .doc, .docx | textutil convert → process | | Structured | .json, .csv | Parse and extract text | | iCloud | Configured paths | Scheduled sync |


    Processing Pipeline / 处理流程

    Input (File/URL/Text)
            │
            ▼
    ┌─────────────────────────────────────┐
    │     1. Source Detection            │
    │     来源识别                        │
    │  Voice Memo / URL / File / Text    │
    └─────────────────┬───────────────────┘
                      │
                      ▼
    ┌─────────────────────────────────────┐
    │     2. Save Source Metadata        │
    │     保存源信息                      │
    │  → memory/voice-memos/sources/     │
    └─────────────────┬───────────────────┘
                      │
                      ▼
    ┌─────────────────────────────────────┐
    │     3. Transcription               │
    │     转录提取                        │
    │  Priority: Apple > Text > summarize│
    │           > Whisper-local > API    │
    └─────────────────┬───────────────────┘
                      │
                      ▼
    ┌─────────────────────────────────────┐
    │     4. Save Raw Transcript         │
    │     保存原始转录                    │
    │  → memory/voice-memos/transcripts/ │
    └─────────────────┬───────────────────┘
                      │
                      ▼
    ┌─────────────────────────────────────┐
    │     5. LLM Deep Processing         │
    │     LLM深度整理                     │
    │  • Read USER.md & MEMORY.md        │
    │  • Clean up spoken language        │
    │  • Extract key points & insights   │
    │  • Identify TODOs & connections    │
    └─────────────────┬───────────────────┘
                      │
                      ▼
    ┌─────────────────────────────────────┐
    │     6. Save Processed Result       │
    │     保存处理结果                    │
    │  → memory/voice-memos/processed/   │
    └─────────────────┬───────────────────┘
                      │
              ┌───────┴───────┐
              ▼               ▼
    ┌─────────────────┐ ┌─────────────────┐
    │ 7a. Apple Notes │ │ 7b. Reminders  │
    │ Structured note │ │ Create TODOs   │
    │ with #hashtags  │ │ 创建提醒       │
    └────────┬────────┘ └────────┬───────┘
             │                   │
             └─────────┬─────────┘
                       ▼
    ┌─────────────────────────────────────┐
    │     8. Update Index                │
    │     更新索引                        │
    │  → memory/voice-memos/INDEX.md     │
    └─────────────────────────────────────┘
    


    Data Structure / 数据结构

    memory/voice-memos/           # All data, searchable via memory_search
    ├── INDEX.md                  # Processing records index / 处理记录索引
    ├── sources/                  # Original file metadata / 原始文件元数据
    │   └── YYYY-MM-DD_xxx.json
    ├── transcripts/              # Raw transcripts / 原始转录文本
    │   └── YYYY-MM-DD_source_title.md
    ├── processed/                # LLM processed content / LLM处理后内容
    │   └── YYYY-MM-DD_source_title.md
    └── synced/                   # Sync records / 同步记录
        └── YYYY-MM-DD_source_title.json
    


    Apple Notes Output Format / 输出格式

    The skill reads USER.md, SOUL.md, and MEMORY.md to provide personalized analysis:

  • Deep insights tailored to user's research/work focus
  • Connections to active projects and ongoing interests
  • Actionable recommendations based on user's decision style
  • Critical thinking that challenges assumptions
  • 处理时会读取 USER.mdSOUL.mdMEMORY.md 提供个性化分析

  • 结合用户研究/工作重点的深度洞察
  • 与活跃项目和持续关注领域的关联
  • 基于用户决策风格的行动建议
  • 挑战假设的批判性思考
  • 🎙️ [Auto-generated Title / 智能生成的标题]

    📅 Date | ⏱️ Duration | 👤 Source 🏷️ #tag1 #tag2 #tag3

    ━━━━━━━━━━━━━━━━━━━━━━

    📌 Summary / 核心摘要 [One paragraph summarizing the content]

    🎯 Key Points / 关键要点 • Point 1 • Point 2 • Point 3

    💡 Deep Analysis & Reflection (For User) / 深度分析与反思 [Personalized analysis connecting to user's: - Current research directions (from MEMORY.md) - Active projects and interests (from USER.md) - Decision-making style and preferences - Critical counter-arguments and blind spots]

    📋 Action Items / 行动建议 ☐ Research: [specific to user's academic work] ☐ Business: [relevant to startup/investment focus] ☐ Content: [ideas for courses/articles]

    🔗 Related Connections / 相关联系 • Connection to [project/memory] • Recommended reading/research

    💬 Notable Quotes / 金句摘录 • "Quote 1" • "Quote 2"

    ━━━━━━━━━━━━━━━━━━━━━━

    📝 Original Transcript (Cleaned) / 原始转录(已整理) [Full transcript text, cleaned up from spoken language / 完整转录,已整理口语表达]


    QTA File Format / QTA文件格式 (Technical Reference)

    Apple Voice Memos on iOS/macOS 14+ uses .qta (QuickTime Audio) files that embed native transcription directly in the file metadata.

    Structure

    QTA File
    ├── ftyp (file type marker: "qt  ")
    ├── wide (extended marker)
    ├── mdat (audio data, typically 90%+ of file size)
    └── moov (metadata container)
        ├── mvhd (movie header)
        └── trak (one or more tracks)
            ├── tkhd (track header)
            ├── mdia (media data)
            └── meta (metadata - TRANSCRIPTION HERE!)
                ├── hdlr (handler: "mdta")
                ├── keys (key list: "com.apple.VoiceMemos.tsrp")
                └── ilst (data list)
                    └── data (JSON transcription payload)
    

    Transcription JSON Format

    {
      "locale": {"identifier": "zh-Hans_GB", "current": 1},
      "attributedString": {
        "runs": ["字",0,"符",1,"转",2,"录",3,...],
        "attributeTable": [
          {"timeRange": [0.0, 0.5]},
          {"timeRange": [0.5, 0.8]},
          ...
        ]
      }
    }
    

    Key Points:

  • runs array alternates: [text, index, text, index, ...]
  • attributeTable provides timestamps for each character
  • JSON is embedded raw in the ilst/data atom
  • Use extract-apple-transcript.py to reliably extract
  • Extraction Script

    # Extract plain text
    python3 scripts/extract-apple-transcript.py recording.qta

    Extract with metadata (JSON output)

    python3 scripts/extract-apple-transcript.py recording.qta --json

    Extract with timestamps

    python3 scripts/extract-apple-transcript.py recording.qta --json --with-timestamps

    Common Issues

    | Issue | Cause | Solution | |-------|-------|----------| | "未找到转录数据" | Recording still processing | Wait 1-2 min, or use Whisper | | "转录标记存在但数据不完整" | Partial transcription | Use Whisper fallback | | JSON parse error | Corrupted file | Try Whisper transcription |


    Location / 位置: ~/.openclaw/workspace/config/voice-memo-sync.yaml

    sources:
      voice_memos:
        enabled: true
        path: "~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/"
      icloud:
        enabled: true
        paths:
          - "~/Library/Mobile Documents/com~apple~CloudDocs/Recordings"
          - "~/Library/Mobile Documents/com~apple~CloudDocs/Meeting Recordings"
        watch_patterns: ["*.m4a", "*.mp3", "*.mp4", "*.wav", "*.mov"]

    transcription: # Priority order / 优先级顺序 priority: ["apple", "text", "summarize", "whisper-local"] whisper_model: "small" # tiny/small/medium/large language: "auto" # auto/zh/en/ja/ko/...

    notes: folder: "Voice Memos" # Apple Notes folder name include_quotes: true include_original: true

    reminders: enabled: true list: "Reminders" auto_create: true


    Scripts / 脚本

    | Script | Purpose / 用途 | Usage / 用法 | |--------|----------------|--------------| | install.sh | Initialize setup | ./install.sh | | process.sh | Unified processing | ./process.sh | | extract-apple-transcript.py | Extract Apple native transcription | python3 extract-apple-transcript.py | | create-apple-note.sh | Create Apple Notes | ./create-apple-note.sh <content></code> | | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">sync-icloud-recordings.sh</code> | Sync iCloud directory | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">./sync-icloud-recordings.sh</code> |</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Agent Processing Guide / Agent处理指南</h3></p><p style="margin:8px 0">When user sends audio/video or URL, follow these steps: 当用户发送音视频或URL时,按以下步骤处理:</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 1: Detect Input Type / 识别输入类型</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">YouTube URL → summarize extract Bilibili URL → yt-dlp download + whisper .qta/.m4a → Apple transcript extraction Other audio/video → whisper transcription .txt/.md file → direct read .doc/.docx → textutil convert </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 2: Save Source Info / 保存源信息</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Record to memory/voice-memos/sources/ echo '{"input":"...", "type":"...", "date":"YYYY-MM-DD"}' > sources/xxx.json </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 3: Get/Save Transcript / 获取保存转录</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Save to memory/voice-memos/transcripts/YYYY-MM-DD_source_title.md <h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Include: source info + full raw transcript</h2> </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 4: LLM Deep Processing / LLM深度整理</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Read USER.md and MEMORY.md, combining user context.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">MODE SELECTION (Auto-detect or Manual Override) / 模式选择:</strong></p><p style="margin:8px 0">┌─────────────────────────────────────────────────────────────────┐ │ Mode A: Solo Memo (Default) / 短语音 │ │ Trigger: < 5 min, single speaker, casual │ │ Output: Clean text + Key points + TODOs + Connections │ └─────────────────────────────────────────────────────────────────┘</p><p style="margin:8px 0">┌─────────────────────────────────────────────────────────────────┐ │ Mode B: Deep Meeting / 深度会议 │ │ Trigger: 15-60 min, multi-speaker with labels │ │ Output: │ │ 1. Executive Summary (1 paragraph) │ │ 2. Chronological Detail by time blocks │ │ 3. Debate Flow (who said what, conflicts) │ │ 4. Decision Matrix (Issue → Decision → Rationale) │ │ 5. Action Items with owners │ │ 6. Vital Quotes (preserve Voice) │ └─────────────────────────────────────────────────────────────────┘</p><p style="margin:8px 0">┌─────────────────────────────────────────────────────────────────┐ │ Mode C: Lecture / Talk / 讲座模式 (NEW) │ │ Trigger: Single speaker, 30min-3hr, structured presentation │ │ Output: │ │ 1. Executive Summary (1 paragraph) │ │ 2. <strong style="color:#e5e7eb">Argument Structure (论点层级)</strong>: │ │ - Core Thesis (核心论点) │ │ - Supporting Arguments (分论点 1, 2, 3...) │ │ - Key Evidence/Examples for each argument │ │ - Counter-arguments addressed (if any) │ │ 3. Key Definitions (关键定义/概念) │ │ 4. Notable Quotes (金句, with timestamps if available) │ │ 5. Connections to User's Work (个人关联) │ │ 6. Questions Raised / Gaps (讲座未解决的问题) │ └─────────────────────────────────────────────────────────────────┘</p><p style="margin:8px 0">┌─────────────────────────────────────────────────────────────────┐ │ Mode D: Lecture + Q&A / 讲座+问答 (NEW) │ │ Trigger: First part monologue, second part Q&A │ │ Output: │ │ <strong style="color:#e5e7eb">Part I: Lecture Section</strong> (use Mode C structure) │ │ <strong style="color:#e5e7eb">Part II: Q&A Section</strong> │ │ - Group questions by theme/topic (not chronological) │ │ - Format: Q1 → A1 (summary), Q2 → A2... │ │ - Highlight: Best Questions, Surprising Answers │ └─────────────────────────────────────────────────────────────────┘</p><p style="margin:8px 0">┌─────────────────────────────────────────────────────────────────┐ │ Mode E: Long-form No-Speaker-Label / 超长无标注会议 (NEW) │ │ Trigger: > 90 min, NO speaker diarization (text is a blob) │ │ Strategy: │ │ 1. <strong style="color:#e5e7eb">Chunking</strong>: Split into ~30min segments for processing │ │ 2. <strong style="color:#e5e7eb">Topic Detection</strong>: Identify topic shift points │ │ (Don't force time blocks; use semantic breaks) │ │ 3. <strong style="color:#e5e7eb">Abandon Attribution</strong>: Don't guess who said what │ │ Output: │ │ 1. Executive Summary │ │ 2. <strong style="color:#e5e7eb">Topic Blocks</strong> (not time blocks): │ │ - Topic 1: [Summary] + [Key points] + [Quotes] │ │ - Topic 2: ... │ │ 3. Unresolved Issues / Open Questions │ │ 4. Action Items (may lack owners) │ │ 5. Full Cleaned Transcript (appended or linked) │ └─────────────────────────────────────────────────────────────────┘</p><p style="margin:8px 0"><strong style="color:#e5e7eb">TWO-PASS PROCESSING for Long Content (> 60 min):</strong> <li style="color:#94a3b8;margin:3px 0">Pass 1 (Quick Scan): Identify structure type, speaker presence, topic shifts</li> <li style="color:#94a3b8;margin:3px 0">Pass 2 (Deep Process): Apply appropriate mode to each segment</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">OUTPUT DENSITY LEVELS (User can request):</strong> <li style="color:#94a3b8;margin:3px 0">Level 1: Executive Only (1 page, for busy stakeholders)</li> <li style="color:#94a3b8;margin:3px 0">Level 2: Structured Summary (5-10 pages, default)</li> <li style="color:#94a3b8;margin:3px 0">Level 3: Full Annotated Transcript (everything, with margin notes)</li> </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 5: Save Processed Result / 保存处理结果</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Save to memory/voice-memos/processed/YYYY-MM-DD_source_title.md </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 6: Sync to Apple Notes (MANDATORY) / 同步到Apple Notes(必须执行)</h4></p><p style="margin:8px 0">⚠️ <strong style="color:#e5e7eb">CRITICAL: This step is MANDATORY. Never skip it.</strong> ⚠️ <strong style="color:#e5e7eb">关键:此步骤必须执行,不可跳过。</strong></p><p style="margin:8px 0">⚠️ <strong style="color:#e5e7eb">Apple Notes requires HTML format, NOT Markdown!</strong> ⚠️ <strong style="color:#e5e7eb">Apple Notes 需要 HTML 格式,不能直接用 Markdown!</strong></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Correct workflow / 正确流程:</strong> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># 1. Convert Markdown to HTML using pandoc (REQUIRED) pandoc /path/to/processed.md -f markdown -t html -o /tmp/note-content.html</p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">2. Create note with HTML content via AppleScript</h2> osascript <<'EOF' set htmlContent to do shell script "cat /tmp/note-content.html" set noteTitle to "🎙️ Note Title"</p><p style="margin:8px 0">tell application "Notes" set folderName to "Voice Memos" set targetFolder to missing value repeat with f in folders if name of f is folderName then set targetFolder to f exit repeat end if end repeat if targetFolder is missing value then make new folder with properties {name:folderName} delay 1 set targetFolder to folder folderName end if tell targetFolder make new note with properties {name:noteTitle, body:htmlContent} end tell end tell EOF </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Common mistakes to avoid / 常见错误:</strong> <li style="color:#94a3b8;margin:3px 0">❌ Writing raw Markdown to Apple Notes → 乱码/格式错误</li> <li style="color:#94a3b8;margin:3px 0">❌ Using <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">memo notes -a</code> interactively → 无法自动化</li> <li style="color:#94a3b8;margin:3px 0">❌ Skipping this step entirely → 其他设备看不到</li> <li style="color:#94a3b8;margin:3px 0">✅ Always convert MD → HTML via pandoc first</li> <li style="color:#94a3b8;margin:3px 0">✅ Always verify the note was created successfully</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 7: Create Reminders / 创建提醒</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">remindctl add --title "TODO" --list "Reminders" --due "YYYY-MM-DD" </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Step 8: Update INDEX.md / 更新索引</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Append record to memory/voice-memos/INDEX.md </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Privacy / 隐私说明</h3></p><p style="margin:8px 0">⚠️ <strong style="color:#e5e7eb">Privacy-First Design:</strong> <li style="color:#94a3b8;margin:3px 0">All transcription runs locally by default / 所有转录默认在本地完成</li> <li style="color:#94a3b8;margin:3px 0">Apple native transcripts extracted from local files / Apple原生转录从本地文件提取</li> <li style="color:#94a3b8;margin:3px 0">Whisper runs locally / Whisper在本地运行</li> <li style="color:#94a3b8;margin:3px 0">No data sent to external servers (unless user explicitly configures external API)</li> <li style="color:#94a3b8;margin:3px 0">User data stored only in local memory directory</li></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Troubleshooting / 故障排除</h3></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Whisper not found</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">brew install openai-whisper </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">yt-dlp download fails</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Update yt-dlp brew upgrade yt-dlp</p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Or use proxy</h2> export ALL_PROXY=http://127.0.0.1:7890 </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Apple Notes folder not created</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Manually create via AppleScript osascript -e 'tell application "Notes" to tell account "iCloud" to make new folder with properties {name:"Voice Memos"}' </code></pre></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Transcription quality issues</h4> <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># Use larger model for better accuracy <h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Edit config: whisper_model: "medium" or "large"</h2> </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Changelog / 更新日志</h3></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.6.1 (2026-03-09)</h4> <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">CRITICAL FIX</strong>: Apple Notes sync step marked as MANDATORY (不可跳过).</li> <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">FORMAT FIX</strong>: Explicit requirement to convert Markdown → HTML via pandoc before syncing.</li> <li style="color:#94a3b8;margin:3px 0">Added complete AppleScript template with folder creation.</li> <li style="color:#94a3b8;margin:3px 0">Common mistakes checklist to prevent format issues.</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.6.0 (2026-03-09)</h4> <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">QTA Format Documentation</strong>: Added detailed technical reference for Apple's QTA file format.</li> <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Enhanced extract-apple-transcript.py v1.1</strong>: Improved JSON boundary detection, better error diagnostics, timestamp extraction support.</li> <li style="color:#94a3b8;margin:3px 0">Added <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">--with-timestamps</code> option for detailed time-aligned output.</li> <li style="color:#94a3b8;margin:3px 0">Better handling of large files (>100MB).</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.5.0 (2026-03-09)</h4> <li style="color:#94a3b8;margin:3px 0">Added Mode C: Lecture/Talk (single speaker, argument structure extraction).</li> <li style="color:#94a3b8;margin:3px 0">Added Mode D: Lecture + Q&A (hybrid processing).</li> <li style="color:#94a3b8;margin:3px 0">Added Mode E: Long-form No-Speaker-Label (> 90min, topic-based chunking).</li> <li style="color:#94a3b8;margin:3px 0">Introduced Two-Pass Processing for content > 60 min.</li> <li style="color:#94a3b8;margin:3px 0">Added Output Density Levels (Executive / Structured / Full Annotated).</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.4.0 (2026-03-09)</h4> <li style="color:#94a3b8;margin:3px 0">Introduced "Deep Meeting Mode" for content > 15min or multi-speaker.</li> <li style="color:#94a3b8;margin:3px 0">Preserves information density for critical discussions/interviews.</li> <li style="color:#94a3b8;margin:3px 0">New structure: Executive Summary + Chronological Detail + Debate Flow + Decision Matrix.</li> <li style="color:#94a3b8;margin:3px 0">Explicit attribution of quotes and arguments.</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.2.0 (2026-03-08)</h4> <li style="color:#94a3b8;margin:3px 0">Added unified processing script process.sh / 新增统一处理脚本</li> <li style="color:#94a3b8;margin:3px 0">Added installation script install.sh / 新增安装脚本</li> <li style="color:#94a3b8;margin:3px 0">Unified data storage to memory/voice-memos/ / 统一数据存储</li> <li style="color:#94a3b8;margin:3px 0">Added .doc/.docx/.json/.csv support / 新增文档格式支持</li> <li style="color:#94a3b8;margin:3px 0">Bilingual SKILL.md / 中英双语SKILL.md</li> <li style="color:#94a3b8;margin:3px 0">Improved INDEX.md auto-update / 完善索引自动更新</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.1.0 (2026-03-08)</h4> <li style="color:#94a3b8;margin:3px 0">Added iCloud directory sync / 新增iCloud目录同步</li> <li style="color:#94a3b8;margin:3px 0">Added YouTube/Bilibili support / 新增YouTube/B站支持</li> <li style="color:#94a3b8;margin:3px 0">Added text file processing / 新增文本文件处理</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">v1.0.0 (2026-03-08)</h4> <li style="color:#94a3b8;margin:3px 0">Initial release / 初始版本</li> <li style="color:#94a3b8;margin:3px 0">Apple Voice Memos transcription / Apple语音备忘录转录</li> <li style="color:#94a3b8;margin:3px 0">Apple Notes sync / Apple Notes同步</li> </p></div></section></div><div class="two-col-side"></div></div></div><script> document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn => { btn.addEventListener('click', () => { const cmd = btn.getAttribute('data-cmd'); if (!cmd) return; navigator.clipboard.writeText(cmd).then(() => { const orig = btn.textContent; btn.textContent = 'Copied!'; setTimeout(() => btn.textContent = orig, 1500); }).catch(() => {}); }); }); </script><!--$--><!--/$--></main><footer style="background:var(--bg-primary);border-top:1px solid var(--border-secondary);margin-top:60px"><div style="border-top:1px solid var(--border-light);max-width:1200px;margin:0 auto;padding:24px 20px"><div style="display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-bottom:24px"><div><div style="font-weight:700;color:var(--text-muted);margin-bottom:8px">BytesAgain</div><div style="color:var(--text-muted3);font-size:.82em;max-width:200px">Discover the best AI agent skills for your workflow.</div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Explore</div><div style="margin-bottom:6px"><a href="/skills" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Skills</a></div><div style="margin-bottom:6px"><a href="/articles" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Articles</a></div><div style="margin-bottom:6px"><a href="/use-case" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Cases</a></div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Company</div><div style="margin-bottom:6px"><a href="/about" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">About</a></div><div style="margin-bottom:6px"><a href="/contact" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Contact</a></div><div style="margin-bottom:6px"><a href="/privacy-policy" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Privacy Policy</a></div><div style="margin-bottom:6px"><a href="/terms" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Terms</a></div><div style="margin-bottom:6px"><a href="/feedback" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Feedback</a></div></div></div><div style="border-top:1px solid var(--border-light);padding-top:16px"><div style="color:var(--text-muted4);font-size:.8em;margin-bottom:8px">© <!-- -->2026<!-- --> BytesAgain. All rights reserved.</div><div style="color:var(--text-muted5);font-size:.75em;line-height:1.6;max-width:720px">BytesAgain is an independent skill directory. We index and link to third-party content (ClawHub, GitHub, LobeHub, Dify, etc.) for informational purposes only. All trademarks, skill names, and content are the property of their respective owners. BytesAgain does not claim ownership of any indexed content.</div></div></div></footer><button style="position:fixed;bottom:28px;right:28px;z-index:1000;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;background:linear-gradient(135deg,#667eea,#00d4ff);color:#fff;font-size:1.3em;box-shadow:0 4px 20px #667eea66;display:flex;align-items:center;justify-content:center;transition:transform .2s">💬</button><script src="/_next/static/chunks/0ze4gu236oq96.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[62894,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"LangProvider\"]\n3:I[89220,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ThemeProvider\"]\n4:I[16988,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\ne:I[68027,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\",1]\n:HL[\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"style\"]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:Td5e,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"description\":\"Search 60,000+ verified AI agent skills via MCP API or REST. Supports 7 languages. Free, no auth required.\",\"inLanguage\":[\"en\",\"zh\",\"es\",\"fr\",\"de\",\"ja\",\"ko\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://bytesagain.com/skills?q={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}},{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bytesagain.com/og-image.png\"},\"description\":\"AI agent skill directory. Search 60,000+ skills, 1,000+ use cases, and community requests.\",\"foundingDate\":\"2026\",\"foundingLocation\":{\"@type\":\"Place\",\"name\":\"Global\"},\"sameAs\":[\"https://x.com/bytesagain\",\"https://github.com/bytesagain/ai-skills\",\"https://clawhub.ai/profile/bytesagain\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"email\":\"hello@bytesagain.com\",\"contactType\":\"customer support\"},\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":1}},{\"@context\":\"https://schema.org\",\"@type\":\"WebApplication\",\"name\":\"BytesAgain AI Skills Search\",\"url\":\"https://bytesagain.com\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Web\",\"description\":\"Search engine and MCP API for 60,000+ AI agent skills. Semantic search, role recommendations, and use case packs.\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"},\"featureList\":[\"Search 60,000+ AI agent skills\",\"Role-based recommendations for developers, creators, and traders\",\"1,000+ curated use case packs\",\"Free MCP API and REST API\",\"Multi-language search (EN, ZH, ES, FR, DE, JA, KO)\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://bytesagain.com/skills?q={search_term_string}\",\"query-input\":\"required name=search_term_string\"},\"dateModified\":\"2026-07-16\"},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"BytesAgain is a curated directory of 60,000+ AI agent skills from ClawHub, GitHub, LobeHub, and Dify. Search skills by keyword in 7 languages, browse by role (developer, creator, trader, marketer) or by use case.\"}},{\"@type\":\"Question\",\"name\":\"How do I find AI skills on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use the search bar on BytesAgain.com to search by keyword in 7 languages. You can also browse by role (developer, creator, trader, marketer) or by use case. Each skill shows install instructions for Claude, Cursor, OpenClaw, Continue, and more.\"}},{\"@type\":\"Question\",\"name\":\"Is BytesAgain free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, BytesAgain is completely free. No registration required for searching skills. The MCP API is also free with rate limits.\"}},{\"@type\":\"Question\",\"name\":\"Does BytesAgain have an API for AI agents?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! BytesAgain provides a free MCP SSE endpoint at /api/mcp/sse for AI agents, plus a REST API at /api/mcp?action=search\u0026q=\u003cquery\u003e. No authentication needed.\"}},{\"@type\":\"Question\",\"name\":\"Can I request a new AI skill on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! Visit the Requests page on BytesAgain.com to submit a skill request. Your request will be visible to the community and notified to the site admin.\"}}]}]"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"skill\",\"voice-memo-sync\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skill\",{\"children\":[[\"slug\",\"voice-memo-sync\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"llms\",\"href\":\"/llms.txt\"}],[\"$\",\"link\",null,{\"rel\":\"llms-full\",\"href\":\"/llms-full.txt\"}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-3C1MM9FWYF\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n window.dataLayer = window.dataLayer || [];\\n function gtag(){dataLayer.push(arguments);}\\n gtag('js', new Date());\\n gtag('config', 'G-3C1MM9FWYF');\\n \"}}]]}],[\"$\",\"body\",null,{\"className\":\"geist_9e050971-module__05dp7a__className\",\"style\":{\"margin\":0},\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"width\":\"100%\",\"background\":\"var(--bg-subscribe)\",\"borderBottom\":\"1px solid var(--border-primary)\",\"padding\":\"8px 20px\",\"textAlign\":\"center\",\"fontSize\":\".82em\",\"color\":\"#818cf8\"},\"children\":[\"🎁 \",[\"$\",\"strong\",null,{\"style\":{\"color\":\"var(--text-primary)\"},\"children\":\"Get the FREE AI Skills Starter Guide\"}],\" — \",[\"$\",\"a\",null,{\"href\":\"/register\",\"style\":{\"color\":\"#00d4ff\",\"textDecoration\":\"underline\"},\"children\":\"Subscribe →\"}]]}],[\"$\",\"$L4\",null,{}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$5\"}}],\"$L6\",\"$L7\",\"$L8\"]}]}]}]]}]]}],{\"children\":[\"$L9\",{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,null]},null,false,\"$@c\"]},null,false,\"$@c\"]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[\"$Lf\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:I[39756,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n11:I[37457,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n12:I[22016,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0ka051yepewro.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"\"]\n13:I[90940,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n14:I[16397,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n16:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"OutletBoundary\"]\n17:\"$Sreact.suspense\"\n1a:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ViewportBoundary\"]\n1c:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"MetadataBoundary\"]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"main\",null,{\"children\":[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"background\":\"#050611\",\"color\":\"#e5e7eb\"},\"children\":[[\"$\",\"style\",null,{\"children\":\"\\n .nf-box { text-align: center; padding: 60px 32px; }\\n .nf-code { font-size: 6rem; font-weight: 900; color: #22d3ee; line-height: 1; margin: 0; }\\n .nf-title { font-size: 1.8rem; font-weight: 800; margin: 12px 0 8px; }\\n .nf-desc { color: var(--text-muted2); font-size: 1rem; margin-bottom: 32px; max-width: 440px; }\\n .nf-link { display: inline-block; padding: 12px 28px; background: linear-gradient(135deg,#34d399,#22d3ee); color: #000; font-weight: 900; border-radius: 12px; text-decoration: none; }\\n \"}],[\"$\",\"div\",null,{\"className\":\"nf-box\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"nf-desc\",\"children\":\"The skill or page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L12\",null,{\"className\":\"nf-link\",\"href\":\"/\",\"children\":\"Back to BytesAgain\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$L13\",null,{}]\n8:[\"$\",\"$L14\",null,{}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[\"$L15\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@18\"}]}]]}]\n19:[]\nc:\"$W19\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1a\",null,{\"children\":\"$L1b\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1d\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nf:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1e:I[27201,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"IconMark\"]\n18:null\n"])</script><script>self.__next_f.push([1,"1d:[[\"$\",\"title\",\"0\",{\"children\":\"Voice Memo Sync — AI Agent Skill | BytesAgain | BytesAgain\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"3\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"4\",{\"name\":\"llms-txt\",\"content\":\"https://bytesagain.com/llms.txt\"}],[\"$\",\"meta\",\"5\",{\"name\":\"llms-full-txt\",\"content\":\"https://bytesagain.com/llms-full.txt\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://bytesagain.com/skill/voice-memo-sync\"}],[\"$\",\"meta\",\"7\",{\"name\":\"baidu-site-verification\",\"content\":\"codeva-0evUqX1TFs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"Voice Memo Sync — AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://bytesagain.com/skill/voice-memo-sync\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"BytesAgain\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Voice Memo Sync — AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1e\",\"23\",{}]]\n"])</script><script>self.__next_f.push([1,"1f:T1562,"])</script><script>self.__next_f.push([1,"\n .skill-page { max-width: 1100px; margin: 0 auto; padding: 32px 20px 80px; }\n .two-col { display: flex; gap: 32px; align-items: flex-start; }\n .two-col-main { flex: 1; min-width: 0; }\n .two-col-side { width: 300px; flex-shrink: 0; }\n @media (max-width: 860px) {\n .two-col { flex-direction: column; }\n .two-col-side { width: 100%; }\n }\n .breadcrumb { font-size: .82em; color: var(--text-muted2); margin-bottom: 28px; }\n .breadcrumb a { color: #818cf8; text-decoration: none; }\n .breadcrumb a:hover { text-decoration: underline; }\n .skill-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 20px; padding: 28px; margin-bottom: 24px; }\n .skill-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }\n .skill-badges { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n .skill-top-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }\n .badge { display: inline-flex; align-items: center; gap: 5px; font-size: .75em; font-weight: 600; padding: 4px 12px; border-radius: 999px; border: 1px solid transparent; }\n .skill-title { font-size: 1.6em; font-weight: 800; color: var(--text-primary); margin: 0 0 4px; line-height: 1.2; }\n .skill-owner { font-size: .82em; color: var(--text-muted2); margin: 0 0 14px; }\n .skill-owner span { color: #818cf8; }\n .skill-desc { font-size: .92em; color: var(--text-secondary); line-height: 1.65; margin: 0 0 16px; }\n .skill-meta { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--border-card); }\n .meta-item { display: flex; flex-direction: column; gap: 2px; }\n .meta-label { font-size: .7em; color: var(--text-muted5); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }\n .meta-value { font-size: .92em; color: var(--text-muted2); font-weight: 600; }\n .tags-row { display: flex; gap: 6px; flex-wrap: wrap; }\n .tag { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 3px 10px; text-decoration: none; }\n .tag:hover { background: #6366f125; }\n .install-box { background: var(--bg-deep); border: 1px solid var(--border-card); border-radius: 12px; overflow: hidden; margin-bottom: 24px; }\n .install-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid var(--border-card); }\n .install-dots { display: flex; gap: 6px; }\n .dot { width: 10px; height: 10px; border-radius: 50%; }\n .install-label { font-size: .72em; color: var(--text-muted5); font-family: monospace; letter-spacing: 1px; }\n .install-body { padding: 16px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n .install-cmd { color: var(--text-code);\n font-family: 'Courier New', monospace; font-size: 1em; }\n .copy-btn { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 5px 12px; cursor: pointer; white-space: nowrap; transition: all .15s; }\n .copy-btn:hover { background: #6366f125; }\n .btn-secondary { display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; background: transparent; border: 1px solid var(--border-card); border-radius: 10px; color: #6b7280; text-decoration: none; font-weight: 600; font-size: .95em; transition: all .15s; }\n .btn-secondary:hover { border-color: #818cf8; color: #818cf8; }\n .ours-badge { display: inline-flex; align-items: center; gap: 6px; font-size: .72em; font-weight: 700; color: #22d3ee; background: #22d3ee10; border: 1px solid #22d3ee30; border-radius: 999px; padding: 4px 14px; }\n .section-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 16px; padding: 22px 24px; margin-bottom: 20px; }\n .section-title { color: var(--text-primary); font-size: 1.08em; font-weight: 800; margin: 0 0 12px; display: flex; align-items: center; gap: 8px; }\n /* Script box */\n .script-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; background: var(--bg-input); border-bottom: 1px solid var(--border-card); }\n .script-filename { font-size: .72em; color: var(--text-muted2); font-family: 'Courier New', monospace; }\n .script-copy-btn { font-size: .72em; color: #6366f1; background: none; border: 1px solid #6366f130; border-radius: 4px; padding: 2px 10px; cursor: pointer; }\n .script-copy-btn:hover { background: #6366f115; }\n .script-body { padding: 14px 16px; font-family: 'Courier New', monospace; font-size: .82em; line-height: 1.6; color: var(--text-code); overflow-x: auto; max-height: 420px; overflow-y: auto; white-space: pre; }\n /* Articles */\n .article-card { display: block; background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 10px; padding: 14px 16px; text-decoration: none; transition: border-color .15s; }\n .article-card:hover { border-color: #6366f1; }\n @media (max-width: 600px) {\n .skill-card { padding: 20px; }\n .skill-title { font-size: 1.5em; }\n }\n "])</script><script>self.__next_f.push([1,"15:[[\"$\",\"style\",null,{\"children\":\"$1f\"}],\"$L20\",\"$L21\"]\n"])</script><script>self.__next_f.push([1,"22:I[78297,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n23:Ta5ab,"])</script><script>self.__next_f.push([1,"\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\nname: voice-memo-sync\ndescription: |\n Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs.\n 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\nversion: 1.6.1\nauthor: Ying Wen\nhomepage: https://github.com/ying-wen/voice-memo-sync\nlicense: MIT\nmetadata:\n openclaw:\n emoji: \"🎙️\"\n os: [\"darwin\"]\n requires:\n bins: [\"ffmpeg\", \"python3\"]\n optional_bins: [\"whisper-cli\", \"whisper\", \"yt-dlp\", \"remindctl\", \"summarize\"]\n install:\n - id: init\n kind: script\n command: \"./scripts/install.sh\"\n label: \"Initialize Voice Memo Sync\"\n - id: ffmpeg\n kind: brew\n formula: ffmpeg\n bins: [\"ffmpeg\"]\n label: \"Install FFmpeg (required)\"\n - id: whisper-cpp\n kind: brew\n formula: whisper-cpp\n bins: [\"whisper-cli\"]\n label: \"Install whisper-cpp (Metal GPU - recommended)\"\n - id: whisper\n kind: brew \n formula: openai-whisper\n bins: [\"whisper\"]\n label: \"Install Whisper (CPU fallback)\"\n - id: yt-dlp\n kind: brew\n formula: yt-dlp\n bins: [\"yt-dlp\"]\n label: \"Install yt-dlp (for video URLs)\"\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eVoice Memo Sync 🎙️\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eIntelligent voice/video transcription and organization system. \n智能语音/视频转录与整理系统。\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQuick Start / 快速开始\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Run installation script / 运行安装脚本\ncd ~/.openclaw/workspace/skills/voice-memo-sync\n./scripts/install.sh\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWhat it does / 安装内容:\u003c/strong\u003e\n1. Creates data directory \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ememory/voice-memos/\u003c/code\u003e / 创建数据目录\n2. Creates config file \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003econfig/voice-memo-sync.yaml\u003c/code\u003e / 创建配置文件\n3. Creates Apple Notes folder \"Voice Memos\" / 创建 Apple Notes 文件夹\n4. Checks dependencies and prompts installation / 检查依赖并提示安装\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eWhen to Use / 何时使用\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e✅ \u003cstrong style=\"color:#e5e7eb\"\u003eUSE this skill when user:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSends voice/audio/video files / 发送语音/音频/视频文件\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSends YouTube/Bilibili URLs / 发送 YouTube/B站 链接\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSends transcript text files / 发送转录文本文件\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSays \"sync voice memos\", \"process recording\", \"organize this video\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e说「同步语音备忘录」「处理录音」「整理这个视频」\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e❌ \u003cstrong style=\"color:#e5e7eb\"\u003eDO NOT use when:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUser just wants to play audio/video / 用户只想播放音视频\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUser asks about music/podcasts without transcription needs / 询问音乐/播客但不需要转录\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSupported Formats / 支持格式\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e⚡ Metal GPU Acceleration (NEW)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eOn Apple Silicon, \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ewhisper-cpp\u003c/code\u003e provides 15-20x faster transcription:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Audio | CPU (openai-whisper) | Metal GPU (whisper-cpp) |\n|-------|---------------------|------------------------|\n| 5 min | ~5 min | ~20 sec |\n| 30 min | ~30 min | ~2 min |\n| 60 min | ~60 min | ~4 min |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Install for Metal acceleration (recommended)\nbrew install whisper-cpp\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eThe skill auto-detects and uses Metal when available.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Type / 类型 | Formats / 格式 | Processing / 处理方式 |\n|-------------|----------------|----------------------|\n| Voice Memos | .qta, .m4a | Apple native (QTA metadata) → Whisper fallback |\n| Audio | .mp3, .wav, .aac, .flac | Whisper local transcription |\n| Video | .mp4, .mov, .mkv, .webm | ffmpeg extract → Whisper |\n| YouTube | URL | summarize CLI → yt-dlp fallback |\n| Bilibili | URL | yt-dlp download → Whisper |\n| Text | .txt, .md | Direct read, skip transcription |\n| Documents | .doc, .docx | textutil convert → process |\n| Structured | .json, .csv | Parse and extract text |\n| iCloud | Configured paths | Scheduled sync |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eProcessing Pipeline / 处理流程\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eInput (File/URL/Text)\n │\n ▼\n┌─────────────────────────────────────┐\n│ 1. Source Detection │\n│ 来源识别 │\n│ Voice Memo / URL / File / Text │\n└─────────────────┬───────────────────┘\n │\n ▼\n┌─────────────────────────────────────┐\n│ 2. Save Source Metadata │\n│ 保存源信息 │\n│ → memory/voice-memos/sources/ │\n└─────────────────┬───────────────────┘\n │\n ▼\n┌─────────────────────────────────────┐\n│ 3. Transcription │\n│ 转录提取 │\n│ Priority: Apple \u003e Text \u003e summarize│\n│ \u003e Whisper-local \u003e API │\n└─────────────────┬───────────────────┘\n │\n ▼\n┌─────────────────────────────────────┐\n│ 4. Save Raw Transcript │\n│ 保存原始转录 │\n│ → memory/voice-memos/transcripts/ │\n└─────────────────┬───────────────────┘\n │\n ▼\n┌─────────────────────────────────────┐\n│ 5. LLM Deep Processing │\n│ LLM深度整理 │\n│ • Read USER.md \u0026 MEMORY.md │\n│ • Clean up spoken language │\n│ • Extract key points \u0026 insights │\n│ • Identify TODOs \u0026 connections │\n└─────────────────┬───────────────────┘\n │\n ▼\n┌─────────────────────────────────────┐\n│ 6. Save Processed Result │\n│ 保存处理结果 │\n│ → memory/voice-memos/processed/ │\n└─────────────────┬───────────────────┘\n │\n ┌───────┴───────┐\n ▼ ▼\n┌─────────────────┐ ┌─────────────────┐\n│ 7a. Apple Notes │ │ 7b. Reminders │\n│ Structured note │ │ Create TODOs │\n│ with #hashtags │ │ 创建提醒 │\n└────────┬────────┘ └────────┬───────┘\n │ │\n └─────────┬─────────┘\n ▼\n┌─────────────────────────────────────┐\n│ 8. Update Index │\n│ 更新索引 │\n│ → memory/voice-memos/INDEX.md │\n└─────────────────────────────────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eData Structure / 数据结构\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003ememory/voice-memos/ # All data, searchable via memory_search\n├── INDEX.md # Processing records index / 处理记录索引\n├── sources/ # Original file metadata / 原始文件元数据\n│ └── YYYY-MM-DD_xxx.json\n├── transcripts/ # Raw transcripts / 原始转录文本\n│ └── YYYY-MM-DD_source_title.md\n├── processed/ # LLM processed content / LLM处理后内容\n│ └── YYYY-MM-DD_source_title.md\n└── synced/ # Sync records / 同步记录\n └── YYYY-MM-DD_source_title.json\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eApple Notes Output Format / 输出格式\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eThe skill reads \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eUSER.md\u003c/code\u003e, \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eSOUL.md\u003c/code\u003e, and \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eMEMORY.md\u003c/code\u003e to provide \u003cstrong style=\"color:#e5e7eb\"\u003epersonalized analysis\u003c/strong\u003e:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDeep insights tailored to user's research/work focus\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eConnections to active projects and ongoing interests \u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eActionable recommendations based on user's decision style\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCritical thinking that challenges assumptions\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e处理时会读取 \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eUSER.md\u003c/code\u003e、\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eSOUL.md\u003c/code\u003e 和 \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eMEMORY.md\u003c/code\u003e 提供\u003cstrong style=\"color:#e5e7eb\"\u003e个性化分析\u003c/strong\u003e:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e结合用户研究/工作重点的深度洞察\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e与活跃项目和持续关注领域的关联\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e基于用户决策风格的行动建议\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e挑战假设的批判性思考\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e🎙️ [Auto-generated Title / 智能生成的标题]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e📅 Date | ⏱️ Duration | 👤 Source\n🏷️ #tag1 #tag2 #tag3\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e━━━━━━━━━━━━━━━━━━━━━━\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e📌 Summary / 核心摘要\n[One paragraph summarizing the content]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e🎯 Key Points / 关键要点\n• Point 1\n• Point 2\n• Point 3\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e💡 Deep Analysis \u0026 Reflection (For User) / 深度分析与反思\n[Personalized analysis connecting to user's:\n - Current research directions (from MEMORY.md)\n - Active projects and interests (from USER.md)\n - Decision-making style and preferences\n - Critical counter-arguments and blind spots]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e📋 Action Items / 行动建议\n☐ Research: [specific to user's academic work]\n☐ Business: [relevant to startup/investment focus]\n☐ Content: [ideas for courses/articles]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e🔗 Related Connections / 相关联系\n• Connection to [project/memory]\n• Recommended reading/research\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e💬 Notable Quotes / 金句摘录\n• \"Quote 1\"\n• \"Quote 2\"\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e━━━━━━━━━━━━━━━━━━━━━━\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e📝 Original Transcript (Cleaned) / 原始转录(已整理)\n[Full transcript text, cleaned up from spoken language / 完整转录,已整理口语表达]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQTA File Format / QTA文件格式 (Technical Reference)\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eApple Voice Memos on iOS/macOS 14+ uses \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e.qta\u003c/code\u003e (QuickTime Audio) files that embed native transcription directly in the file metadata.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStructure\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eQTA File\n├── ftyp (file type marker: \"qt \")\n├── wide (extended marker)\n├── mdat (audio data, typically 90%+ of file size)\n└── moov (metadata container)\n ├── mvhd (movie header)\n └── trak (one or more tracks)\n ├── tkhd (track header)\n ├── mdia (media data)\n └── meta (metadata - TRANSCRIPTION HERE!)\n ├── hdlr (handler: \"mdta\")\n ├── keys (key list: \"com.apple.VoiceMemos.tsrp\")\n └── ilst (data list)\n └── data (JSON transcription payload)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eTranscription JSON Format\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e{\n \"locale\": {\"identifier\": \"zh-Hans_GB\", \"current\": 1},\n \"attributedString\": {\n \"runs\": [\"字\",0,\"符\",1,\"转\",2,\"录\",3,...],\n \"attributeTable\": [\n {\"timeRange\": [0.0, 0.5]},\n {\"timeRange\": [0.5, 0.8]},\n ...\n ]\n }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eKey Points:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eruns\u003c/code\u003e array alternates: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e[text, index, text, index, ...]\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eattributeTable\u003c/code\u003e provides timestamps for each character\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eJSON is embedded raw in the \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eilst/data\u003c/code\u003e atom\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUse \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eextract-apple-transcript.py\u003c/code\u003e to reliably extract\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eExtraction Script\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Extract plain text\npython3 scripts/extract-apple-transcript.py recording.qta\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eExtract with metadata (JSON output)\u003c/h2\u003e\npython3 scripts/extract-apple-transcript.py recording.qta --json\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eExtract with timestamps\u003c/h2\u003e\npython3 scripts/extract-apple-transcript.py recording.qta --json --with-timestamps\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eCommon Issues\u003c/h4\u003e\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| \"未找到转录数据\" | Recording still processing | Wait 1-2 min, or use Whisper |\n| \"转录标记存在但数据不完整\" | Partial transcription | Use Whisper fallback |\n| JSON parse error | Corrupted file | Try Whisper transcription |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eLocation / 位置: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e~/.openclaw/workspace/config/voice-memo-sync.yaml\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003esources:\n voice_memos:\n enabled: true\n path: \"~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/\"\n icloud:\n enabled: true\n paths:\n - \"~/Library/Mobile Documents/com~apple~CloudDocs/Recordings\"\n - \"~/Library/Mobile Documents/com~apple~CloudDocs/Meeting Recordings\"\n watch_patterns: [\"*.m4a\", \"*.mp3\", \"*.mp4\", \"*.wav\", \"*.mov\"]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003etranscription:\n # Priority order / 优先级顺序\n priority: [\"apple\", \"text\", \"summarize\", \"whisper-local\"]\n whisper_model: \"small\" # tiny/small/medium/large\n language: \"auto\" # auto/zh/en/ja/ko/...\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003enotes:\n folder: \"Voice Memos\" # Apple Notes folder name\n include_quotes: true\n include_original: true\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003ereminders:\n enabled: true\n list: \"Reminders\"\n auto_create: true\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eScripts / 脚本\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Script | Purpose / 用途 | Usage / 用法 |\n|--------|----------------|--------------|\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003einstall.sh\u003c/code\u003e | Initialize setup | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e./install.sh\u003c/code\u003e |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eprocess.sh\u003c/code\u003e | Unified processing | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e./process.sh \u003cinput\u003e\u003c/code\u003e |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eextract-apple-transcript.py\u003c/code\u003e | Extract Apple native transcription | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epython3 extract-apple-transcript.py \u003cfile\u003e\u003c/code\u003e |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecreate-apple-note.sh\u003c/code\u003e | Create Apple Notes | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e./create-apple-note.sh \u003ctitle\u003e \u003ccontent\u003e\u003c/code\u003e |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003esync-icloud-recordings.sh\u003c/code\u003e | Sync iCloud directory | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e./sync-icloud-recordings.sh\u003c/code\u003e |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eAgent Processing Guide / Agent处理指南\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eWhen user sends audio/video or URL, follow these steps: \n当用户发送音视频或URL时,按以下步骤处理:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 1: Detect Input Type / 识别输入类型\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eYouTube URL → summarize extract\nBilibili URL → yt-dlp download + whisper\n.qta/.m4a → Apple transcript extraction\nOther audio/video → whisper transcription\n.txt/.md file → direct read\n.doc/.docx → textutil convert\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 2: Save Source Info / 保存源信息\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Record to memory/voice-memos/sources/\necho '{\"input\":\"...\", \"type\":\"...\", \"date\":\"YYYY-MM-DD\"}' \u003e sources/xxx.json\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 3: Get/Save Transcript / 获取保存转录\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Save to memory/voice-memos/transcripts/YYYY-MM-DD_source_title.md\n\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eInclude: source info + full raw transcript\u003c/h2\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 4: LLM Deep Processing / LLM深度整理\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eRead USER.md and MEMORY.md, combining user context.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eMODE SELECTION (Auto-detect or Manual Override) / 模式选择:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e┌─────────────────────────────────────────────────────────────────┐\n│ Mode A: Solo Memo (Default) / 短语音 │\n│ Trigger: \u003c 5 min, single speaker, casual │\n│ Output: Clean text + Key points + TODOs + Connections │\n└─────────────────────────────────────────────────────────────────┘\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e┌─────────────────────────────────────────────────────────────────┐\n│ Mode B: Deep Meeting / 深度会议 │\n│ Trigger: 15-60 min, multi-speaker with labels │\n│ Output: │\n│ 1. Executive Summary (1 paragraph) │\n│ 2. Chronological Detail by time blocks │\n│ 3. Debate Flow (who said what, conflicts) │\n│ 4. Decision Matrix (Issue → Decision → Rationale) │\n│ 5. Action Items with owners │\n│ 6. Vital Quotes (preserve Voice) │\n└─────────────────────────────────────────────────────────────────┘\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e┌─────────────────────────────────────────────────────────────────┐\n│ Mode C: Lecture / Talk / 讲座模式 (NEW) │\n│ Trigger: Single speaker, 30min-3hr, structured presentation │\n│ Output: │\n│ 1. Executive Summary (1 paragraph) │\n│ 2. \u003cstrong style=\"color:#e5e7eb\"\u003eArgument Structure (论点层级)\u003c/strong\u003e: │\n│ - Core Thesis (核心论点) │\n│ - Supporting Arguments (分论点 1, 2, 3...) │\n│ - Key Evidence/Examples for each argument │\n│ - Counter-arguments addressed (if any) │\n│ 3. Key Definitions (关键定义/概念) │\n│ 4. Notable Quotes (金句, with timestamps if available) │\n│ 5. Connections to User's Work (个人关联) │\n│ 6. Questions Raised / Gaps (讲座未解决的问题) │\n└─────────────────────────────────────────────────────────────────┘\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e┌─────────────────────────────────────────────────────────────────┐\n│ Mode D: Lecture + Q\u0026A / 讲座+问答 (NEW) │\n│ Trigger: First part monologue, second part Q\u0026A │\n│ Output: │\n│ \u003cstrong style=\"color:#e5e7eb\"\u003ePart I: Lecture Section\u003c/strong\u003e (use Mode C structure) │\n│ \u003cstrong style=\"color:#e5e7eb\"\u003ePart II: Q\u0026A Section\u003c/strong\u003e │\n│ - Group questions by theme/topic (not chronological) │\n│ - Format: Q1 → A1 (summary), Q2 → A2... │\n│ - Highlight: Best Questions, Surprising Answers │\n└─────────────────────────────────────────────────────────────────┘\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e┌─────────────────────────────────────────────────────────────────┐\n│ Mode E: Long-form No-Speaker-Label / 超长无标注会议 (NEW) │\n│ Trigger: \u003e 90 min, NO speaker diarization (text is a blob) │\n│ Strategy: │\n│ 1. \u003cstrong style=\"color:#e5e7eb\"\u003eChunking\u003c/strong\u003e: Split into ~30min segments for processing │\n│ 2. \u003cstrong style=\"color:#e5e7eb\"\u003eTopic Detection\u003c/strong\u003e: Identify topic shift points │\n│ (Don't force time blocks; use semantic breaks) │\n│ 3. \u003cstrong style=\"color:#e5e7eb\"\u003eAbandon Attribution\u003c/strong\u003e: Don't guess who said what │\n│ Output: │\n│ 1. Executive Summary │\n│ 2. \u003cstrong style=\"color:#e5e7eb\"\u003eTopic Blocks\u003c/strong\u003e (not time blocks): │\n│ - Topic 1: [Summary] + [Key points] + [Quotes] │\n│ - Topic 2: ... │\n│ 3. Unresolved Issues / Open Questions │\n│ 4. Action Items (may lack owners) │\n│ 5. Full Cleaned Transcript (appended or linked) │\n└─────────────────────────────────────────────────────────────────┘\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTWO-PASS PROCESSING for Long Content (\u003e 60 min):\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePass 1 (Quick Scan): Identify structure type, speaker presence, topic shifts\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePass 2 (Deep Process): Apply appropriate mode to each segment\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eOUTPUT DENSITY LEVELS (User can request):\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eLevel 1: Executive Only (1 page, for busy stakeholders)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eLevel 2: Structured Summary (5-10 pages, default)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eLevel 3: Full Annotated Transcript (everything, with margin notes)\u003c/li\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 5: Save Processed Result / 保存处理结果\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Save to memory/voice-memos/processed/YYYY-MM-DD_source_title.md\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 6: Sync to Apple Notes (MANDATORY) / 同步到Apple Notes(必须执行)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e⚠️ \u003cstrong style=\"color:#e5e7eb\"\u003eCRITICAL: This step is MANDATORY. Never skip it.\u003c/strong\u003e \n⚠️ \u003cstrong style=\"color:#e5e7eb\"\u003e关键:此步骤必须执行,不可跳过。\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e⚠️ \u003cstrong style=\"color:#e5e7eb\"\u003eApple Notes requires HTML format, NOT Markdown!\u003c/strong\u003e \n⚠️ \u003cstrong style=\"color:#e5e7eb\"\u003eApple Notes 需要 HTML 格式,不能直接用 Markdown!\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCorrect workflow / 正确流程:\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# 1. Convert Markdown to HTML using pandoc (REQUIRED)\npandoc /path/to/processed.md -f markdown -t html -o /tmp/note-content.html\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003e2. Create note with HTML content via AppleScript\u003c/h2\u003e\nosascript \u003c\u003c'EOF'\nset htmlContent to do shell script \"cat /tmp/note-content.html\"\nset noteTitle to \"🎙️ Note Title\"\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003etell application \"Notes\"\n set folderName to \"Voice Memos\"\n set targetFolder to missing value\n \n repeat with f in folders\n if name of f is folderName then\n set targetFolder to f\n exit repeat\n end if\n end repeat\n \n if targetFolder is missing value then\n make new folder with properties {name:folderName}\n delay 1\n set targetFolder to folder folderName\n end if\n \n tell targetFolder\n make new note with properties {name:noteTitle, body:htmlContent}\n end tell\nend tell\nEOF\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCommon mistakes to avoid / 常见错误:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e❌ Writing raw Markdown to Apple Notes → 乱码/格式错误\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e❌ Using \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ememo notes -a\u003c/code\u003e interactively → 无法自动化\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e❌ Skipping this step entirely → 其他设备看不到\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e✅ Always convert MD → HTML via pandoc first\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e✅ Always verify the note was created successfully\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 7: Create Reminders / 创建提醒\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eremindctl add --title \"TODO\" --list \"Reminders\" --due \"YYYY-MM-DD\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eStep 8: Update INDEX.md / 更新索引\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Append record to memory/voice-memos/INDEX.md\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePrivacy / 隐私说明\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e⚠️ \u003cstrong style=\"color:#e5e7eb\"\u003ePrivacy-First Design:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAll transcription runs locally by default / 所有转录默认在本地完成\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eApple native transcripts extracted from local files / Apple原生转录从本地文件提取\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eWhisper runs locally / Whisper在本地运行\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo data sent to external servers (unless user explicitly configures external API)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUser data stored only in local memory directory\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eTroubleshooting / 故障排除\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eWhisper not found\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003ebrew install openai-whisper\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eyt-dlp download fails\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Update yt-dlp\nbrew upgrade yt-dlp\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eOr use proxy\u003c/h2\u003e\nexport ALL_PROXY=http://127.0.0.1:7890\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eApple Notes folder not created\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Manually create via AppleScript\nosascript -e 'tell application \"Notes\" to tell account \"iCloud\" to make new folder with properties {name:\"Voice Memos\"}'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eTranscription quality issues\u003c/h4\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Use larger model for better accuracy\n\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eEdit config: whisper_model: \"medium\" or \"large\"\u003c/h2\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eChangelog / 更新日志\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.6.1 (2026-03-09)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCRITICAL FIX\u003c/strong\u003e: Apple Notes sync step marked as MANDATORY (不可跳过).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFORMAT FIX\u003c/strong\u003e: Explicit requirement to convert Markdown → HTML via pandoc before syncing.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded complete AppleScript template with folder creation.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCommon mistakes checklist to prevent format issues.\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.6.0 (2026-03-09)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eQTA Format Documentation\u003c/strong\u003e: Added detailed technical reference for Apple's QTA file format.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eEnhanced extract-apple-transcript.py v1.1\u003c/strong\u003e: Improved JSON boundary detection, better error diagnostics, timestamp extraction support.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--with-timestamps\u003c/code\u003e option for detailed time-aligned output.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eBetter handling of large files (\u003e100MB).\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.5.0 (2026-03-09)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded Mode C: Lecture/Talk (single speaker, argument structure extraction).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded Mode D: Lecture + Q\u0026A (hybrid processing).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded Mode E: Long-form No-Speaker-Label (\u003e 90min, topic-based chunking).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eIntroduced Two-Pass Processing for content \u003e 60 min.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded Output Density Levels (Executive / Structured / Full Annotated).\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.4.0 (2026-03-09)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eIntroduced \"Deep Meeting Mode\" for content \u003e 15min or multi-speaker.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePreserves information density for critical discussions/interviews.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNew structure: Executive Summary + Chronological Detail + Debate Flow + Decision Matrix.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eExplicit attribution of quotes and arguments.\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.2.0 (2026-03-08)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded unified processing script process.sh / 新增统一处理脚本\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded installation script install.sh / 新增安装脚本\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUnified data storage to memory/voice-memos/ / 统一数据存储\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded .doc/.docx/.json/.csv support / 新增文档格式支持\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eBilingual SKILL.md / 中英双语SKILL.md\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eImproved INDEX.md auto-update / 完善索引自动更新\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.1.0 (2026-03-08)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded iCloud directory sync / 新增iCloud目录同步\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded YouTube/Bilibili support / 新增YouTube/B站支持\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAdded text file processing / 新增文本文件处理\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ev1.0.0 (2026-03-08)\u003c/h4\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eInitial release / 初始版本\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eApple Voice Memos transcription / Apple语音备忘录转录\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eApple Notes sync / Apple Notes同步\u003c/li\u003e\n\u003c/p\u003e"])</script><script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"skill-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"Voice Memo Sync\\\",\\\"description\\\":\\\"Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\\\",\\\"url\\\":\\\"https://bytesagain.com/skill/voice-memo-sync\\\",\\\"applicationCategory\\\":\\\"clawhub\\\",\\\"operatingSystem\\\":\\\"Any\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\"},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"BytesAgain\\\",\\\"url\\\":\\\"https://bytesagain.com\\\"}}\"}}],[\"$\",\"div\",null,{\"className\":\"breadcrumb\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"children\":\"BytesAgain\"}],\" › \",[\"$\",\"a\",null,{\"href\":\"/skills\",\"children\":\"Skills\"}],\" › \",\"Voice Memo Sync\"]}],[\"$\",\"div\",null,{\"className\":\"two-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"two-col-main\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-badges\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge\",\"style\":{\"color\":\"#818cf8\",\"background\":\"#818cf822\",\"borderColor\":\"#818cf844\"},\"children\":[\"🦀\",\" \",\"ClawHub\"]}],false]}],[\"$\",\"div\",null,{\"className\":\"skill-top-actions\",\"children\":[\"$\",\"$L22\",null,{\"slug\":\"voice-memo-sync\"}]}]]}],[\"$\",\"h1\",null,{\"className\":\"skill-title\",\"children\":\"Voice Memo Sync\"}],[\"$\",\"p\",null,{\"className\":\"skill-owner\",\"children\":[\"by \",[\"$\",\"span\",null,{\"children\":[\"@\",\"ying-wen\"]}]]}],[\"$\",\"p\",null,{\"className\":\"skill-desc\",\"children\":\"Sync, transcribe, and intelligently organize voice memos, audio/video files, and URLs. 同步、转录、智能整理语音备忘录、音视频文件和视频链接。\"}],[\"$\",\"div\",null,{\"className\":\"skill-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Version\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":[\"v\",\"1.6.1\"]}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Downloads\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":\"693\"}]]}],false,false,false,[\"$\",\"div\",null,{\"className\":\"meta-item\",\"style\":{\"flexDirection\":\"row\",\"gap\":6,\"alignItems\":\"center\"},\"children\":[[\"$\",\"a\",\"video\",{\"href\":\"/?q=video\",\"className\":\"tag\",\"children\":[\"#\",\"video\"]}],[\"$\",\"a\",\"audio\",{\"href\":\"/?q=audio\",\"className\":\"tag\",\"children\":[\"#\",\"audio\"]}],[\"$\",\"a\",\"legal\",{\"href\":\"/?q=legal\",\"className\":\"tag\",\"children\":[\"#\",\"legal\"]}],[\"$\",\"a\",\"productivity\",{\"href\":\"/?q=productivity\",\"className\":\"tag\",\"children\":[\"#\",\"productivity\"]}]]}]]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":6},\"children\":[\"$\",\"a\",null,{\"href\":\"https://clawhub.ai/ying-wen/voice-memo-sync\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"btn-secondary\",\"style\":{\"padding\":\"6px 12px\",\"fontSize\":\".82em\",\"borderRadius\":8,\"background\":\"transparent\",\"border\":\"1px solid var(--border-card)\",\"color\":\"var(--text-muted2)\",\"textDecoration\":\"none\",\"whiteSpace\":\"nowrap\"},\"children\":[\"View on \",\"ClawHub\",\" →\"]}]}]]}],[\"$\",\"div\",null,{\"className\":\"install-box\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-dots\",\"children\":[[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#ef4444\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#eab308\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#22c55e\"}}]]}],[\"$\",\"span\",null,{\"className\":\"install-label\",\"children\":\"TERMINAL\"}]]}],[\"$\",\"div\",null,{\"className\":\"install-body\",\"style\":{\"flexWrap\":\"wrap\"},\"children\":[[\"$\",\"code\",null,{\"className\":\"install-cmd\",\"children\":\"clawhub install voice-memo-sync\"}],[\"$\",\"button\",null,{\"className\":\"copy-btn\",\"data-cmd\":\"clawhub install voice-memo-sync\",\"style\":{\"fontWeight\":700},\"children\":\"Copy\"}]]}]]}],[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"📖 About This Skill\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$23\"}}]]}],null,null,null,null,null,null,null,false,false]}],\"$L24\"]}]]}]\n"])</script><script>self.__next_f.push([1,"21:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn =\u003e {\\n btn.addEventListener('click', () =\u003e {\\n const cmd = btn.getAttribute('data-cmd');\\n if (!cmd) return;\\n navigator.clipboard.writeText(cmd).then(() =\u003e {\\n const orig = btn.textContent;\\n btn.textContent = 'Copied!';\\n setTimeout(() =\u003e btn.textContent = orig, 1500);\\n }).catch(() =\u003e {});\\n });\\n });\\n \"}}]\n"])</script><script>self.__next_f.push([1,"25:I[71521,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n24:[\"$\",\"div\",null,{\"className\":\"two-col-side\",\"children\":[\"$\",\"$L25\",null,{\"category\":\"clawhub\",\"currentSlug\":\"voice-memo-sync\",\"name\":\"Voice Memo Sync\",\"tags\":[\"video\",\"audio\",\"legal\",\"productivity\"]}]}]\n"])</script></body></html>