import dotenv from 'dotenv';
dotenv.config();
import { lateService } from '../services/late/late.service.js';
import axios from 'axios';
import { appConfig } from '../core/config/config.js';
interface SetupCheckResult {
lateAPI: boolean;
pinterestLate: boolean;
cdn: boolean;
scp: boolean;
openai: boolean;
}
/**
* Check Late API connection (Instagram)
*/
const checkLateAPI = async (): Promise<boolean> => {
console.log('Checking Late API (Instagram)...');
if (!appConfig.isLateAPIConfigured()) {
console.log('❌ LATE_API_KEY or LATE_PROFILE_ID not set');
return false;
}
if (!appConfig.isInstagramLateConfigured()) {
console.log('❌ LATE_INSTAGRAM_ACCOUNT_ID not set');
return false;
}
try {
const accounts = await lateService.getAccountInfo();
console.log('✅ Late API connected (Instagram)');
if (Array.isArray(accounts)) {
console.log(` Found ${accounts.length} connected accounts`);
}
return true;
} catch (error) {
console.log('❌ Late API error:', error instanceof Error ? error.message : String(error));
return false;
}
};
/**
* Check Late API Pinterest configuration
*/
const checkPinterestLate = (): boolean => {
console.log('\nChecking Late API (Pinterest)...');
if (!appConfig.isPinterestLateConfigured()) {
console.log('❌ LATE_PINTEREST_ACCOUNT_ID not set');
return false;
}
console.log('✅ Pinterest configured via Late API');
return true;
};
/**
* 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) {
if (axios.isAxiosError(error)) {
console.log('❌ OpenAI API error:', error.response?.data || error.message);
} else {
console.log('❌ OpenAI API error:', error instanceof Error ? error.message : String(error));
}
return false;
}
};
/**
* Check CDN configuration
*/
const checkCDN = (): boolean => {
console.log('\nChecking CDN configuration...');
if (!appConfig.isCDNConfigured()) {
console.log('⚠️ CDN_BASE_URL not set (will upload files to Late API)');
return false;
}
const baseURL = appConfig.getCDNBaseURL();
console.log(`✅ CDN configured: ${baseURL}`);
return true;
};
/**
* Check SCP upload configuration
*/
const checkSCP = (): boolean => {
console.log('\nChecking SCP upload configuration (optional)...');
if (!appConfig.isSCPConfigured()) {
console.log('⚠️ SCP not configured (local image processing disabled)');
return false;
}
const scpConfig = appConfig.getSCPConfig()!;
console.log(`✅ SCP configured: ${scpConfig.user}@${scpConfig.host}:${scpConfig.remoteBasePath}`);
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(),
pinterestLate: checkPinterestLate(),
cdn: checkCDN(),
scp: checkSCP(),
openai: await checkOpenAI()
};
console.log('\n============================================');
console.log('Summary:');
console.log(` Late API (Instagram): ${results.lateAPI ? '✅' : '❌'}`);
console.log(` Late API (Pinterest): ${results.pinterestLate ? '✅' : '❌'}`);
console.log(` CDN: ${results.cdn ? '✅' : '⚠️ (required for image access)'}`);
console.log(` SCP Upload: ${results.scp ? '✅' : '⚠️ (optional, for local image processing)'}`);
console.log(` OpenAI: ${results.openai ? '✅' : '⚠️ (optional - will use templates)'}`);
if (results.lateAPI && results.pinterestLate) {
console.log('\n✅ Setup complete! You can start processing images.');
console.log(' ⭐ Using Late API for Instagram and Pinterest');
} else {
console.log('\n⚠️ Please fix the issues above before proceeding.');
if (!results.lateAPI) {
console.log(' Required: LATE_API_KEY, LATE_PROFILE_ID, LATE_INSTAGRAM_ACCOUNT_ID');
}
if (!results.pinterestLate) {
console.log(' Required for Pinterest: LATE_PINTEREST_ACCOUNT_ID');
}
}
};
main().catch(error => {
console.error('Error:', error);
process.exit(1);
});