birthday-reminder
用自然语言管理生日。将生日存储在 /home/clawd/clawd/data/birthdays.md 中,获取即将到来的提醒,计算年龄。当用户提到生日、想要添加/记住某人的生日、检查即将到来的生日或询问某人的年龄/生日时使用。理解“X hat am DD.MM. Geburtstag”、“Wann hat X Geburtstag?”、“Nächste Geburtstage”等短语。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~manantra-birthday-remindercURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~manantra-birthday-reminder/file -o manantra-birthday-reminder.md## 概述(中文)
用自然语言管理生日。将生日存储在 /home/clawd/clawd/data/birthdays.md 中,获取即将到来的提醒,计算年龄。当用户提到生日、想要添加/记住某人的生日、检查即将到来的生日或询问某人的年龄/生日时使用。理解“X hat am DD.MM. Geburtstag”、“Wann hat X Geburtstag?”、“Nächste Geburtstage”等短语。
## 原文
# Birthday Reminder Skill
Manage birthdays naturally. Store in `data/birthdays.md`, query with natural language.
## Storage
Birthdays are stored in `/home/clawd/clawd/data/birthdays.md`:
```markdown
# Geburtstage
- **Valentina** - 14.02.2000 (wird 26)
- **Max** - 15.03.1990
```
## Natural Language Patterns
### Adding Birthdays
When user says things like:
- "Valentina hat am 14. Februar Geburtstag"
- "Füge hinzu: Max, 15.03.1990"
- "X wurde am 10.05.1985 geboren"
**Action:**
1. Parse name and date
2. Extract year if provided
3. Calculate upcoming age: `birthday_year - birth_year`
4. Append to `/home/clawd/clawd/data/birthdays.md`
5. Confirm with age info
### Querying Birthdays
When user asks:
- "Wann hat Valentina Geburtstag?"
- "Welche Geburtstage kommen als Nächstes?"
- "Wie alt wird Valentina?"
- "Nächster Geburtstag"
**Action:**
1. Read `/home/clawd/clawd/data/birthdays.md`
2. Parse all entries
3. Calculate days until each birthday
4. Sort by upcoming date
5. Show age turning if year is known
### Listing All
When user says:
- "Zeige alle Geburtstage"
- "Liste meine Geburtstage"
**Action:**
1. Read the file
2. Show formatted list with days until each
## Date Parsing
Support various formats:
- "14. Februar" → 14.02
- "14.02." → 14.02
- "14.02.2000" → 14.02.2000
- "14.2.2000" → 14.02.2000
## Age Calculation
```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
```
## Days Until Birthday
```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
```
## Automatic Reminders
For cron/reminders, check birthdays daily and notify if:
- 7 days before
- 1 day before
- On the day
Use the `check_reminders()` logic from `scripts/reminder.py`.
## File Format
Each line: `- **Name** - DD.MM.YYYY (wird X)` or `- **Name** - DD.MM.`
Keep the file sorted by date (month/day) for easier reading.