Table of Contents
bun install
To create a new plugin, use the curatedotfun-plugin-template as a starting point.
Then, publish as a standalone package. Make a pull request to add your plugin below:
Each plugin runs on its own port in development mode with hot reloading:
# Run all plugins
bun run dev
# Run specific plugins
bun run dev --filter=@curatedotfun/plugin-name
The following plugins are currently supported:
Plugin | Type | Description | Development Port |
---|---|---|---|
ai-transform | Transform | AI-powered content transformation | 3002 |
notion | Distributor | Notion integration | 3003 |
rss | Distributor | RSS feed integration | 3004 |
simple-transform | Transform | Basic content transformation | 3005 |
supabase | Distributor | Supabase integration | 3006 |
telegram | Distributor | Telegram channel integration | 3007 |
The @curatedotfun/plugin-loader
package provides a simple way to load and manage plugins:
import { PluginLoader } from "@curatedotfun/plugin-loader";
// Create loader instance (reload plugins every 5 minutes)
const loader = new PluginLoader(5 * 60 * 1000);
// Load a transform plugin
const gptTransform = await loader.loadPlugin("gpt-transform", {
url: "http://localhost:3002/remoteEntry.js",
type: "transform",
config: {
prompt: "Your prompt",
apiKey: "your-api-key"
}
});
// Load a distributor plugin
const telegram = await loader.loadPlugin("telegram", {
url: "http://localhost:3003/remoteEntry.js",
type: "distributor",
config: {
botToken: "your-bot-token",
channelId: "your-channel-id"
}
});
// Use plugins
await gptTransform.transform({ input: "Hello" });
await telegram.distribute("feed-1", "Content");
// Force reload all plugins
await loader.reloadAll();
Benefits:
- Hot reloading during development
- Automatic plugin reloading
- Plugin instance caching
- Type-safe plugin loading
Build all plugins:
bun run build
Or build a specific plugin:
bun run build --filter=@curatedotfun/gpt-transform
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you're interested in contributing to this project, please read the contribution guide.