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

  1. Increase the pre-evaluate wait (page.wait) so the SPA fully hydrates before extracting
  2. Confirm the share link grants full-content access when opened logged-out in a browser
  3. Inspect the page store shape and update buildExtractorJs to read the correct content field/index
  4. 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

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


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/6831c3cf23f267b4. Report an issue: GitHub.