DuckDB Blog Article Quality Audit Report
Date: 2026-08-06
Scanned: 208 articles in /root/duckdb-blog/content/zh/post/
Script: python3 /root/.hermes/scripts/verify_duckdb_article_v3.py
Summary
| Status | Count |
|---|
| ✅ Passed | 97 |
| ❌ Failed | 111 |
| ⏱️ Timeout | 2 |
Critical Issues (Must Fix)
1. Python Syntax Errors (8 articles)
| Article | Error |
|---|
| duckdb-ai-agent-brain.md | Line 130 - unterminated string literal |
| duckdb-ai-data-qa-bot.md | Line 75 - unterminated string literal |
| duckdb-materialized-view-basics.md | Line 174 - unterminated string literal |
| duckdb-pivot-by-expression.md | Line 105 - unterminated triple-quoted string |
| duckdb-text-to-sql-bot.md | Line 87 - unterminated string literal |
| duckdb-turbovec-vector-integration.md | Line 44 - invalid syntax |
| duckdb-upcoming-v2-roadmap-preview.md | Line 216 - invalid syntax |
| duckdb-sql-rule-engine-anomaly-detection.md | Line 275 - invalid syntax |
2. SQL Placeholder Syntax ... (12 articles)
| Article | Line | Issue |
|---|
| duckdb-clickstream-performance-tuning.md | 36 | SELECT ... |
| duckdb-competitive-intelligence-system.md | 193 | SELECT ... |
| duckdb-complete-guide.md | 116 | REPLACE(amount * 1.1 AS amount) |
| duckdb-data-cleaning-etl/index.md | 253 | SELECT FROM ... GROUP BY ... |
| duckdb-merge-idempotent-etl.md | 44 | UPDATE SET ... |
| duckdb-merge-into-production-guide.md | 36,227,284 | UPDATE SET ... |
| duckdb-millions-data-processing.md | 526,540 | SELECT ..., WHERE ... |
| duckdb-ml-inference-infera.md | 403,432 | infera_predict(..., ...) |
| duckdb-qualify-clause.md | 216,252,269 | RANK() OVER (...) |
| duckdb-list-functions-complete-guide.md | 149 | WHERE ... |
| duckdb-lance-extension-guide.md | 109,253,275 | [0.1, 0.2, ...] |
| duckdb-predicate-pushdown-filter-indexes.md | 57 | DATE + BIGINT |
3. DuckDB CLI Commands in SQL Blocks (2 articles)
| Article | Issue |
|---|
| duckdb-online-shell.md | .help, .timer, .files are CLI commands |
| duckdb-vs-sqlite-benchmark.md | .mode csv is SQLite command |
4. dbt Jinja Templates in SQL Blocks (3 articles)
| Article | Issue |
|---|
| duckdb-dbt-data-modeling.md | {{ ref('...') }} not valid SQL |
| duckdb-dbt-monetization-toolchain.md | {{ config(...) }} not valid SQL |
| duckdb-dbt-report-automation.md | {{ config(...) }} not valid SQL |
High Priority Issues
5. Wrong Parameter Names
| Article | Wrong | Should Be |
|---|
| duckdb-return-null-on-error.md | RETURN_NULL_ON_ERROR=true | ignore_errors=true |
| duckdb-production-error-handling.md | RETURN_NULL_ON_ERROR=true | ignore_errors=true |
| duckdb-csv-import-complete-guide.md | file_errors | (remove or use ignore_errors) |
| duckdb-data-acquisition.md | data= in read_csv_auto | (invalid parameter) |
6. CREATE EXTENSION Not Supported
| Article | Extension |
|---|
| duckdb-production-enterprise-guide.md | postgres_fdw |
| duckdb-financial-health-saas.md | fuzzy |
| Article | Error |
|---|
| duckdb-memory-management-performance-tuning/index.md | % is not a valid memory unit |
| duckdb-parquet-advanced-features.md | Empty string is not a valid memory unit |
Medium Priority Issues
8. GROUPING SETS Syntax
| Article | Line |
|---|
| duckdb-group-by-aggregation.md | 263 |
| duckdb-unpivot-grouping-sets.md | 208 |
9. PIVOT/UNPIVOT Syntax
| Article | Line |
|---|
| duckdb-pivot-long-to-wide.md | 56, 84 |
| duckdb-pivot-unpivot-data-product.md | 68, 100 |
10. INSERT OR REPLACE BY NAME
| Article | Line |
|---|
| duckdb-insert-or-replace-by-name.md | 142 |
| duckdb-153-release.md | 142 |
11. ROWS_PER_GROUP / OVERWRITE_MODE
| Article | Issue |
|---|
| duckdb-copy-to-export-complete-guide.md | ROWS_PER_GROUP not supported |
| duckdb-partition-by-complete-guide.md | ROWS_PER_GROUP, OVERWRITE_MODE |
| duckdb-partition-pruning-production-guide.md | ROWS_PER_GROUP |
Low Priority / Environmental Issues
12. S3 Authentication Required (External)
These articles reference S3 buckets that require credentials:
- duckdb-as-new-jq.md
- duckdb-async-io-parquet-benchmark.md
- duckdb-data-acquisition.md
- duckdb-data-lake-iceberg-delta-guide.md
- duckdb-ecommerce-competitor-monitoring-service.md
- duckdb-ecosystem-trending-may2026.md
- duckdb-query-remote-files.md
- duckdb-replace-pandas-etl-workflow.md
- duckdb-v154-new-features.md
- duckdb-production-deployment-guide.md
Recommendation: Add environment variable documentation or use local test data.
13. Extension Conflicts
| Article | Issue |
|---|
| duckdb-quack-protocol.md | quack extension origin conflict |
| duckdb-quack-remote-protocol.md | quack extension origin conflict |
14. Timeout (Files Too Large)
| Article | Note |
|---|
| duckdb-152-release.md | Exceeded 90s timeout |
| duckdb-performance-tuning-ultimate-guide.md | Exceeded 90s timeout |
Recommendations
For Article Authors
- Use complete SQL: Replace
... placeholders with actual values or add comments - Use correct code blocks:
- SQL blocks for SQL
- Python blocks for Python
- Bash blocks for CLI commands
- Test with DuckDB v1.5+: Ensure all syntax is compatible
- Use local test data: Avoid S3/external dependencies in examples
For Verification Script
- Add placeholder detection (
... in SQL) - Add dbt Jinja detection (
{{ }} patterns) - Add DuckDB CLI command detection (
.help, .timer, etc.) - Increase timeout for large files or split them
Report generated by Hermes Agent on 2026-08-06