feat: Зеро-персонаж, auto-publish, auto-series, channel-stats, fallback covers
- Персонаж Зеро: 23 позы (zeroCharacter.js), скрипты генерации - Auto-publish статей в TG: multipart upload, кнопки, режим alternating Zero/cover - Fallback цепочка обложек: aiprimetech gpt-5.5 → Pollinations → local SVG (6 палитр) - Auto-series: Claude haiku определяет серию для каждой статьи автоматически - Channel stats: подписчики, история, delta 24h/7d - Photo-search: Yandex API, профили доменов, Redis лимиты - Scheduled posts runner: backfill, preview, queue, cancel - promptBuilder: author_persona Зеро, голос от первого лица - Fixes: dollar-placeholder bugs в PATCH channels/autogen, listArticles фильтры - AI model: gpt-5.5 для image generation
This commit is contained in:
@@ -24,11 +24,13 @@ router.post('/', async (req, res) => {
|
||||
try {
|
||||
const userId = getUserId(req);
|
||||
if (!userId) return res.status(401).json({ error: 'Unauthorized' });
|
||||
const { channel_id, content, image_url, topic, status, scheduled_at } = req.body;
|
||||
const { channel_id, content, image_url, image_credit, topic, status, scheduled_at } = req.body;
|
||||
if (!channel_id || !content) return res.status(400).json({ error: 'channel_id and content required' });
|
||||
const post = await svc.savePost({
|
||||
userId, channelId: channel_id, content,
|
||||
imageUrl: image_url, topic,
|
||||
imageUrl: image_url,
|
||||
imageCredit: image_credit ?? null,
|
||||
topic,
|
||||
status: status || 'draft',
|
||||
scheduledAt: scheduled_at,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user