Skip to content

docs: pipeline-generated pages (?, Languages, Voice) - #430

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
docs/pipeline-20260908-082715
Open

docs: pipeline-generated pages (?, Languages, Voice)#430
github-actions[bot] wants to merge 1 commit into
mainfrom
docs/pipeline-20260908-082715

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Summary

Generated documentation pages from the agentic docs pipeline (run 20260908-082715).

Families: Languages, Voice, unknown
Model: claude-sonnet-4-6

Pages added/updated

  • docs/voice/translate-a-pre-recorded-audio-file.mdx — missing_group_coverage
  • docs/languages/check-which-languages-and-features-are-supported-for-a-resource.mdx — missing_group_coverage
  • docs/learning-how-tos/cookbook/google-sheets — expanded thin page

Quality checks

  • Generation errors: 14
    • [Errno 2] No such file or directory: '/home/runner/work/api-docs/api-docs/docs/best-practices/cors-requests'
    • [Errno 2] No such file or directory: '/home/runner/work/api-docs/api-docs/docs/best-practices/cost-control'
    • [Errno 2] No such file or directory: '/home/runner/work/api-docs/api-docs/docs/best-practices/document-translations'
    • [Errno 2] No such file or directory: '/home/runner/work/api-docs/api-docs/docs/best-practices/error-handling'
    • [Errno 2] No such file or directory: '/home/runner/work/api-docs/api-docs/docs/best-practices/language-detection'

How to review

  1. Check out this branch and run mint dev to preview locally
  2. Review each page for accuracy and tone
  3. Verify navigation in docs.json makes sense

Generated by the agentic docs pipeline (pipeline/generate.py)

Generated 3 pages for: Languages, Voice, unknown
  - docs/voice/translate-a-pre-recorded-audio-file.mdx: No guide (tutorial or how-to) covers the 'Translate Audio Files' endpoints
  - docs/languages/check-which-languages-and-features-are-supported-for-a-resource.mdx: No guide (tutorial or how-to) covers the 'Languages' endpoints
  - docs/learning-how-tos/cookbook/google-sheets: docs/learning-how-tos/cookbook/google-sheets has under 100 words
@mintlify

mintlify Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
deepl-c950b784 🟢 Ready View Preview Sep 8, 2026, 8:43 AM

💡 Tip: Enable Automations to automatically generate PRs for you.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pipeline review: 8 finding(s) from review-report.json.

{ "name": "auto_detection", "needs_source_support": true }
]
}
]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 4 curl examples missing sample responses

The three curl examples in Step 4 (filter by target, filter by formality, include beta) show requests but no sample responses or sample jq output. Per CLAUDE.md, API requests should be paired with sample responses. The jq examples especially would benefit from showing what the filtered output looks like.

Suggested fix: After each curl+jq command, add a short example response block showing 2-3 items from the filtered output, e.g. [{"lang": "de", "name": "German"}, {"lang": "fr", "name": "French"}]. For the include=beta example, show a response entry with status: "beta".

The `resource` query parameter is required. It tells the API which DeepL product you're querying language support for:

| **Value** | **Use when building against...** |
|---|---|

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Table alignment: left-align header row

The resource table uses bold in the header cells (**Value**, **Use when building against...**) but CLAUDE.md says to use bold headers — that's fine — however the alignment specifiers |---|---| produce default (left) alignment, which is correct for text columns. No action needed on alignment itself, but the separator row |---|---| could be |:---|:---| to make the left-alignment explicit and consistent with any tooling that reads the markdown.

Suggested change
|---|---|
|:---|:---|

`GET /v3/languages` replaces the deprecated `GET /v2/languages` endpoint. If you're currently using v2, see the [migration guide](/docs/languages/migrating-from-v2-languages).
</Info>

## Before you start

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Info box migration guide link may not exist yet

The Info box references /docs/languages/migrating-from-v2-languages. If this page doesn't exist yet, it will produce a broken link. Verify the target page exists before publishing.

Suggested change
## Before you start
## Before you start

--header "Authorization: DeepL-Auth-Key $DEEPL_API_KEY" \
| jq '[.[] | select(.usable_as_target == true and .features.formality != null) | {lang, name}]'
```

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"What to do with this data" section heading is informal

The heading "What to do with this data" is slightly informal and inconsistent with the imperative/action style used elsewhere (Steps 1-4, Next steps). A more direct heading would better fit the guide's tone.

Suggested fix: Rename to "Common patterns" or "Apply the response data" to match the task-oriented voice used throughout.

]
}'
```

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tip about api-free.deepl.com placed in Step 1 interrupts the curl response example flow

The Tip about the Free API URL appears between the response JSON and the guidance about saving the job_id and upload_url. This breaks the reader's flow at a point where they should be processing the response. It would be less disruptive at the top of the page or in the Prerequisites.

Suggested fix: Move the Tip to the Prerequisites section, after the API key bullet, where it fits naturally as a setup consideration.

{ "status": "processing" },
{ "status": "processing" }
],
"created_at": "2026-10-01T01:03:03.444Z",

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extensions dict in download_results is fragile and not extensible

The extensions dictionary maps full content-type strings (including codec params) to file extensions. A developer who requests a different audio format (e.g. 'audio/mpeg') will get 'bin' as the extension. This is a teaching example but the pattern being taught is brittle.

Suggested fix: Add a comment explaining the limitation: '# Extend this map for other output types you request' and optionally show how to parse the base media type from the content_type string using .split(';')[0] as a fallback.

The response contains the job ID and a pre-signed upload URL:

```json
{

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 2 curl example hardcodes the upload URL instead of referencing the variable from Step 1

The curl command in Step 2 uses a literal upload URL. Following the guide, a developer might not realize this is the upload_url value from Step 1's response. The connection between steps is clear in prose but not reinforced in the code.

Suggested fix: Add a one-line comment above the curl command: '# Use the upload_url from the Step 1 response' to make the connection explicit without adding prose.

## Upload the source file

PUT your audio file directly to the `upload_url` from the previous step. This is a direct upload to object storage, not to the DeepL API, so no authorization header is needed.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No guidance on retry or backoff strategy for polling

Step 3 says 'Poll every 10-30 seconds' but gives no guidance on when to give up or how to handle transient HTTP errors during polling. The Python script has no timeout or max-retry logic. For a podcast episode, processing could take minutes.

Suggested fix: Add a sentence in the Step 3 prose noting a reasonable timeout (e.g. 'For a 15 MB file, expect 2-5 minutes of processing time') and add a max_attempts parameter to poll_until_done in the script with a clear error when exceeded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants