宇宙 Java 脚本 SDK
官方客户端 宇宙学。获取内容,管理媒体,并在Next.js,Node和浏览器中生成AI.
免费开始 • 妇女 快速启动 • 妇女 实例 • 妇女 Next.js 向导
宇宙学 是一个 无头CMS 配备用于创建内容的仪表板和用于向任何网站或应用程序发送内容的API。 这个软件包是正式的TypeScript客户端:输入结果,零运行时间依赖,在Next.js,Node.js 18+和浏览器中工作.
快开始
安装 SDK, 添加您的 Bucket 密钥 弹匣 > 设置 > API 访问,并在 Next.js App 路由器页面中获取内容.
npm install @cosmicjs/sdk
COSMIC_BUCKET_SLUG=your-bucket-slug
COSMIC_READ_KEY=your-read-key
import { createBucketClient } from '@cosmicjs/sdk';
const cosmic = createBucketClient({
bucketSlug: process.env.COSMIC_BUCKET_SLUG as string,
readKey: process.env.COSMIC_READ_KEY as string,
});
export default async function HomePage() {
const { objects: posts } = await cosmic.objects
.find({ type: 'posts' })
.props(['id', 'slug', 'title', 'metadata'])
.limit(10);
return (
<main>
<h1>Latest posts</h1>
<ul>
{posts.map((post) => (
<li key={post.id}>
<a href={`/posts/${post.slug}`}>{post.title}</a>
</li>
))}
</ul>
</main>
);
}
需要特定形状时通过类型参数 : find<Post>({ type: 'posts' })。 。 。 .
安装
npm install @cosmicjs/sdk
# or
yarn add @cosmicjs/sdk
# or
bun add @cosmicjs/sdk
import { createBucketClient } from '@cosmicjs/sdk';
目录
认证
在那个 宇宙管理员仪表板 转到 弹匣 > 设置 > API 访问 并复制你的巴基特弹和钥匙.
const cosmic = createBucketClient({
bucketSlug: process.env.COSMIC_BUCKET_SLUG,
readKey: process.env.COSMIC_READ_KEY,
});
添加 writeKey 用于创建、更新、删除、媒体上传和AI。 从不披露客户端代码中的写键 .
const cosmic = createBucketClient({
bucketSlug: process.env.COSMIC_BUCKET_SLUG,
readKey: process.env.COSMIC_READ_KEY,
writeKey: process.env.COSMIC_WRITE_KEY,
});
添加 previewToken 读取草稿 现场预览 没有写键.
const cosmic = createBucketClient({
bucketSlug: process.env.COSMIC_BUCKET_SLUG,
readKey: process.env.COSMIC_READ_KEY,
previewToken: process.env.COSMIC_PREVIEW_TOKEN,
});
获取对象
物体是宇宙中内容的基本构件. 传出一个用于键入结果的通称, 或使用 CosmicObject 为公有领域.
获取多个对象 [见文件[ . ]
const { objects: posts } = await cosmic.objects
.find({
type: 'posts',
})
.props(['title', 'slug', 'metadata'])
.limit(10);
获取单个对象 [见文件[ . ]
const { object: page } = await cosmic.objects
.findOne({
type: 'pages',
slug: 'home',
})
.props(['title', 'slug', 'metadata']);
输入结果
type Post = {
title: string;
slug: string;
metadata: { excerpt: string };
};
const { objects } = await cosmic.objects
.find<Post>({ type: 'posts' })
.props(['title', 'slug', 'metadata']);
查询助手
把它锁上 find 财务报告和审定财务报表 findOne数字 :
| 方法 | 目的 |
|---|---|
.props(['title', 'slug']) | 只返回列出的字段 |
.limit(10) | 页面大小find 仅限) |
.skip(20) | 用于平面的偏移 |
.sort('-created_at') | 按领域排序。 前缀 - 降级 |
.depth(1) | 解析嵌入对象引用 |
.status('published') | published, (中文(简体) ), draft,或 any |
.after(id) | 光标标记 |
.useCache() | 启用宇宙 CDN 缓存 |
创建、更新和删除对象
需要一个 writeKey。 。 。 .
创建对象 [见文件[ . ]
await cosmic.objects.insertOne({
title: 'Blog Post Title',
type: 'posts',
metadata: {
content: 'Here is the blog post content.',
seo_description: 'This is the blog post SEO description.',
featured_post: true,
tags: ['javascript', 'cms'],
},
});
更新对象 [见文件[ . ]
await cosmic.objects.updateOne('object-id', {
metadata: {
content: 'Updated blog post content.',
featured_post: false,
},
});
删除对象 [见文件[ . ]
await cosmic.objects.deleteOne('object-id');
批量操作 [见文件[ . ]
在一个呼叫中创建、更新和删除最多25个对象。 每次操作独立成功或失败.
const result = await cosmic.objects.batch([
{ method: 'add', object: { title: 'Post 1', type: 'posts', metadata: { content: '...' } } },
{ method: 'edit', object_id: 'object-id', object: { title: 'Updated Title' } },
{ method: 'delete', object_id: 'another-object-id' },
]);
媒体
在媒体库中上传、列出和删除文件。 [见文件[ . ]
const { media } = await cosmic.media
.find({ folder: 'images' })
.props(['name', 'url', 'imgix_url'])
.limit(20);
const { media: file } = await cosmic.media.findOne({ name: 'hero.png' });
await cosmic.media.insertOne({
media: bufferOrFile,
folder: 'images',
});
await cosmic.media.updateOne('media-id', { alt_text: 'Hero image' });
await cosmic.media.deleteOne('media-id');
上传的图像包括 imgix_url 用于调整大小和优化.
对象类型
阅读和管理内容模式. [1]见文件[ . ]
const { object_types } = await cosmic.objectTypes.find();
const { object_type } = await cosmic.objectTypes.findOne('posts');
await cosmic.objectTypes.insertOne({ title: 'Authors', slug: 'authors' });
await cosmic.objectTypes.updateOne('authors', { title: 'Writers' });
await cosmic.objectTypes.deleteOne('authors');
订正
列出并恢复对象修改 。 与 previewToken 以预览草稿。 [见文件[ . ]
const { revisions } = await cosmic.objectRevisions.find('object-id');
const { revision } = await cosmic.objectRevisions.findOne({
objectId: 'object-id',
revisionId: 'revision-id',
});
丰富文本和块
获取富有 文本块定义 @cosmicjs/rich-text[见文件[ . ]
npm install @cosmicjs/rich-text
import { createBucketClient } from '@cosmicjs/sdk';
import { RichText } from '@cosmicjs/rich-text';
const cosmic = createBucketClient({
bucketSlug: process.env.COSMIC_BUCKET_SLUG as string,
readKey: process.env.COSMIC_READ_KEY as string,
});
const [{ object: post }, { blocks }] = await Promise.all([
cosmic.objects.findOne({ type: 'posts', slug: 'hello-world' }),
cosmic.blocks.find(),
]);
export default function Post() {
return <RichText value={post?.metadata.content} blocks={blocks} />;
}
大赦国际
生成文字,图像,视频,和音频. 需要一个 writeKey[见文件[ . ]
文本
const { text, usage } = await cosmic.ai.generateText({
prompt: 'Write a product description for a coffee mug',
max_tokens: 500,
});
当它们到达时,会流出迹象. stream: true 返回 a TextStreamingResponse;不需要铸造.
const stream = await cosmic.ai.generateText({
prompt: 'Tell me about coffee mugs',
stream: true,
});
for await (const chunk of stream) {
if (chunk.text) process.stdout.write(chunk.text);
}
或使用 cosmic.ai.stream({ prompt })。通过传递分析图像 media_url 以您的及时.
图像、视频和音频
const image = await cosmic.ai.generateImage({
prompt: 'A serene mountain landscape at sunset',
folder: 'ai-generated-images',
});
const icon = await cosmic.ai.generateImage({
prompt: 'Minimal coffee cup icon, flat vector, no text',
format: 'svg',
aspect_ratio: '1:1',
});
const video = await cosmic.ai.generateVideo({
prompt: 'Product rotates smoothly with soft studio lighting',
duration: 8,
resolution: '720p',
});
const extended = await cosmic.ai.extendVideo({
media_id: video.media.id,
prompt: 'The camera pulls back to reveal the full scene',
});
const audio = await cosmic.ai.generateAudio({
prompt: 'Welcome to the Cosmic Developer Podcast.',
voice: 'nova',
});
已生成的文件以 CDN URL 保存到您的媒体库 。 见 AI 视频生成指南 模型、期限和扩展细节,以及 examples/ 用于可运行的脚本.
学多点
社区支助
- 解析器 (问题,错误报告)
- GitHub 图像 (议题、贡献)
- 页:1 (产品更新)
- YouTube (英语) (视频辅导)
宇宙学支持
联系我们 服务问题和定制计划.
捐款
这个项目使用 更改列表 管理释放。 遵循以下步骤添加一个更改列表:
- 运行
npm run changeset命令和选择带有变化描述的释放类型. - 当有更改的 PR 合并为
main分支, Github 将创建新的 PR, 并进行正确的版本更改和更改日志编辑 . - 何时
codeowner合并生成的PR,它将发布软件包并创建一个Github发行.
许可证
本项目在以下标题下公布: 麻省理工学院 执照.