Major refactoring to create a clean, integrated CLI application: ### New Features: - Unified CLI executable (./seo) with simple command structure - All commands accept optional CSV file arguments - Auto-detection of latest files when no arguments provided - Simplified output directory structure (output/ instead of output/reports/) - Cleaner export filename format (all_posts_YYYY-MM-DD.csv) ### Commands: - export: Export all posts from WordPress sites - analyze [csv]: Analyze posts with AI (optional CSV input) - recategorize [csv]: Recategorize posts with AI - seo_check: Check SEO quality - categories: Manage categories across sites - approve [files]: Review and approve recommendations - full_pipeline: Run complete workflow - analytics, gaps, opportunities, report, status ### Changes: - Moved all scripts to scripts/ directory - Created config.yaml for configuration - Updated all scripts to use output/ directory - Deprecated old seo-cli.py in favor of new ./seo - Added AGENTS.md and CHANGELOG.md documentation - Consolidated README.md with updated usage ### Technical: - Added PyYAML dependency - Removed hardcoded configuration values - All scripts now properly integrated - Better error handling and user feedback Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
256 lines
4.8 KiB
CSS
256 lines
4.8 KiB
CSS
/**
|
|
* Rank Math API Manager - Admin Styles
|
|
*
|
|
* @since 1.0.7
|
|
*/
|
|
|
|
/* Plugin header styling */
|
|
.rank-math-api-header {
|
|
background: #fff;
|
|
border: 1px solid #ccd0d4;
|
|
border-radius: 4px;
|
|
padding: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.rank-math-api-header h1 {
|
|
margin: 0 0 10px 0;
|
|
color: #23282d;
|
|
}
|
|
|
|
.rank-math-api-header .description {
|
|
color: #666;
|
|
font-size: 14px;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Status cards */
|
|
.rank-math-api-status-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
gap: 20px;
|
|
margin-bottom: 30px;
|
|
}
|
|
|
|
.rank-math-api-status-card {
|
|
background: #fff;
|
|
border: 1px solid #ccd0d4;
|
|
border-radius: 4px;
|
|
padding: 20px;
|
|
box-shadow: 0 1px 1px rgba(0,0,0,.04);
|
|
}
|
|
|
|
.rank-math-api-status-card h3 {
|
|
margin: 0 0 15px 0;
|
|
color: #23282d;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 8px 0;
|
|
border-bottom: 1px solid #f0f0f1;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-label {
|
|
font-weight: 500;
|
|
color: #50575e;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-value {
|
|
color: #23282d;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-value.success {
|
|
color: #00a32a;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-value.warning {
|
|
color: #dba617;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-value.error {
|
|
color: #d63638;
|
|
}
|
|
|
|
/* Update section */
|
|
.rank-math-api-update-section {
|
|
background: #fff;
|
|
border: 1px solid #ccd0d4;
|
|
border-radius: 4px;
|
|
padding: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.rank-math-api-update-section h3 {
|
|
margin: 0 0 15px 0;
|
|
color: #23282d;
|
|
}
|
|
|
|
.rank-math-api-update-actions {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.rank-math-api-update-actions .button {
|
|
margin: 0;
|
|
}
|
|
|
|
/* API endpoints section */
|
|
.rank-math-api-endpoints {
|
|
background: #fff;
|
|
border: 1px solid #ccd0d4;
|
|
border-radius: 4px;
|
|
padding: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.rank-math-api-endpoints h3 {
|
|
margin: 0 0 15px 0;
|
|
color: #23282d;
|
|
}
|
|
|
|
.rank-math-api-endpoint {
|
|
background: #f6f7f7;
|
|
border: 1px solid #dcdcde;
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.rank-math-api-endpoint:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.rank-math-api-endpoint h4 {
|
|
margin: 0 0 10px 0;
|
|
color: #23282d;
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.rank-math-api-endpoint .endpoint-url {
|
|
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
background: #fff;
|
|
padding: 8px 12px;
|
|
border: 1px solid #dcdcde;
|
|
border-radius: 3px;
|
|
color: #50575e;
|
|
font-size: 13px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.rank-math-api-endpoint .endpoint-method {
|
|
display: inline-block;
|
|
background: #0073aa;
|
|
color: #fff;
|
|
padding: 2px 8px;
|
|
border-radius: 3px;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
margin-right: 8px;
|
|
}
|
|
|
|
.rank-math-api-endpoint .endpoint-description {
|
|
margin: 10px 0 0 0;
|
|
color: #666;
|
|
font-size: 13px;
|
|
}
|
|
|
|
/* Loading states */
|
|
.rank-math-api-loading {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
color: #666;
|
|
font-style: italic;
|
|
}
|
|
|
|
.rank-math-api-loading .spinner {
|
|
float: none;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Notices */
|
|
.rank-math-api-notice {
|
|
margin: 15px 0;
|
|
}
|
|
|
|
.rank-math-api-notice.success {
|
|
border-left-color: #00a32a;
|
|
}
|
|
|
|
.rank-math-api-notice.warning {
|
|
border-left-color: #dba617;
|
|
}
|
|
|
|
.rank-math-api-notice.error {
|
|
border-left-color: #d63638;
|
|
}
|
|
|
|
/* Responsive design */
|
|
@media (max-width: 782px) {
|
|
.rank-math-api-status-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.rank-math-api-update-actions {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.rank-math-api-update-actions .button {
|
|
width: 100%;
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
/* Dark mode support */
|
|
@media (prefers-color-scheme: dark) {
|
|
.rank-math-api-header,
|
|
.rank-math-api-status-card,
|
|
.rank-math-api-update-section,
|
|
.rank-math-api-endpoints {
|
|
background: #1e1e1e;
|
|
border-color: #3c434a;
|
|
}
|
|
|
|
.rank-math-api-header h1,
|
|
.rank-math-api-status-card h3,
|
|
.rank-math-api-update-section h3,
|
|
.rank-math-api-endpoints h3,
|
|
.rank-math-api-endpoint h4 {
|
|
color: #f0f0f1;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-label {
|
|
color: #a7aaad;
|
|
}
|
|
|
|
.rank-math-api-status-card .status-value {
|
|
color: #f0f0f1;
|
|
}
|
|
|
|
.rank-math-api-endpoint {
|
|
background: #2c3338;
|
|
border-color: #3c434a;
|
|
}
|
|
|
|
.rank-math-api-endpoint .endpoint-url {
|
|
background: #1e1e1e;
|
|
border-color: #3c434a;
|
|
color: #a7aaad;
|
|
}
|
|
|
|
.rank-math-api-endpoint .endpoint-description {
|
|
color: #a7aaad;
|
|
}
|
|
} |