@lynxflow/seo-engine 1.8.2 → 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/connectors/wordpress/lynxseo-admin-app.js +25 -0
- package/connectors/wordpress/lynxseo-connector.php +24 -0
- package/connectors/wordpress/lynxseo-connector.zip +0 -0
- package/dist/extended-schemas.d.ts +2 -2
- package/dist/index.js +698 -338
- package/dist/index.mjs +10 -7
- package/package.json +1 -1
- package/src/extended-schemas.ts +8 -4
- package/src/features-knowledge-harvester.ts +190 -0
- package/src/index.ts +2 -1
- package/src/og-image-generator.ts +5 -5
- package/src/power-words-psychology.ts +269 -160
|
@@ -135,6 +135,31 @@
|
|
|
135
135
|
saveStatus && el('div', { style: { background: '#dcfce7', color: '#166534', padding: '6px 16px', borderRadius: '999px', fontSize: '12px', fontWeight: '700' } }, saveStatus)
|
|
136
136
|
),
|
|
137
137
|
|
|
138
|
+
// 1-Click Connect to LynxSEO Studio SaaS Banner
|
|
139
|
+
(typeof window !== 'undefined' && window.lynxSeoAdminConfig) && (
|
|
140
|
+
window.lynxSeoAdminConfig.isConnected
|
|
141
|
+
? el('div', { style: { background: '#f0fdf4', border: '1px solid #bbf7d0', borderRadius: '12px', padding: '16px 20px', marginBottom: '24px', display: 'flex', justifyContent: 'space-between', alignItems: 'center' } },
|
|
142
|
+
el('div', { style: { display: 'flex', alignItems: 'center', gap: '12px' } },
|
|
143
|
+
el('span', { style: { fontSize: '24px' } }, '🟢'),
|
|
144
|
+
el('div', null,
|
|
145
|
+
el('strong', { style: { color: '#166534', fontSize: '14px', display: 'block' } }, 'Connecté à LynxSEO Studio Cloud'),
|
|
146
|
+
el('span', { style: { color: '#15803d', fontSize: '12px', fontFamily: 'monospace' } }, 'Clé Active : ' + (window.lynxSeoAdminConfig.apiKey ? window.lynxSeoAdminConfig.apiKey.slice(0, 16) + '...' : 'lynx_live_verified') + ' • Google Search Console & IndexNow Activés')
|
|
147
|
+
)
|
|
148
|
+
),
|
|
149
|
+
el('a', { href: window.lynxSeoAdminConfig.connectUrl, style: { background: '#16a34a', color: '#fff', padding: '8px 16px', borderRadius: '8px', textDecoration: 'none', fontWeight: '700', fontSize: '12px' } }, '🔄 Resynchroniser')
|
|
150
|
+
)
|
|
151
|
+
: el('div', { style: { background: 'linear-gradient(135deg, #0f172a 0%, #1e1b4b 100%)', border: '1px solid #3b82f6', borderRadius: '14px', padding: '20px 24px', marginBottom: '24px', display: 'flex', justifyContent: 'space-between', alignItems: 'center', boxShadow: '0 10px 25px -5px rgba(37,99,235,0.2)' } },
|
|
152
|
+
el('div', { style: { display: 'flex', alignItems: 'center', gap: '14px' } },
|
|
153
|
+
el('span', { style: { fontSize: '32px' } }, '⚡'),
|
|
154
|
+
el('div', null,
|
|
155
|
+
el('strong', { style: { color: '#ffffff', fontSize: '15px', display: 'block', marginBottom: '2px' } }, 'Connectez votre site à LynxSEO Studio en 1 Clic'),
|
|
156
|
+
el('p', { style: { color: '#93c5fd', fontSize: '12px', margin: 0 } }, 'Liaison automatique Google Search Console (OAuth 2.0), Indexation Instantanée et 16 Schémas JSON-LD.')
|
|
157
|
+
)
|
|
158
|
+
),
|
|
159
|
+
el('a', { href: window.lynxSeoAdminConfig.connectUrl, style: { background: '#2563eb', color: '#ffffff', padding: '12px 22px', borderRadius: '10px', textDecoration: 'none', fontWeight: '800', fontSize: '13px', display: 'inline-flex', alignItems: 'center', gap: '6px', boxShadow: '0 4px 14px rgba(37,99,235,0.4)' } }, '🚀 Connecter en 1 Clic →')
|
|
160
|
+
)
|
|
161
|
+
),
|
|
162
|
+
|
|
138
163
|
// Modules Grid Cards (Toggle switches)
|
|
139
164
|
el('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))', gap: '16px', marginBottom: '28px' } },
|
|
140
165
|
[
|
|
@@ -109,6 +109,16 @@ class LynxSeoUltimateEnterprisePlugin {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
public function init_plugin() {
|
|
112
|
+
// Handle 1-Click OAuth Connect Callback from LynxSEO Studio SaaS
|
|
113
|
+
if (is_admin() && isset($_GET['lynxseo_connected']) && $_GET['lynxseo_connected'] == '1' && !empty($_GET['api_key'])) {
|
|
114
|
+
$settings = get_option($this->option_name, array());
|
|
115
|
+
$settings['api_key'] = sanitize_text_field($_GET['api_key']);
|
|
116
|
+
$settings['is_connected'] = true;
|
|
117
|
+
$settings['connected_at'] = current_time('mysql');
|
|
118
|
+
update_option($this->option_name, $settings);
|
|
119
|
+
update_option('lynxseo_api_key', sanitize_text_field($_GET['api_key']));
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
add_rewrite_rule('^sitemap_index\.xml$', 'index.php?lynx_sitemap=index', 'top');
|
|
113
123
|
add_rewrite_rule('^sitemap-pseo\.xml$', 'index.php?lynx_sitemap=pseo', 'top');
|
|
114
124
|
add_rewrite_rule('^llms\.txt$', 'index.php?lynx_llms=1', 'top');
|
|
@@ -132,6 +142,20 @@ class LynxSeoUltimateEnterprisePlugin {
|
|
|
132
142
|
if (strpos($hook, 'lynxseo') !== false) {
|
|
133
143
|
wp_enqueue_script('chart-js', 'https://cdn.jsdelivr.net/npm/chart.js', array(), '4.4.0', true);
|
|
134
144
|
wp_enqueue_script('lynxseo-admin-react', plugins_url('lynxseo-admin-app.js', __FILE__), array('wp-element', 'wp-components'), $this->version, true);
|
|
145
|
+
|
|
146
|
+
$settings = get_option($this->option_name, array());
|
|
147
|
+
$site_url = get_site_url();
|
|
148
|
+
$return_url = admin_url('admin.php?page=lynxseo-dashboard');
|
|
149
|
+
$connect_url = 'https://lynxseo.studio/connect/wordpress?site_url=' . urlencode($site_url) . '&return_url=' . urlencode($return_url);
|
|
150
|
+
|
|
151
|
+
wp_localize_script('lynxseo-admin-react', 'lynxSeoAdminConfig', array(
|
|
152
|
+
'siteUrl' => $site_url,
|
|
153
|
+
'returnUrl' => $return_url,
|
|
154
|
+
'connectUrl' => $connect_url,
|
|
155
|
+
'isConnected' => !empty($settings['is_connected']) || !empty($settings['api_key']),
|
|
156
|
+
'apiKey' => $settings['api_key'] ?? '',
|
|
157
|
+
'connectedAt' => $settings['connected_at'] ?? '',
|
|
158
|
+
));
|
|
135
159
|
}
|
|
136
160
|
}
|
|
137
161
|
|
|
Binary file
|
|
@@ -104,7 +104,7 @@ export declare class ExtendedSchemaGraphBuilder {
|
|
|
104
104
|
url: string;
|
|
105
105
|
}[]): Record<string, unknown>;
|
|
106
106
|
/**
|
|
107
|
-
* 7. AggregateRating (Google Gold Stars in SERPs) -
|
|
107
|
+
* 7. AggregateRating (Google Gold Stars in SERPs) - Strictly Dynamic (No Fake Defaults)
|
|
108
108
|
*/
|
|
109
109
|
static buildAggregateRating(opts: {
|
|
110
110
|
ratingValue?: number;
|
|
@@ -112,7 +112,7 @@ export declare class ExtendedSchemaGraphBuilder {
|
|
|
112
112
|
bestRating?: number;
|
|
113
113
|
worstRating?: number;
|
|
114
114
|
itemReviewedName: string;
|
|
115
|
-
}): Record<string, unknown
|
|
115
|
+
}): Record<string, unknown> | null;
|
|
116
116
|
/**
|
|
117
117
|
* 8. AggregateOffer (Price Ranges & Tiers) - Inspired by santifer-irepair
|
|
118
118
|
*/
|