jackwener/OpenCLI · error · CommandExecutionError
Youdao note parser did not find full note content in the pag
Error message
Youdao note parser did not find full note content in the page store
What it means
normalizeExtractionResult requires `data[7]` (hasContentField) to be true, proving the page store actually contained the full note content field. If it is false, the extractor only found metadata, so the library refuses to emit a truncated note.
Source
Thrown at clis/youdao/note.js:201
if (reason === 'not_found') {
throw new EmptyResultError('youdao note', 'The shared note is missing, expired, cancelled, or inaccessible.');
}
throw new CommandExecutionError(`Youdao note parser failed: ${reason}`);
}
const title = String(data[1] ?? '');
const content = String(data[2] ?? '');
const summary = String(data[3] ?? '');
const keywords = String(data[4] ?? '');
const createTime = data[5];
const fileSize = data[6];
const hasContentField = data[7] === true;
const rawContentLength = Number(data[8] ?? 0);
const finalUrl = String(data[9] || sourceUrl);
if (!title) {
throw new CommandExecutionError('Youdao note parser did not extract a title');
}
if (!hasContentField) {
throw new CommandExecutionError('Youdao note parser did not find full note content in the page store');
}
if (rawContentLength > 0 && !content) {
throw new CommandExecutionError('Youdao note parser found note content but extracted no readable text');
}
const row = {};
row.title = title;
row.content = content;
row.summary = summary;
row.keywords = keywords;
row.created_at = formatYoudaoTimestamp(createTime);
row.file_size = fileSize == null ? '' : String(fileSize);
row.url = finalUrl;
return row;
}
var command = cli({
site: 'youdao',
name: 'note',View on GitHub (pinned to 49907e53dc)
Solutions
- Increase the pre-evaluate wait (page.wait) so the SPA fully hydrates before extracting
- Confirm the share link grants full-content access when opened logged-out in a browser
- Inspect the page store shape and update buildExtractorJs to read the correct content field/index
- Retry the command once after a transient load failure
Defensive patterns
Strategy: validation
Validate before calling
if (!payload || payload.hasContentField !== true) {
throw new Error('Page store lacked full note content; increase wait or fix extraction');
} Type guard
function hasFullContent(p) {
return typeof p === 'object' && p !== null && p.hasContentField === true;
} Try / catch
try {
await cli.youdao.note({ url });
} catch (e) {
if (/did not find full note content/.test(e.message)) {
await sleep(3000);
return cli.youdao.note({ url }); // retry after fuller load
}
throw e;
} Prevention
- Wait for SPA hydration before evaluating the extractor
- Confirm the share link exposes full content when logged out
- Retry once on slow networks
- Monitor Youdao store-shape changes
When it happens
Trigger: The in-page store object lacked the content key at the moment of evaluation — the note body had not loaded/hydrated yet, the share page rendered a preview-only or restricted view, or the store's shape changed so the extractor read the wrong index.
Common situations: Slow network leaving the SPA partially loaded; very large notes whose body loads lazily; Youdao UI update shifting store fields; accessing a note without full-share permission.
Related errors
- No assistant reply found in Qianwen chat.
- rednote notifications: unexpected evaluate response
- rednote notifications: ${data.error}${data.detail ? ' (' + d
- Failed to read ${draftType} drafts
- ${webHost} feed: unexpected evaluate response
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/6831c3cf23f267b4.
Report an issue: GitHub.