import dotenv from 'dotenv';
dotenv.config();
import { lateService } from '../services/late/late.service.js';
import { pinterestService } from '../services/pinterest/pinterest.service.js';
import axios, { AxiosError } from 'axios';
import { configUtil } from '../utils/config/config.util.js';
interface SetupCheckResult {
lateAPI: boolean;
pinterestAPI: boolean;
cdn: boolean;
openai: boolean;
}
/**
* Check Late API connection
*/
const checkLateAPI = async (): Promise<boolean> => {
console.log('Checking Late API...');
if (!configUtil.isLateAPIConfigured()) {
console.log('❌ LATE_API_KEY or LATE_PROFILE_ID not set');
return false;
}
if (!configUtil.isInstagramLateConfigured()) {
console.log('❌ LATE_INSTAGRAM_ACCOUNT_ID not set');
return false;
}
try {
const accounts = await lateService.getAccountInfo();
console.log('✅ Late API connected (for Instagram)');
if (Array.isArray(accounts)) {
console.log(` Found ${accounts.length} connected accounts`);
}
console.log(' ⭐ Using Late API for Instagram scheduling');
return true;
} catch (error) {
console.log('❌ Late API error:', error instanceof Error ? error.message : String(error));
return false;
}
};
/**
* Check Pinterest API connection
*/
const checkPinterestAPI = async (): Promise<boolean> => {
console.log('\nChecking Pinterest API...');
if (!configUtil.isPinterestConfigured()) {
console.log('❌ PINTEREST_ACCESS_TOKEN or PINTEREST_BOARD_ID not set');
return false;
}
try {
// Try to get boards to verify API connection
await pinterestService.getBoards();
console.log('✅ Pinterest API connected');
console.log(' ⭐ Using Pinterest API for Pinterest scheduling');
return true;
} catch (error) {
console.log('❌ Pinterest API error:', error instanceof Error ? error.message : String(error));
return false;
}
};
/**
* Check OpenAI API (optional)
*/
const checkOpenAI = async (): Promise<boolean> => {
console.log('\nChecking OpenAI API (optional)...');
if (!process.env.OPENAI_API_KEY) {
console.log('⚠️ OPENAI_API_KEY not set (will use template-based content generation)');
return false;
}
try {
await axios.get(
'https://api.openai.com/v1/models',
{
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`
}
}
);
console.log('✅ OpenAI API connected');
return true;
} catch (error) {
const axiosError = error as AxiosError;
console.log('❌ OpenAI API error:', axiosError.response?.data || axiosError.message);
return false;
}
};
/**
* Check CDN configuration
*/
const checkCDN = (): boolean => {
console.log('\nChecking CDN configuration...');
if (!configUtil.isCDNConfigured()) {
console.log('⚠️ CDN_BASE_URL not set (will upload files to Late API)');
return false;
}
const baseURL = configUtil.getCDNBaseURL();
console.log(`✅ CDN configured: ${baseURL}`);
console.log(' Images will be accessed via CDN URLs');
return true;
};
/**
* Main check function
*/
const main = async (): Promise<void> => {
console.log('Content Automation - Setup Check');
console.log('============================================\n');
const results: SetupCheckResult = {
lateAPI: await checkLateAPI(),
pinterestAPI: await checkPinterestAPI(),
cdn: checkCDN(),
openai: await checkOpenAI()
};
console.log('\n============================================');
console.log('Summary:');
console.log(` Late API (Instagram): ${results.lateAPI ? '✅' : '❌'}`);
console.log(` Pinterest API: ${results.pinterestAPI ? '✅' : '❌'}`);
console.log(` CDN: ${results.cdn ? '✅' : '⚠️ (required for image access)'}`);
console.log(` OpenAI: ${results.openai ? '✅' : '⚠️ (optional - will use templates)'}`);
if (results.lateAPI && results.pinterestAPI) {
console.log('\n✅ Setup complete! You can start processing images.');
console.log(' ⭐ Using Late API for Instagram');
console.log(' ⭐ Using Pinterest API for Pinterest');
} else {
console.log('\n⚠️ Please fix the issues above before proceeding.');
if (!results.lateAPI) {
console.log(' Required for Instagram: LATE_API_KEY, LATE_PROFILE_ID, LATE_INSTAGRAM_ACCOUNT_ID');
}
if (!results.pinterestAPI) {
console.log(' Required for Pinterest: PINTEREST_ACCESS_TOKEN, PINTEREST_BOARD_ID');
}
}
};
main().catch(error => {
console.error('Error:', error);
process.exit(1);
});