PI
pirhoo/trotsky
๐จ A type-safe Javascript library to build automation at the top of ATProto/Bluesky API.
Trotsky
A type-safe library to build automation at the top of ATProto/Bluesky API.
Features
- Builder Pattern: Easily create our automation with an intuitive DSL.
- Reduce Complexity: Design advanced scenarios with a single expression in minutes.
- Type-safety: Benefit from type-safety and autocompletion for a robut development experience.
- Lifecycle Hooks: Extend scenarios with beforeStep and afterStep hooks for logging, monitoring, validation, and more.
- Discover: Find inspirations with a curated list of Trotsky implementations.
Quickstart
Install Trotsky from NPM with your favorite package manager:
yarn add trotsky
Then write your script using Trotsky:
import { AtpAgent } from "@atproto/api"
import { Trotsky } from "trotsky"
async function main() {
const agent = new AtpAgent({ service: "https://bsky.social" })
// Ensure you logged in with your agent, for instance using the login method
await agent.login({ identifier: 'trotsky.pirhoo.com', password: 'h0rs3!' })
await Trotsky
.init(agent)
.searchPost({ q: 'trotsky' })
.take(5)
.each()
.like()
.run()
}
main()Lifecycle Hooks
Extend your scenarios with beforeStep and afterStep hooks for logging, monitoring, validation, and more:
import { Trotsky } from "trotsky"
const trotsky = new Trotsky(agent)
// Log when steps start
trotsky.beforeStep((step, context) => {
console.log(`Starting: ${step.constructor.name}`)
})
// Track performance after each step
trotsky.afterStep((step, context, result) => {
console.log(`Completed: ${step.constructor.name} (${result.executionTime}ms)`)
if (result.executionTime > 1000) {
console.warn('Slow step detected!')
}
})
await trotsky
.actor('alice.bsky.social')
.createPost('Hello world!')
.run()See the Hooks Documentation for comprehensive guides and examples.
Next Steps
Find out more about how to use Trotsky with advanced scenario on the official documentation.
On this page
Languages
TypeScript98.8%JavaScript1.2%
Contributors
MIT License
Created December 18, 2024
Updated January 26, 2026