内容路由器 · 素材该做成什么
mcpother official build verified dockerfile by the hub scanned给素材做 11 维内容画像,推荐跨媒介输出形态(PPT/信息图/短视频/漫画等 6 种)并给出可执行调度提示词
run it
on your own machines, one way per deploy method# once, as root:
docker build -t mcp-local/content-router:9856f95b8da795d916649e3d98e092078f16579a -f - 'https://github.com/savantcat/content-router.git#9856f95b8da795d916649e3d98e092078f16579a' <<'DOCKERFILE'
FROM python:3.12.8-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
RUN useradd --create-home app
USER app
EXPOSE 8000
CMD ["python", "server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"]
DOCKERFILE
#!/usr/bin/env bash
# content-router (cn.savantcat/content-router), recipe docker (worker, verified 2026-10-18 on v1.0.1, run r-20261018T114535Z-c2082ad9ed03).
# Generated by Hub for toolset "my-agent"; started by mcp-my-agent-content-router.service.
set -euo pipefail
export HOST=127.0.0.1 PORT=8101
exec docker run --rm --name mcp-my-agent-content-router -p 127.0.0.1:${PORT}:8000 mcp-local/content-router:9856f95b8da795d916649e3d98e092078f16579a
[Unit]
Description=MCP server content-router (toolset my-agent), generated by Hub
After=network-online.target docker.service
Wants=network-online.target
[Service]
Type=simple
User=mcp
Group=mcp
SupplementaryGroups=docker
EnvironmentFile=/etc/mcp/my-agent.env
Environment=HOME=/var/lib/mcp/content-router
WorkingDirectory=/var/lib/mcp/content-router
ExecStart=/opt/mcp/my-agent/bin/content-router.sh
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/mcp/content-router
[Install]
WantedBy=multi-user.target
docker build -t content-router -f - 'https://github.com/savantcat/content-router.git#9856f95b8da795d916649e3d98e092078f16579a' <<'DOCKERFILE' FROM python:3.12.8-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt RUN useradd --create-home app USER app EXPOSE 8000 CMD ["python", "server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"] DOCKERFILE docker run --rm -p 127.0.0.1:8101:8000 content-router
# Generated by Hub for toolset "my-agent" (2026-10-19T04:32:31+00:00).
# Each package server runs behind a stdio->HTTP bridge and listens on localhost only.
# cp .env.example .env # fill the ${VAR}s
# docker compose up -d && bash smoke.sh
# Remote servers are not here: clients reach them directly (see clients/).
name: mcp-my-agent
services:
content-router:
build:
context: https://github.com/savantcat/content-router.git#9856f95b8da795d916649e3d98e092078f16579a
dockerfile_inline: |
FROM python:3.12.8-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
RUN useradd --create-home app
USER app
EXPOSE 8000
CMD ["python", "server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"]
x-dockerfile: written by the hub (hub-llm:hub-coder@p6), checked by hub-llm:gpt-oss:120b@r2, not taken
from the repository
ports:
- 127.0.0.1:8101:8000
restart: unless-stopped
volumes:
npm-cache: {}
uv-cache: {}
# Generated by Hub for toolset "my-agent" (2026-10-19T04:32:31+00:00).
# kubectl create namespace mcp
# kubectl -n mcp create secret generic mcp-credentials --from-env-file=.env
# kubectl apply -f kubernetes.yaml
# Services are cluster-internal: <name>.mcp.svc.cluster.local:8000/mcp. Put an ingress
# with auth in front before exposing any of them.
apiVersion: v1
kind: Namespace
metadata:
name: mcp
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: content-router
namespace: mcp
labels: &id001
app: content-router
spec:
replicas: 1
selector:
matchLabels: *id001
template:
metadata:
labels: *id001
spec:
containers:
- name: content-router
image: CHANGE_ME
ports:
- containerPort: 8000
name: http
env: []
---
apiVersion: v1
kind: Service
metadata:
name: content-router
namespace: mcp
spec:
selector:
app: content-router
ports:
- port: 8000
targetPort: http
name: http
dockerfile
FROM python:3.12.8-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt RUN useradd --create-home app USER app EXPOSE 8000 CMD ["python", "server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"]
# Generated by Hub for toolset "my-agent" (2026-10-19T04:32:31+00:00).
# Credentials come from the Secret 'mcp-credentials' (kubectl create secret generic ... --from-env-file=.env).
# Each server under `servers` is one Deployment + Service; the keys after it configure
# upstream charts a worker verified.
servers:
content-router:
enabled: true
replicas: 1
port: 8000
path: /mcp
container:
name: content-router
image: CHANGE_ME
ports:
- containerPort: 8000
name: http
env: []
# helm install my-agent helm/my-agent -n mcp
dockerfile
FROM python:3.12.8-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt RUN useradd --create-home app USER app EXPOSE 8000 CMD ["python", "server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"]
Scanned github.com/savantcat/content-router at 9856f95b8da7 with [email protected][email protected] on 2026-10-18 before the build: 1 dependencies, 8 known vulnerabilities (4 high, 1 medium, 3 low), nothing in the code that looks malicious.
connect to it
copy what your client needs{
"mcpServers": {
"content-router": {
"command": "CHANGE_ME",
"args": []
}
}
}
#!/usr/bin/env bash # Registers every server with Claude Code (run once; `claude mcp list` to check). set -euo pipefail set -a; [ -f .env ] && source .env; set +a claude mcp add content-router -- CHANGE_ME
{
"mcpServers": {
"content-router": {
"command": "CHANGE_ME",
"args": []
}
}
}
{
"servers": {
"content-router": {
"type": "stdio",
"command": "CHANGE_ME",
"args": []
}
}
}
name: my-agent target: local servers: - hub: cn.savantcat/content-router
- no recipe for target 'local': fill the files by hand
tools · 5
analyze_contenttested给一段内容做 11 维画像,并推荐最适合的跨媒介输出形态(一次给全)。 适合「这篇到底该做成什么」这类问题。返回画像明细 + 排序推荐(含适配度% 与命中的判据),可直接当决策依据。 Args: text: 原文全文(中英文均可)。建议 200 字以上;过短画像不稳, 长文超过 8000 字会自动截断后画像。给一段内容做 11 维画像,并推荐最适合的跨媒介输出形态(一次给全)。 适合「这篇到底该做成什么」这类问题。返回画像明细 + 排序推荐(含适配度% 与命中的判据),可直接当决策依据。 Args: text: 原文全文(中英文均可)。建议 200 字以上;过短画像不稳, 长文超过 8000 字会自动截断后画像。
called 2026-10-18 · 13 ms · arguments from the schemapin 664634633f993983463b7790f6f63098fd95d34ae4a3dcc3a7d0b559a41d64a4get_dispatch_prompttested为指定输出形态生成「调度提示词」——一段可直接交给 Agent 执行的指令。 先 recommend_formats 挑形态,再用本工具取该形态的执行口令。 Args: text: 原文全文。 format_name: 目标形态,必须是 list_formats 里的名字之一: PPT演示文稿 / 信息图 / 60秒短视频脚本 / 漫画/视觉故事 / Newsletter / 结构化Skill封装为指定输出形态生成「调度提示词」——一段可直接交给 Agent 执行的指令。 先 recommend_formats 挑形态,再用本工具取该形态的执行口令。 Args: text: 原文全文。 format_name: 目标形态,必须是 list_formats 里的名字之一: PPT演示文稿 / 信息图 / 60秒短视频脚本 / 漫画/视觉故事 / Newsletter / 结构化Skill封装
called 2026-10-18 · 4 ms · arguments from the schemapin 5ea9a76dc44787b9e30fdc8146dd7bed9df5e5d0f6ad681f7f13c06965e42d5blist_formatstested列出 6 种跨媒介输出形态:名字、适合什么内容、对应工作流。 注意:这里都是**媒介发生改变**的形态(文字 → 图表/视频/漫画/PPT/技能)。 公众号版、小红书版这类**同媒介换平台**的改写不在本服务职责内。列出 6 种跨媒介输出形态:名字、适合什么内容、对应工作流。 注意:这里都是**媒介发生改变**的形态(文字 → 图表/视频/漫画/PPT/技能)。 公众号版、小红书版这类**同媒介换平台**的改写不在本服务职责内。
called 2026-10-18 · 6 ms · arguments from the schemapin 6a41e74be953dfbf09bd14ffdddd6860c729aec2c5c66cde5b90f4b79f4de8fcprofile_schematested列出 11 维内容画像的口径与取值范围(用于理解/修正画像结果)。列出 11 维内容画像的口径与取值范围(用于理解/修正画像结果)。
called 2026-10-18 · 5 ms · arguments from the schemapin d16da69b0400118b6cf0c84ec2598a95e5b99380b52cdbd7f87a2869415be255recommend_formatstested只出形态推荐表:按适配度排序,每个形态给出得分、适配度% 和命中理由。 需要画像明细时用 analyze_content。 Args: text: 原文全文。建议 200 字以上。只出形态推荐表:按适配度排序,每个形态给出得分、适配度% 和命中理由。 需要画像明细时用 analyze_content。 Args: text: 原文全文。建议 200 字以上。
called 2026-10-18 · 6 ms · arguments from the schemapin d2456789966ab875698f9524fbd0c9321f3765454368ac0979a1243eb6fa2274
runs · 3
the latest tests of this entry by the hub and its workers, newest first| date | worker | method | status | sandbox | reason |
|---|---|---|---|---|---|
| 2026-10-18 18:18 | local-mac-vm | baremetal | ok | —hub-targets | — |
| 2026-10-18 11:45 | local-mac-vm | dockermcp 2026-07-28 | ok5 tools | gvisor | — |
| 2026-10-17 13:38 | local-mac-vm | docker | failed | gvisor | docker: sandbox: docker build: ERROR: failed to build: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory |