A Raycast extension that uploads files from your clipboard to AWS S3 and copies a 24-hour presigned URL to your clipboard.
If you use asdf or mise, this repo includes a .tool-versions file pinned to nodejs 22.14.0.
- Clone this repository
- Navigate to the extension directory:
cd s3-drop - Install dependencies and start development mode:
npm install && npm run dev - Raycast will open automatically and the extension will appear in a Development section at the top of the root search
- Changes are automatically reloaded when you save files
To validate the extension for distribution:
npm run buildnpm run lint # Run ESLint
npm run fix-lint # Auto-fix lint issues- Go to the AWS S3 Console
- Click Create bucket
- Enter a bucket name (e.g.,
my-clipboard-uploads) - Select your preferred region (note this for later)
- Keep Block all public access enabled (presigned URLs don't require public access)
- Click Create bucket
- Go to the AWS IAM Console
- Navigate to Users > Create user
- Enter a username (e.g.,
raycast-uploader) - Click Next
- Select Attach policies directly
- Click Create policy and use the JSON editor to add:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}Replace YOUR_BUCKET_NAME with your actual bucket name.
- Name the policy (e.g.,
RaycastS3UploaderPolicy) and create it - Go back to the user creation, refresh the policy list, and attach your new policy
- Complete user creation
- Go to the user > Security credentials > Create access key
- Select Application running outside AWS
- Copy the Access Key ID and Secret Access Key (you won't see the secret again)
You can automatically delete old files to save storage costs.
- Go to your bucket in the S3 Console
- Click the Management tab
- Click Create lifecycle rule
- Enter a rule name (e.g.,
delete-after-1-day) - Apply to all objects in the bucket
- Under Lifecycle rule actions, check Expire current versions of objects
- Set Days after object creation to
1(or longer if you prefer) - Click Create rule
Objects will be automatically deleted after the specified number of days.
When you first run the extension, Raycast will prompt you to configure:
| Setting | Description | Example |
|---|---|---|
| AWS Access Key ID | Your IAM user's access key | AKIAIOSFODNN7EXAMPLE |
| AWS Secret Access Key | Your IAM user's secret key | (stored securely in macOS Keychain) |
| S3 Bucket Name | The bucket you created | my-clipboard-uploads |
| AWS Region | The region of your bucket | us-east-1 |
- Copy a file to your clipboard (select a file in Finder and press
Cmd+C) - Open Raycast and run Drop to S3
- The file uploads and a presigned URL (valid for 24 hours) is copied to your clipboard
- Paste the URL anywhere to share
- Files remain private in your S3 bucket
- Presigned URLs allow temporary access without making the bucket public
- URLs automatically expire after 24 hours