{"_id":"@affeisme/openclaw-ios-screenshot-plugin","name":"@affeisme/openclaw-ios-screenshot-plugin","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@affeisme/openclaw-ios-screenshot-plugin","version":"0.1.0","description":"Authenticated iOS screenshot upload plugin for OpenClaw","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/imaffe/openclaw-ios-screenshot-plugin.git"},"homepage":"https://github.com/imaffe/openclaw-ios-screenshot-plugin#readme","bugs":{"url":"https://github.com/imaffe/openclaw-ios-screenshot-plugin/issues"},"publishConfig":{"access":"public"},"keywords":["openclaw","ios","plugin","screenshot","webhook","upload"],"openclaw":{"extensions":["./index.ts"]},"_id":"@affeisme/openclaw-ios-screenshot-plugin@0.1.0","gitHead":"0aedcba996ca272eef7362800b3d121c0fdbd3c7","_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-zUujkR7++EjXmAKJHH+Fh+YJ4GVYFKcF9/z+fuVjyPHnskhMbMUBv2RpU6GG5+9NR9g0d7Lf9tAGRm90zxavOg==","shasum":"7c2d2dfcd711de9270a89ae840652eb5a77aa12e","tarball":"https://registry.npmjs.org/@affeisme/openclaw-ios-screenshot-plugin/-/openclaw-ios-screenshot-plugin-0.1.0.tgz","fileCount":10,"unpackedSize":27936,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDoxkcbOajOlFEXZU0KVpa3iE5XH3/4uxrnzEot4izfNAIhAPFyIQBcs4KgEdejUgFYZqrWD9OuUovQZ4Ldo/GNUnxj"}]},"_npmUser":{"name":"affeisme","email":"affeisme@gmail.com"},"directories":{},"maintainers":[{"name":"affeisme","email":"affeisme@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-ios-screenshot-plugin_0.1.0_1773737969398_0.2281563867693679"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-17T08:59:29.291Z","0.1.0":"2026-03-17T08:59:29.543Z","modified":"2026-03-17T08:59:29.800Z"},"maintainers":[{"name":"affeisme","email":"affeisme@gmail.com"}],"description":"Authenticated iOS screenshot upload plugin for OpenClaw","homepage":"https://github.com/imaffe/openclaw-ios-screenshot-plugin#readme","keywords":["openclaw","ios","plugin","screenshot","webhook","upload"],"repository":{"type":"git","url":"git+https://github.com/imaffe/openclaw-ios-screenshot-plugin.git"},"bugs":{"url":"https://github.com/imaffe/openclaw-ios-screenshot-plugin/issues"},"license":"MIT","readme":"# OpenClaw iOS Screenshot Plugin\n\nThis repository contains a reusable OpenClaw plugin that exposes an authenticated HTTP\nendpoint for screenshot uploads. It accepts image files plus an optional text\ndescription, then stores each upload under the OpenClaw workspace.\n\n## What it does\n\n- Registers a plugin-owned HTTP route on the OpenClaw gateway\n- Accepts `multipart/form-data` uploads from apps and services\n- Also accepts `application/json` with base64-encoded files\n- Verifies a shared token before accepting uploads\n- Stores files under `<configured OpenClaw workspace>/<destinationDir>/<uploadId>/`\n- Writes an `upload.json` sidecar with description and metadata\n\n## Install\n\nFrom npm:\n\n```bash\nopenclaw plugins install @affeisme/openclaw-ios-screenshot-plugin\nopenclaw plugins enable openclaw-ios-screenshot-plugin\n```\n\nFrom a local checkout during development:\n\n```bash\nopenclaw plugins install ./openclaw-ios-screenshot-plugin\nopenclaw plugins enable openclaw-ios-screenshot-plugin\n```\n\n## Configure\n\nAdd plugin config to your OpenClaw config file:\n\n```yaml\nplugins:\n  entries:\n    openclaw-ios-screenshot-plugin:\n      enabled: true\n      config:\n        authToken: \"replace-with-a-long-random-secret\"\n        routePath: \"/plugins/openclaw-ios-screenshot-plugin/upload\"\n        destinationDir: \"screenshots/inbox\"\n        maxPayloadBytes: 26214400\n        allowedMimeTypes:\n          - \"image/png\"\n          - \"image/jpeg\"\n          - \"image/webp\"\n          - \"image/heic\"\n          - \"image/heif\"\n```\n\nRestart the OpenClaw gateway after config changes.\n\n## Publish\n\n```bash\nnpm login\nnpm pack --dry-run\nnpm publish --access public\n```\n\n## Usage\n\n### Multipart upload\n\n```bash\ncurl \\\n  -X POST \"http://localhost:3100/plugins/openclaw-ios-screenshot-plugin/upload\" \\\n  -H \"Authorization: Bearer replace-with-a-long-random-secret\" \\\n  -F \"description=Quarterly sales dashboard capture\" \\\n  -F \"file=@/path/to/screenshot.png;type=image/png\"\n```\n\n### JSON upload\n\n```bash\ncurl \\\n  -X POST \"http://localhost:3100/plugins/openclaw-ios-screenshot-plugin/upload\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-OpenClaw-Token: replace-with-a-long-random-secret\" \\\n  -d '{\n    \"description\": \"Captured from automation\",\n    \"files\": [\n      {\n        \"filename\": \"capture.png\",\n        \"contentType\": \"image/png\",\n        \"dataBase64\": \"iVBORw0KGgoAAAANSUhEUgAA...\"\n      }\n    ]\n  }'\n```\n\n## Stored layout\n\nEach upload gets a unique folder:\n\n```text\n<workspace>/screenshots/inbox/<upload-id>/\n  01-screenshot.png\n  upload.json\n```\n\n`upload.json` includes:\n\n- upload ID\n- timestamp\n- description text\n- client IP and user agent when available\n- stored file names, MIME types, byte sizes, and relative paths\n\n## Notes\n\n- The route is plugin-authenticated, not gateway-authenticated.\n- `Authorization: Bearer <token>` and `X-OpenClaw-Token: <token>` are both supported.\n- The plugin rejects non-image MIME types unless you expand `allowedMimeTypes`.\n","readmeFilename":"README.md","_rev":"1-e5bb21c20b19d3a99a5f77aa46ce610d"}