# Feishu Backup

> Back up files uploaded to a Feishu group chat to the local doc/backup directory. Supports smart matching: multiple files, filename prefix/keyword filter, file type (pdf/video/image), and time range ("just now" = "last 5 minutes"). Trigger when the user says things like "back up the file from Feishu", "back up the PDF I just sent to Feishu", "save the Feishu file locally", etc.

- Skill: `knownasnaffy/feishu-backup-4` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add knownasnaffy/feishu-backup-4`
- Raw SKILL.md: https://api.skillmd.com/api/skills/knownasnaffy/feishu-backup-4/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: knownasnaffy (https://skillmd.com/u/knownasnaffy)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/knownasnaffy/feishu-backup-4

---


# Feishu Backup Skill

Backup directory: `~/.openclaw/doc/backup/`

**Strict rules (must be followed — violations are treated as critical errors):**
- **Do not** use write/edit tools to create or modify any files
- **Do not** create Python scripts, test scripts, or any auxiliary files
- **Do not** generate, guess, or fabricate file contents and write them to disk — even if the filename is known
- **Only** run `feishu_backup.sh` via exec to download real files
- **Must** verify that the script outputs `SUCCESS: /path/to/file` and that the file exists with size > 0
- If the script reports `ERROR`, inform the user honestly — do not fabricate a success status

---

## Smart Matching: Interpret Intent → Set Variables → Call Script

The agent interprets the user's natural language, determines intent, sets the corresponding environment variables, then calls the script.

| User says | Environment variables |
|-----------|----------------------|
| "Back up the latest file" / "Back up this file" | (default, no variables needed) |
| "Back up the last two files" / "Back up these two files" | `LIMIT=2` |
| "Back up files starting with report" | `NAME_PREFIX=report` |
| "Back up files with contract in the name" | `NAME_CONTAINS=contract` |
| "Back up the PDF I just uploaded" / "Back up the PDF from just now" | `MINUTES=5 FILE_TYPE=pdf` |
| "Back up the video I just uploaded" | `MINUTES=5 FILE_TYPE=video` |
| "Back up the image I just uploaded" | `MINUTES=5 FILE_TYPE=image` |
| "Back up the last three files" | `LIMIT=3 MINUTES=10` |
| "Back up all PDFs from the last 5 minutes" | `MINUTES=5 FILE_TYPE=pdf LIMIT=5` |

**FILE_TYPE values**: `pdf` / `image` / `video` / `doc` / `file` (default — matches all)

---

## Invocation

```bash
# Default: back up latest file
<SKILL_DIR>/feishu_backup.sh

# Back up the latest 2 files
LIMIT=2 <SKILL_DIR>/feishu_backup.sh

# Back up files whose name starts with "report"
NAME_PREFIX=report <SKILL_DIR>/feishu_backup.sh

# Back up PDFs uploaded in the last 5 minutes
MINUTES=5 FILE_TYPE=pdf <SKILL_DIR>/feishu_backup.sh

# Back up up to 3 files from the last 10 minutes
LIMIT=3 MINUTES=10 <SKILL_DIR>/feishu_backup.sh
```

Script prints `SUCCESS: /path/to/file` for each file on success.

> **Important**: The script downloads real binary files from the Feishu API. The downloaded file size should match the original. If a backup file is unexpectedly small (e.g. a few KB), something went wrong — report the error to the user honestly.

---

## List Backups

```bash
ls -lht ~/.openclaw/doc/backup/
```

