Skip to content

docs: consolidate Qoder integration and add Qwen Code - #2934

Open
daveomri wants to merge 3 commits into
apify:masterfrom
daveomri:docs/qwen-code-docs
Open

docs: consolidate Qoder integration and add Qwen Code#2934
daveomri wants to merge 3 commits into
apify:masterfrom
daveomri:docs/qwen-code-docs

Conversation

@daveomri

@daveomri daveomri commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Consolidates the Qoder CLI, IDE, Desktop, and QoderWork pages into one Qoder integration page (with QoderWake and the JetBrains plugin covered as MCP-server surfaces), and adds a Qwen page for Qwen Code, which reuses the same Apify plugin, and QwenWork, which connects the Apify MCP server and skills directly; the Qoder logo is refreshed and the old qoder-cli/qoder-ide/qoder-work slugs redirect to the new page.

A page per Qoder product was redundant since they share the same setup steps, and Alibaba's new Qwen tools can reuse the Qoder plugin.

⚠️ Can't be merged until the Qoder plugin is resubmitted to the Qoder marketplace.

@TC-MO

TC-MO commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Hey there just FYI, we do redirects through nginx.conf not within docusaurus itself

@marcel-rbro marcel-rbro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the prose and the config change. The redirect approach and two authentication claims need fixing; the rest is small. Two points have no line in the diff:

  1. static/img/platform/integrations/qoder-cli.png and qoder-work.png are no longer used now that the cards are gone, so they can be deleted.
  2. Neither Qoder nor Qwen is in the AI assistants card grid on the AI integrations index, so the only way in is the "By provider" sentence at the bottom - @daveomri is that on purpose?

Comment thread docusaurus.config.js
Comment on lines +381 to +395
[
'@docusaurus/plugin-client-redirects',
{
redirects: [
{
to: '/integrations/qoder-plugin',
from: [
'/integrations/qoder-cli',
'/integrations/qoder-ide',
'/integrations/qoder-work',
],
},
],
},
],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Redirects in this repo go in nginx.conf, not in the Docusaurus config, and a client-side redirect doesn't return a 301, so the old URLs lose their SEO value. This block is also why Lint app code fails - the oxfmt --check step flags this file.

The matching nginx lines:

rewrite ^/integrations/qoder-cli$  /integrations/qoder-plugin permanent;
rewrite ^/integrations/qoder-ide$  /integrations/qoder-plugin permanent;
rewrite ^/integrations/qoder-work$ /integrations/qoder-plugin permanent;
Suggested change
[
'@docusaurus/plugin-client-redirects',
{
redirects: [
{
to: '/integrations/qoder-plugin',
from: [
'/integrations/qoder-cli',
'/integrations/qoder-ide',
'/integrations/qoder-work',
],
},
],
},
],


## Authenticate to Apify

The plugin bundles the Apify MCP server. Read-only tools like searching Apify Store and fetching Actor details work without signing in, but you need to authenticate to run Actors and access your account data. Each surface triggers the same Apify OAuth flow in your browser.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The plugin connects to https://mcp.apify.com/?client=qoder+plugin with no tools parameter, and that endpoint needs a token for every call. So Actor search doesn't work without signing in either - the Qwen page gets this right.

Suggested change
The plugin bundles the Apify MCP server. Read-only tools like searching Apify Store and fetching Actor details work without signing in, but you need to authenticate to run Actors and access your account data. Each surface triggers the same Apify OAuth flow in your browser.
The plugin bundles the Apify MCP server and connects to its default endpoint, so authenticate before your first prompt - without a token the server rejects every tool call, including Actor search. Each surface triggers the same Apify OAuth flow in your browser.

Comment on lines +210 to +214
If the browser doesn't open automatically, copy the OAuth URL shown by the surface and open it manually. If sign-in still fails, use an API token from [Apify Console > Settings > Integrations](https://console.apify.com/settings/integrations?utm_source=qoder&utm_medium=integrations):

