[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80914":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":13,"rankGlobal":10,"rankLanguage":10,"license":15,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":10,"pushedAt":10,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},80914,"openclaw-qqbot-send-skill","ZJunCher\u002Fopenclaw-qqbot-send-skill","ZJunCher","OpenClaw QQBot skill for sending local files, images, audio, video, and other media with safe temporary staging and cleanup.","",null,"Python",33,0,1,"MIT License",false,"main",true,[],"2026-06-12 02:04:08","# OpenClaw QQBot Send Skill\n\nAn OpenClaw skill for sending local files, images, audio, video, and other media through QQBot.\n\nThis skill stages local files into the QQBot media relay directory, sends them with `\u003Cqqmedia>...\u003C\u002Fqqmedia>`, and then cleans up only the temporary staged copy after the send attempt finishes.\n\n## Features\n\n- Send local files through QQBot using `\u003Cqqmedia>...\u003C\u002Fqqmedia>`\n- Automatically stage local files into the QQBot media relay directory\n- Clean up only the staged temporary copy after sending\n- Protect original source files from accidental deletion\n- Normalize staged file extensions to lowercase\n- Detect occupied, locked, or inaccessible files\n- Enforce a 10 MB file size limit\n- Support HTTP(S) media URLs without staging or cleanup\n\n## Repository Structure\n\n```text\n.\n├── README.md\n├── SKILL.md\n└── scripts\n    └── stage_media.py\n```\n\n## Files\n\n### `SKILL.md`\n\nThe OpenClaw skill definition file.\n\nIt tells OpenClaw how to handle QQBot file sending requests, including when to stage local files, how to send them with `\u003Cqqmedia>...\u003C\u002Fqqmedia>`, and when to clean up the temporary staged copy.\n\n### `scripts\u002Fstage_media.py`\n\nThe local media staging and cleanup helper script.\n\nIt supports two operations:\n\n1. Stage a source file into the QQBot media relay directory.\n2. Clean up a staged file after the send attempt finishes.\n\n## Usage\n\n### Stage a local file\n\n```bash\npython scripts\u002Fstage_media.py \u003Csource_path>\n```\n\nExample:\n\n```bash\npython scripts\u002Fstage_media.py \"C:\\Users\\name\\Desktop\\example.txt\"\n```\n\nThe script copies the file into:\n\n```text\n~\u002F.openclaw\u002Fmedia\u002Fqqbot\u002F\n```\n\nThen it prints the staged absolute path, for example:\n\n```text\nC:\\Users\\name\\.openclaw\\media\\qqbot\\abc123.txt\n```\n\nUse the returned path for QQBot media sending:\n\n```text\n\u003Cqqmedia>C:\\Users\\name\\.openclaw\\media\\qqbot\\abc123.txt\u003C\u002Fqqmedia>\n```\n\n### Clean up a staged file\n\nAfter the QQBot send attempt finishes, clean up the staged file with:\n\n```bash\npython scripts\u002Fstage_media.py --cleanup \u003Cstaged_path>\n```\n\nExample:\n\n```bash\npython scripts\u002Fstage_media.py --cleanup \"C:\\Users\\name\\.openclaw\\media\\qqbot\\abc123.txt\"\n```\n\nOnly pass the staged path to `--cleanup`.\n\nNever pass the original source file path to `--cleanup`.\n\n## Safety Rules\n\nThis project is designed to avoid accidental deletion of user files.\n\nThe cleanup command must only be used with the exact staged path returned by the staging command.\n\nDo not clean up:\n\n- the original source file\n- a user-provided path that was not returned by the staging script\n- an HTTP(S) URL\n- a guessed path\n- any arbitrary file under `~\u002F.openclaw\u002Fmedia\u002Fqqbot\u002F`\n\nThe original source file is copied, not modified.\n\n## Recommended Send Flow\n\nFor local files:\n\n```text\nsource file\n↓\nstage_media.py \u003Csource_path>\n↓\ntemporary staged copy under ~\u002F.openclaw\u002Fmedia\u002Fqqbot\u002F\n↓\nsend with \u003Cqqmedia>staged-path\u003C\u002Fqqmedia>\n↓\nstage_media.py --cleanup \u003Cstaged-path>\n```\n\nFor HTTP(S) URLs:\n\n```text\nURL\n↓\nsend directly with \u003Cqqmedia>URL\u003C\u002Fqqmedia>\n↓\nno staging\n↓\nno cleanup\n```\n\n## File Size Limit\n\nThe default file size limit is 10 MB.\n\nFiles larger than this limit will not be staged.\n\n## Notes\n\n- This skill does not delete the original file.\n- Cleanup must be performed through `stage_media.py --cleanup`.\n- QQBot plugin code should not directly delete staged files with `unlink`, `rm`, `del`, `fs.unlink`, or similar methods.\n- If sending fails after staging succeeds, cleanup should still be attempted.\n- If cleanup fails, report the cleanup failure and do not manually delete another path.\n\n## License\n\nMIT License\n","OpenClaw QQBot Send Skill 是一个用于通过QQBot发送本地文件、图片、音频、视频等媒体的工具。它能够自动将本地文件暂存到QQBot媒体中继目录，并使用`\u003Cqqmedia>...\u003C\u002Fqqmedia>`标签发送，之后清理临时存储的副本，确保源文件安全不被误删。该技能还支持检测锁定或无法访问的文件，强制10MB文件大小限制，并直接处理HTTP(S)媒体链接而无需暂存。适用于需要通过QQBot分享各种类型媒体文件的场景，特别适合开发者和用户希望简化文件分享流程的同时保证数据安全的情况。",2,"2026-06-11 04:02:47","CREATED_QUERY"]