
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Automate YouTube comment replies using AI - A TypeScript library and CLI tool for intelligent YouTube comment management with OpenAI GPT integration
Replyt is a TypeScript npm package that allows you to automate YouTube comment replies using AI. Built with OpenAI GPT and YouTube Data API v3.
System Requirements:
API Requirements:
Before running the setup, you'll need to obtain several API credentials. Here's how to get each one:
Option A: From Channel URL
youtube.com/channel/UCxxxxxx
, the part after /channel/
is your Channel IDOption B: From Custom URL
youtube.com/@username
or youtube.com/c/username
:
UCxxxxxxxxxxxxxxxxxxxxxx
)sk-proj-
or sk-
)Step 1: OAuth Consent Screen
Replyt
(or any name)Step 2: Create OAuth Client
Replyt YouTube Bot
Troubleshooting OAuth Setup:
There are two main ways to use Replyt:
Best for: Quick setup, production use, non-developers
# 1. Install globally
npm install -g replyt
# 2. Create and navigate to your bot directory
mkdir replyt-bot
cd replyt-bot
# 3. Setup configuration
replyt setup
# 4. Start the bot
replyt
CLI Commands:
replyt
- Start the botreplyt setup
- Complete setup wizard (API + OAuth)replyt test
- Test API connectionsreplyt --help
- Show helpreplyt --version
- Show versionBest for: Developers, customization, contributing, learning
# 1. Clone repository
git clone https://github.com/rfqma/replyt.git
cd replyt
# 2. Install dependencies
npm install
# 3. Setup configuration
npm run setup
# 4. Start in development mode
npm run dev
Development Commands:
npm run dev
- Development mode with auto-restartnpm run start
- Production mode (requires build)npm run build
- Compile TypeScriptnpm run watch
- Development with file watchingnpm run setup
- Complete setup wizard (API + OAuth)npm run test
- Test configurationnpm run clean
- Clean build filesFeature | CLI Install | Local Development |
---|---|---|
Setup Time | ⚡ Fast (2 minutes) | 🔧 Medium (5 minutes) |
Customization | ❌ Limited | ✅ Full access |
Updates | ✅ npm update -g replyt | 🔄 git pull |
Debugging | ❌ Limited | ✅ Full debugging |
Contributing | ❌ No | ✅ Yes |
Storage | ⚡ Minimal | 💾 Full source code |
Both methods require a .env
file with your API credentials:
# Required
YOUTUBE_API_KEY=your_youtube_api_key_here
YOUTUBE_CHANNEL_ID=your_channel_id_here
OPENAI_API_KEY=your_openai_api_key_here
# Required (for posting comments)
YOUTUBE_CLIENT_ID=your_client_id_here
YOUTUBE_CLIENT_SECRET=your_client_secret_here
YOUTUBE_REFRESH_TOKEN=your_refresh_token_here
YOUTUBE_ACCESS_TOKEN=your_access_token_here
# Bot Settings (optional)
CHECK_INTERVAL_MINUTES=5
MAX_REPLIES_PER_RUN=10
REPLY_STYLE="friendly and helpful"
DATABASE_PATH=./data/replyt.db
After global installation and setup:
# Navigate to your bot directory
cd replyt-bot
# Start the bot
replyt
# That's it! The bot will run automatically
Running the Bot:
npm run dev # Development mode with auto-restart
npm run start # Production mode (requires build)
npm run watch # Development with file watching
Development Commands:
npm run build # Compile TypeScript
npm run clean # Clean build files
npm run test # Test API connections
npm run setup # Run setup wizard
You can also use Replyt as a library in your own projects:
# Install as dependency
npm install replyt
import { Replyt, AutoReplyBot, config } from "replyt";
// Using the Replyt wrapper class
const bot = new Replyt(config);
// Start bot with cron scheduling
await bot.start("*/5 * * * *"); // Every 5 minutes
// Or use manually
await bot.initialize();
await bot.processNewComments();
const stats = await bot.getStats();
import { AutoReplyBot, config, validateConfig } from "replyt";
// Validate configuration
validateConfig();
// Create bot instance
const bot = new AutoReplyBot(config);
// Initialize
await bot.initialize();
// Process comments once
await bot.processNewComments();
// View statistics
const stats = await bot.getStats();
console.log(stats);
// Shutdown
bot.shutdown();
Replyt
Wrapper class for easy library usage.
class Replyt {
constructor(config: Config);
async initialize(): Promise<void>;
async processNewComments(): Promise<void>;
async getStats(): Promise<object>;
async start(cronExpression?: string): Promise<void>;
shutdown(): void;
}
AutoReplyBot
Core bot class with full control.
class AutoReplyBot {
constructor(config: Config);
async initialize(): Promise<void>;
async processNewComments(): Promise<void>;
async getStats(): Promise<object>;
shutdown(): void;
}
YouTubeService
OpenAIService
DatabaseService
interface Config {
youtubeApiKey: string;
youtubeChannelId: string;
youtubeOAuth: OAuthCredentials;
openaiApiKey: string;
checkIntervalMinutes: number;
maxRepliesPerRun: number;
replyStyle: string;
databasePath: string;
}
interface YouTubeComment {
id: string;
videoId: string;
authorDisplayName: string;
textDisplay: string;
publishedAt: string;
// ... other properties
}
Variable | Required | Default | Description |
---|---|---|---|
YOUTUBE_API_KEY | ✅ | - | YouTube Data API v3 key |
YOUTUBE_CHANNEL_ID | ✅ | - | Your YouTube channel ID |
OPENAI_API_KEY | ✅ | - | OpenAI API key |
YOUTUBE_CLIENT_ID | ✅ | - | OAuth client ID (for posting) |
YOUTUBE_CLIENT_SECRET | ✅ | - | OAuth client secret |
YOUTUBE_REFRESH_TOKEN | ✅ | - | OAuth refresh token |
CHECK_INTERVAL_MINUTES | ❌ | 5 | Comment check interval (minutes) |
MAX_REPLIES_PER_RUN | ❌ | 10 | Max replies per cycle |
REPLY_STYLE | ❌ | "friendly and helpful" | AI reply style |
DATABASE_PATH | ❌ | "./data/replyt.db" | SQLite database path |
You can customize AI reply style by changing REPLY_STYLE
:
"friendly and helpful"
"professional and formal"
"casual and funny"
"educational and informative"
"Always reply in Indonesian with emojis"
OAuth authentication is required for the bot to post replies to YouTube. The setup process will guide you through:
Setup Commands:
CLI: replyt setup
Local: npm run setup
The bot provides detailed logging and statistics:
🤖 Bot initialized successfully
📝 Found 25 total comments
🆕 Found 5 new comments to process
🧠 Generating reply for comment by John Doe...
📤 Posting reply: "Thank you for watching! ..."
✅ Successfully replied to comment abc123
📊 Total comments processed: 150
git clone https://github.com/rfqma/replyt.git
cd replyt
npm install
npm run setup
npm run dev
Command | Description |
---|---|
npm run dev | Development mode with auto-restart |
npm run start | Production mode (requires build) |
npm run build | Compile TypeScript |
npm run watch | Development with file watching |
npm run setup | Complete setup wizard (API + OAuth) |
npm run test | Test configuration |
npm run clean | Clean build files |
npm run validate | Validate package structure |
replyt/
├── src/
│ ├── bin/replyt.ts # CLI executable
│ ├── lib/index.ts # Library exports
│ ├── services/ # Core services
│ ├── config/ # Configuration
│ └── types/ # TypeScript types
├── scripts/ # Setup scripts
├── examples/ # Usage examples
└── dist/ # Compiled output
API Key Invalid
Error: The request cannot be completed because you have exceeded your quota.
OAuth Issues
Error: invalid_grant
replyt setup
npm run setup
OpenAI Rate Limits
Error: Rate limit exceeded
MAX_REPLIES_PER_RUN
CHECK_INTERVAL_MINUTES
CLI: DEBUG=replyt:* replyt
Local: DEBUG=replyt:* npm run dev
MIT License - see LICENSE file for details.
Contributions are welcome! Please:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Built with ❤️ using:
FAQs
Automate YouTube comment replies using AI - A TypeScript library and CLI tool for intelligent YouTube comment management with OpenAI GPT integration
We found that replyt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.