```bash
export APIFY_TOKEN=<YOUR_API_TOKEN>
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

APIFY_TOKEN in your shell doesn't authenticate the MCP server - line 189 of the Qwen page says so, and the plugin config has no token env. The header is the fallback that works.

Suggested change
If the browser doesn't open automatically, copy the OAuth URL shown by the surface and open it manually. If sign-in still fails, use an API token from [Apify Console > Settings > Integrations](https://console.apify.com/settings/integrations?utm_source=qoder&utm_medium=integrations):
```bash
export APIFY_TOKEN=<YOUR_API_TOKEN>
```
If the browser doesn't open automatically, copy the OAuth URL shown by the surface and open it manually. If sign-in still fails, add an `Authorization` header to the `apify` server with a token from [Apify Console > Settings > Integrations](https://console.apify.com/settings/integrations?utm_source=qoder&utm_medium=integrations):
```json
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
```

title: Qoder integration
sidebar_label: Qoder
description: Install the Apify plugin in the Qoder CLI, IDE, Desktop app, and QoderWork to run and build Actors with the Apify MCP server, skills, and a routing agent.
slug: /integrations/qoder-plugin

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@daveomri the other hubs use the plain provider slug and give the product name to the product page - /integrations/openai for the hub, /integrations/chatgpt for the product. That would make this /integrations/alibaba for the hub and /integrations/qoder for this page, which also keeps the URL people already have pointing at Qoder content. Was qoder-plugin picked to avoid moving the hub?

@@ -1 +1 @@
label: 'Qoder'
label: 'Alibaba ecosystem'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The other categories are 'Claude' and 'OpenAI', so the plain provider name keeps the sidebar consistent.

Suggested change
label: 'Alibaba ecosystem'
label: 'Alibaba'

Comment on lines +2 to +4
title: Alibaba ecosystem
description: Use Apify Actors with Alibaba's Qoder and Qwen tools - install the Apify plugin in the Qoder CLI, IDE, Desktop app, or QoderWork, in Qwen Code, or in QwenWork.
sidebar_label: Alibaba ecosystem

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same as the category label - the OpenAI and Claude hubs use just the provider name.

Suggested change
title: Alibaba ecosystem
description: Use Apify Actors with Alibaba's Qoder and Qwen tools - install the Apify plugin in the Qoder CLI, IDE, Desktop app, or QoderWork, in Qwen Code, or in QwenWork.
sidebar_label: Alibaba ecosystem
title: Alibaba
description: Use Apify Actors with Alibaba's Qoder and Qwen tools - install the Apify plugin in the Qoder CLI, IDE, Desktop app, or QoderWork, in Qwen Code, or in QwenWork.
sidebar_label: Alibaba


> Use Apify to scrape the latest 50 posts from a public Instagram profile and return them as a table.

## Bundled skills

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This table and the three prompts below it are copied word for word from the Qoder page, so they'll drift apart as soon as one changes. Worth moving into a partial in sources/_partials/ and importing it on both pages.


Inside a session, run `/extensions list` to see installed extensions or `/extensions` for the interactive manager.

To move to a newer release, download the new ZIP and install it again. The `qwen extensions update` command only covers extensions installed from a local path or a git repository, so it can't update an archive install.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@daveomri the install step above uses a local path (qwen extensions install ./apify-qoder-plugin-<version>.zip), so this reads like the install method and the unsupported update method are the same thing. Is the difference a ZIP file versus an unpacked folder?


If the sign-in page doesn't open or the server stays disconnected:

- **Qwen Code:** copy the authorization URL from the terminal and open it manually. If sign-in still fails, add an `Authorization: Bearer <APIFY_TOKEN>` header to the `apify` server in `~/.qwen/settings.json` under `mcpServers` - see [Bearer token authentication](/integrations/mcp) for the shape.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The MCP page has no "Bearer token authentication" heading, so this link drops the reader at the top. The tab is in the client configuration section.

Suggested change
- **Qwen Code:** copy the authorization URL from the terminal and open it manually. If sign-in still fails, add an `Authorization: Bearer <APIFY_TOKEN>` header to the `apify` server in `~/.qwen/settings.json` under `mcpServers` - see [Bearer token authentication](/integrations/mcp) for the shape.
- **Qwen Code:** copy the authorization URL from the terminal and open it manually. If sign-in still fails, add an `Authorization: Bearer <APIFY_TOKEN>` header to the `apify` server in `~/.qwen/settings.json` under `mcpServers` - see [Client configuration](/integrations/mcp#client-configuration) for the shape.


## Limitations

- In Qwen Code, the plugin's role guide ships as `qoder.md`. Qwen Code auto-loads a root `system-prompt.md` as context, so this file is not injected automatically. The `apify` agent and skills still work; invoke the agent to get the routing behavior.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

"this file" reads as system-prompt.md, the file named right before it.

Suggested change
- In Qwen Code, the plugin's role guide ships as `qoder.md`. Qwen Code auto-loads a root `system-prompt.md` as context, so this file is not injected automatically. The `apify` agent and skills still work; invoke the agent to get the routing behavior.
- In Qwen Code, the plugin's role guide ships as `qoder.md`. Qwen Code auto-loads a root `system-prompt.md` as context, so `qoder.md` is not injected automatically. The `apify` agent and skills still work; invoke the agent to get the routing behavior.

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.

4 participants