一键导入
blink-storage
File upload with progress tracking and public URLs. Download, remove files. CLI for management. Extension auto-detection.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
File upload with progress tracking and public URLs. Download, remove files. CLI for management. Extension auto-detection.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
OAuth connector system for 38+ third-party services. Execute API calls to Google, Notion, Slack, Discord, GitHub, Stripe, Jira, HubSpot, Salesforce, LinkedIn, and more.
End-to-end guide for building and shipping a Blink app. Project setup, SDK init, auth, database, backend, deploy, and custom domains. Index to all other skills.
Authentication with managed and headless modes. Social providers, email/password, magic links, RBAC.
Build and deploy Blink apps to production. Preview vs production deploys, deploy pipeline, static site hosting.
Blink Claw agent management — managed AI agent hosting on Fly.io. List agents, check status, manage secrets. For autonomous agents, Telegram/Discord bots, and scheduled workflows.
AI Gateway for text generation, image generation/editing, video generation, text-to-speech, audio transcription, and AI phone calls. Unified access to 50+ models.
| name | blink-storage |
| description | File upload with progress tracking and public URLs. Download, remove files. CLI for management. Extension auto-detection. |
| Tool | Description |
|---|---|
blink_storage_list | List files in project storage with optional path prefix |
blink_storage_url | Get the public CDN URL for a stored file |
blink_storage_delete | Delete a file from storage |
# Upload a file
blink storage upload ./photo.jpg --path uploads/photo.jpg
# List files
blink storage list
# List files in a path
blink storage list uploads/
| Operation | Auth Required | Notes |
|---|---|---|
upload() | ❌ No | Public add-only (no overwrite) |
download() | ✅ Yes | Signed URL |
remove() | ✅ Yes | Requires JWT |
const { publicUrl } = await blink.storage.upload(
file,
`uploads/${Date.now()}.${file.name.split('.').pop()}`,
{ onProgress: (percent) => console.log(`${percent}%`) }
)
SDK auto-detects file type from content and corrects the extension. Uploads are add-only — duplicate paths return 409. Use timestamps or random IDs for uniqueness.
const { downloadUrl, filename } = await blink.storage.download('images/photo.jpg')
window.open(downloadUrl, '_blank')
// Custom filename
const { downloadUrl } = await blink.storage.download('images/photo.jpg', {
filename: 'my-photo.jpg',
})
await blink.storage.remove('uploads/file1.jpg')
await blink.storage.remove('file1.jpg', 'file2.jpg', 'file3.png') // multiple
const handleAvatarUpload = async (file: File) => {
const { publicUrl } = await blink.storage.upload(
file,
`avatars/${user.id}-${Date.now()}.${file.name.split('.').pop()}`
)
await blink.auth.updateMe({ avatar: publicUrl })
return publicUrl
}
const [progress, setProgress] = useState(0)
const handleUpload = async (file: File) => {
const { publicUrl } = await blink.storage.upload(
file,
`documents/${Date.now()}.${file.name.split('.').pop()}`,
{ onProgress: (percent) => setProgress(percent) }
)
return publicUrl
}
Upload first to get an HTTPS URL with extension — required for AI vision.
const { publicUrl } = await blink.storage.upload(photo, `photos/${Date.now()}.jpg`)
const { text } = await blink.ai.generateText({
messages: [{ role: "user", content: [
{ type: "text", text: "What's in this image?" },
{ type: "image", image: publicUrl },
]}],
})
Uploaded files return direct HTTPS URLs: https://storage.googleapis.com/{project}/uploads/{filename}.{ext} — publicly accessible, HTTPS, with file extension.
| Error | Cause | Fix |
|---|---|---|
| 409 conflict | Path already exists | Add timestamp/random ID |
| Invalid path | Special characters | Sanitize: path.replace(/[^a-zA-Z0-9_\-\/\.]/g, '_') |
| File too large | Exceeds limit | Compress or split file |