n-seo 0.3.2 → 0.3.3
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/ingest/__pycache__/analyze_metadata.cpython-312.pyc +0 -0
- package/ingest/__pycache__/google_auth.cpython-312.pyc +0 -0
- package/ingest/__pycache__/http_util.cpython-312.pyc +0 -0
- package/ingest/__pycache__/seo_config.cpython-312.pyc +0 -0
- package/ops/__pycache__/daily.cpython-312.pyc +0 -0
- package/ops/__pycache__/daily_diff.cpython-312.pyc +0 -0
- package/ops/__pycache__/demo_data.cpython-312.pyc +0 -0
- package/ops/__pycache__/export_static.cpython-312.pyc +0 -0
- package/ops/__pycache__/llm.cpython-312.pyc +0 -0
- package/ops/__pycache__/publish.cpython-312.pyc +0 -0
- package/ops/daily.py +16 -8
- package/package.json +1 -1
- package/probes/__pycache__/site_probe.cpython-312.pyc +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/ops/daily.py
CHANGED
|
@@ -202,6 +202,15 @@ def main():
|
|
|
202
202
|
wait_for_network()
|
|
203
203
|
|
|
204
204
|
results, failures = [], []
|
|
205
|
+
|
|
206
|
+
def write_last_run():
|
|
207
|
+
seo_config.DATA.mkdir(parents=True, exist_ok=True)
|
|
208
|
+
(seo_config.DATA / "last-run.json").write_text(json.dumps({
|
|
209
|
+
"ts": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%MZ"),
|
|
210
|
+
"failures": "; ".join(failures),
|
|
211
|
+
"steps": results,
|
|
212
|
+
}, indent=1), encoding="utf-8")
|
|
213
|
+
|
|
205
214
|
if run_hooks_flag:
|
|
206
215
|
run_hooks("before", hooks["beforeRun"], results, failures)
|
|
207
216
|
for name, script in todo:
|
|
@@ -221,17 +230,16 @@ def main():
|
|
|
221
230
|
failures.append(name)
|
|
222
231
|
log(f"{name} FAILED")
|
|
223
232
|
results.append({"name": name, "ok": ok, "seconds": round(time.time() - t0, 1)})
|
|
233
|
+
# After every step, not just at the end. static-export is itself a
|
|
234
|
+
# step, so a record written after the loop is not yet on disk when the
|
|
235
|
+
# export reads it — every published page carried the *previous* run's
|
|
236
|
+
# timestamp and said the daily run had not happened today. It also
|
|
237
|
+
# means the dashboard's status reflects a long run while it is still
|
|
238
|
+
# going, rather than staying stale for its full duration.
|
|
239
|
+
write_last_run()
|
|
224
240
|
if run_hooks_flag:
|
|
225
241
|
run_hooks(name, hooks["afterStep"].get(name, []), results, failures, step=name)
|
|
226
242
|
|
|
227
|
-
def write_last_run():
|
|
228
|
-
seo_config.DATA.mkdir(parents=True, exist_ok=True)
|
|
229
|
-
(seo_config.DATA / "last-run.json").write_text(json.dumps({
|
|
230
|
-
"ts": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%MZ"),
|
|
231
|
-
"failures": "; ".join(failures),
|
|
232
|
-
"steps": results,
|
|
233
|
-
}, indent=1), encoding="utf-8")
|
|
234
|
-
|
|
235
243
|
write_last_run()
|
|
236
244
|
if run_hooks_flag and hooks["afterRun"]:
|
|
237
245
|
# afterRun sees a complete last-run.json (a mirror sync wants it), and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n-seo",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "Agentic, local-first SEO / AEO / GEO control plane: pulls Search Console + GA4, probes your sites, and ranks the next moves. Your LLM writes the proposals; your coding agent works the queue over MCP.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "En Dash Consulting (https://endash.us)",
|
|
Binary file
|