ClawSkills logoClawSkills

Birthday Reminder

使用自然语言管理生日。将生日存储在 /home/clawd/clawd/data/birthdays.md 中,获取即将到来的提醒,计算年龄。当用户提及时使用。

介绍

# Birthday Reminder Skill

自然地管理生日。存储在 `data/birthdays.md` 中,使用自然语言查询。

## 存储

生日存储在 `/home/clawd/clawd/data/birthdays.md` 中:

```markdown # Geburtstage

- **Valentina** - 14.02.2000 (wird 26) - **Max** - 15.03.1990 ```

## 自然语言模式

### 添加生日 当用户说类似这样的话时: - "Valentina hat am 14. Februar Geburtstag" - "Füge hinzu: Max, 15.03.1990" - "X wurde am 10.05.1985 geboren"

**操作:** 1. 解析姓名和日期 2. 如果提供了年份则提取 3. 计算即将到来的年龄:`birthday_year - birth_year` 4. 追加到 `/home/clawd/clawd/data/birthdays.md` 5. 确认年龄信息

### 查询生日 当用户询问时: - "Wann hat Valentina Geburtstag?" - "Welche Geburtstage kommen als Nächstes?" - "Wie alt wird Valentina?" - "Nächster Geburtstag"

**操作:** 1. 读取 `/home/clawd/clawd/data/birthdays.md` 2. 解析所有条目 3. 计算距离每个生日的天数 4. 按即将到来的日期排序 5. 如果已知年份,显示即将满的年龄

### 列出所有 当用户说: - "Zeige alle Geburtstage" - "Liste meine Geburtstage"

**操作:** 1. 读取文件 2. 显示格式化列表,包含距离每个生日的天数

## 日期解析

支持各种格式: - "14. Februar" → 14.02 - "14.02." → 14.02 - "14.02.2000" → 14.02.2000 - "14.2.2000" → 14.02.2000

## 年龄计算

```python from datetime import datetime

def calculate_turning_age(birth_year, birthday_month, birthday_day): today = datetime.now() birthday_this_year = today.replace(month=birthday_month, day=birthday_day) if today.date() <= birthday_this_year.date(): birthday_year = today.year else: birthday_year = today.year + 1 return birthday_year - birth_year ```

## 距离生日天数

```python def days_until(month, day): today = datetime.now() birthday = today.replace(month=month, day=day) if birthday < today: birthday = birthday.replace(year=today.year + 1) return (birthday - today).days ```

## 自动提醒

对于 cron/提醒,每天检查生日并在以下情况通知: - 提前 7 天 - 提前 1 天 - 当天

使用 `scripts/reminder.py` 中的 `check_reminders()` 逻辑。

## 文件格式

每行:`- **Name** - DD.MM.YYYY (wird X)` 或 `- **Name** - DD.MM.`

保持文件按日期(月/日)排序以便于阅读。

更多产品