Reduce CMS bandwidth costs, eliminate overages, and serve assets through your own global edge proxy.
How It Works
CMS Assets places your edge proxy between your site and CMS provider. Without changing your content workflow, asset URLs are served through your own domain to reduce costs, improve control, and keep performance stable.
1. Connect Your CMS
Add a tenant, choose Prismic or Contentful, and provide repository/space settings.
2. Enable the Proxy
Every tenant gets a dedicated `*.cmsassets.com` domain for serving asset files.
3. Track Savings
Bandwidth is routed through your edge and reduces CMS overage costs.
Savings Calculator
Compare the cost of serving assets directly through your CMS versus routing them through CMS Assets. Adjust the sliders to match your usage.
For Developers
@synchronized-studio/response-transformer automatically replaces Prismic, Contentful, Sanity, Shopify, Cloudinary, or Imgix asset URLs with your CMS Assets domain, keeping integrations clean and consistent.
What You Get
Install
Add the package once and use the same helper for every supported CMS.
Copy command
npm install @synchronized-studio/response-transformerUsage
import { transformCmsAssetUrls } from '@synchronized-studio/response-transformer'
const spaceId = 'exampleSpaceId'
const contentfulToken = process.env.CONTENTFUL_DELIVERY_TOKEN
const contentfulResponse = await fetch(
`https://cdn.contentful.com/spaces/${spaceId}/environments/master/entries`,
{
headers: {
Authorization: `Bearer ${contentfulToken}`,
},
}
)
const cmsData = await contentfulResponse.json()
const transformed = transformCmsAssetUrls(cmsData, {
cms: 'contentful',
spaceId,
cmsAssetsUrl: 'https://example.cmsassets.com',
})For Developers
@synchronized-studio/cmsassets-agent is a CLI that scans your project, installs the response transformer, patches your source files, and adds an npm script so you can re-run the transform whenever you add new CMS-backed code. Optional AI mode uses an LLM to patch tricky files and can verify every transformation with an AI review pass.
What You Get
Install
Add the package once and use the same helper for every supported CMS.
Copy command
npx @synchronized-studio/cmsassets-agent initRe-run after code changes
After init, the agent adds a script to your package.json. Use it whenever you add new fetch/API calls that return CMS data.
npm run cmsassets:transform When AST-based patching hits an edge case or you want an extra safety net, turn on AI mode: --patch-mode ai lets an LLM patch complex or unusual files, and --ai-verify runs an AI review over every patched file so you can ship with confidence.
Set OPENAI_API_KEY and add the optional openai dependency, then run:
npx @synchronized-studio/cmsassets-agent init --patch-mode ai --ai-verifyFAQ
Who is CMS Assets for?
+What problem does CMS Assets solve?
+How do we integrate it into an existing site?
+Does it work with multiple sites or brands?
+Will this break image transformations or query params?
+What about video and large files?
+