Types and helpers to manipulate .clap files
This library is the reference implementation of OpenClap for NodeJS and browser environments.
OpenClap is a prompt container file format that was initially created for my AiTube.at project. I am also using it in my other AI demos, and I think you should use it, too!
To install the package, run the following command (yaml
is a peer dependency):
npm install @aitube/clap yaml
import {
// types
ClapSegmentCategory,
ClapOutputType,
ClapSegmentStatus,
ClapAuthor,
ClapAssetSource,
ClapEntityGender,
ClapEntityAppearance,
ClapEntityRegion,
ClapEntityTimbre,
ClapEntityAudioEngine,
ClapSegmentFilteringMode,
ClapVoice,
ClapHeader,
ClapMeta,
ClapSceneEvent,
ClapScene,
ClapSegment,
ClapEntity,
ClapProject,
ClapMediaOrientation,
// defaults
defaultMediaOrientation,
// factories
newClap,
newEntity,
newSegment,
// main input/output handlers
parseClap,
serializeClap,
fetchClap,
updateClap,
// utilities
filterSegments,
filterSegmentsWithinRange,
generateSeed,
getClapAssetSourceType,
getValidNumber,
isValidNumber,
parseMediaOrientation,
parseOutputType,
parseSegmentCategory,
parseSegmentStatus,
UUID,
// converters
blobToDataUri,
dataUriToBlob,
clapToDataUri,
// helpers
buildEntityIndex,
filterAssets,
filterSegmentsByCategory,
generateClapFromSimpleStory,
getEmptyClap,
removeGeneratedAssetUrls,
} from "@aitube/clap"
// fetch a Clap file
const res = await fetch("https://..../file.clap")
const file = await res.blob()
// open the Clap file
const clap: ClapProject = await parseClap(file)
// perform arbitrary changes in the project
clap.segments.at(64).assetUrl = await generateVideoWithAI(....)
const segment: ClapSegment = clap.segments.at(42)
segment.prompt = "a camel in the desert, medium-shot, award-winning, 4k, Canon EOS"
const storyboards = clap.segment.filter(s => s.category === ClapSegmentCategory.STORYBOARD)
// save the Clap file
const newFile: ClapProject = await serializeClap(clap)
Install Bun
Run the following commands:
bun install
bun run build
To publish:
bun run build
bun run build:declaration
bun run publish
We welcome contributions! Please feel free to submit a pull request.
This package is under the MIT License. See LICENSE
file for more details.