get_templates(); $keyword_functions = AAGL_Keyword_Functions::get_instance(); $main_keywords = $keyword_functions->get_main_keywords( array( 'status' => 'active' ) ); $aagl_has_api_key = '' !== AAGL_Utilities::get_setting( 'api_settings.claude_api_key', '' ) || '' !== AAGL_Utilities::get_setting( 'api_settings.gemini_api_key', '' ); $aagl_limit_check = AAGL_Utilities::check_article_limit(); AAGL_Admin_Pages::render_admin_header( __( '記事生成', 'aio-agent-article-generator' ), __( 'キーワードとテンプレートを選んで、記事を1本生成します。生成には1〜3分かかります。', 'aio-agent-article-generator' ) ); ?>

jQuery(function ($) { var $btn = $('#aagl-generate-now-btn'); var $spinner = $('.aagl-generate-page .spinner'); var $status = $('#aagl-generate-status'); var $result = $('#aagl-generate-result'); var $message = $('#aagl-generate-message'); var $links = $('#aagl-generate-links'); var timer = null; function showResult(text, isError) { $message.text(text).css('color', isError ? '#d63638' : '#00a32a'); $result.show(); } $btn.on('click', function () { var templateId = $('#generate_template').val(); var keywordId = $('#generate_keyword').val(); var postStatus = $('#generate_post_status').val(); if (!templateId || !keywordId) { alert(); return; } var started = Date.now(); $btn.prop('disabled', true); $spinner.addClass('is-active'); $links.hide(); $result.hide(); $status.text(); timer = setInterval(function () { var sec = Math.floor((Date.now() - started) / 1000); $status.text( + ' ' + sec + 's'); }, 1000); $.ajax({ url: aagl_ajax_object.ajax_url, type: 'POST', timeout: 600000, data: { action: 'aagl_generate_now', nonce: aagl_ajax_object.nonce, template_id: templateId, main_keyword_id: keywordId, post_status: postStatus } }).done(function (res) { if (res && res.success) { var d = res.data || {}; showResult( + ' ' + (d.title || ''), false); if (d.edit_url) { $('#aagl-generate-edit-link').attr('href', d.edit_url); } if (d.view_url) { $('#aagl-generate-view-link').attr('href', d.view_url); } $links.show(); } else { var msg = (res && res.data && (res.data.message || res.data)) || ; showResult(typeof msg === 'string' ? msg : JSON.stringify(msg), true); } }).fail(function (xhr, textStatus) { var msg = textStatus === 'timeout' ? : + ' (' + textStatus + ')'; showResult(msg, true); }).always(function () { clearInterval(timer); $spinner.removeClass('is-active'); $status.text(''); $btn.prop('disabled', false); }); }); });