Atlas / MCP servers / ttalkkaklab / social-flow

social-flowBLOCK

mcp/ttalkkaklab/social-flow

Claude Code plugin: a channel-based short-form/long-form social content pipeline — storyboard with adversarial quality gates, video production, HITL-approved publishing, and autonomous growth loops. Built-in MCP server, 46 tools.

Verdict
BLOCK
Grade
F
Trust score
58 /100
Exposed tools
1 0r · 1w · 0d
Transport
stdio
License
Apache-2.0
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/ttalkkaklab/social-flow/actions/workflows/check.yml) [](LICENSE) · Docs: English · 한국어

A Claude Code plugin that runs a channel-based short-form/long-form content pipeline — storyboard (plan only — nothing is generated) → per-platform video & text production → HITL-approved publishing — over a data/[channel]/episodes/[topic]/ directory tree.

A channel is one content brand you operate: one data/ directory per channel, with tone, voice, theme, and publish targets pinned in profile.md. Publish targets: Threads · Instagram (Reels) · Facebook Pages · YouTube (Shorts and long-form).

Before production, HITL offers 100% 이상, 50% 이상, 30% 이상 and 훅만 영상 (100%, at least 50%, at least 30% of new cuts, or the opening hook only), with model, resolution, audio setting, first-pass and retry-inclusive video costs and an explicit budget cap. The read-only cost comparison uses the same API price table and routing as production, including minimum billed clip lengths. It labels KRW conversion as an assumption and excludes image, voice, editing and tax costs. The choice contract persists approval and detects changed quotes. Existing recordings and shared outros retain their source.

Full-video image planning ships the tactile miniature style pack: five generated PNG references, a versioned manifest, and material, lighting, composition and content-review instructions. The prompt assembler returns actual reference-image arguments resolved from the installed plugin, so another machine does not need this episode's images. Use the references for appe

Read from source at commit 86a9da47d5bcOBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add social-flow-mcp-server --env ARK_API_KEY=${ARK_API_KEY} --env DATA_GO_KR_API_KEY=${DATA_GO_KR_API_KEY} --env ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY} --env FACEBOOK_PAGE_TOKEN_FILE=${FACEBOOK_PAGE_TOKEN_FILE} -- npx -y @zeans/[email protected]
claude-desktop
{
  "mcpServers": {
    "social-flow-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@zeans/[email protected]"
      ],
      "env": {
        "ARK_API_KEY": "${ARK_API_KEY}",
        "DATA_GO_KR_API_KEY": "${DATA_GO_KR_API_KEY}",
        "ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}",
        "FACEBOOK_PAGE_TOKEN_FILE": "${FACEBOOK_PAGE_TOKEN_FILE}"
      }
    }
  }
}
03

Exposed tools (1)

0 read · 1 write · 0 destructive.

ToolRiskDescription
threads_draft_createwriteStore a Threads growth draft before review. Returns draftId and bodyHash (SHA-256 of NFC, LF, trimmed body + selfReply). Edits require a new draft and reviews. No public posting.
04

Trust audit

BLOCKgrade F · trust 58/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (12 observation(s))
Network
declared (10 observation(s))
Shell
declared (4 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
skills/setup-instagram/references/setup-playbook.md:20
below is written against it. Without ego lite, stop and tell the user; SKILL.md
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
skills/setup-threads/references/setup-playbook.md:22
below is written against it. Without ego lite, stop and tell the user; SKILL.md
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
skills/setup-youtube/references/setup-playbook.md:20
below is written against it. Without ego lite, stop and tell the user; SKILL.md
Why it matters. asks the agent to act without the user's knowledge
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/test/capability-portal.test.mjs:23
const secret = 'tks_test_never_print_this_key';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/test/portal-images.test.mjs:21
writeFileSync(credFile, JSON.stringify({ apiUrl: 'https://portal.test', workspace: 'lab', apiKey: 'tks_test_image_upload', holder: 'test@local' }));
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/test/portal-units.test.mjs:10
writeFileSync(join(root,'test','ttalkkakstory.json'),JSON.stringify({apiUrl:'https://portal.test',workspace:'lab',apiKey:'tks_0123456789abcdefghijklmnopqrstuvwxyzABCDEF'}));
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
server/test/slide-legibility.test.mjs:31
const mutant=t=>new Function('return ('+groupTextRows.toString().replace('*.5','*'+t)+')')();
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tools/buzz-workflows/test_gates.py:252
exec(compile(source, '<installed watcher hook>', 'exec'), namespace)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
docs/research/2026-08-29-motion-slide-lane/bench/bench.mjs:26
hashes.push(createHash('md5').update(readFileSync(f)).digest('hex').slice(0, 8));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/shoot-console/build-app.sh:32
REC_SRC="../../skills/ingest/references/record.sh"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
server/dist/elevenlabs-client.js:1
import { authorizeSpeed } from '../../skills/produce/references/tts-speed-policy.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
server/dist/portal-artifacts.js:80
const pricesFile = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../skills/autoproduce/references/prices.tsv');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
server/dist/supertonic-client.js:1
import { authorizeSpeed } from '../../skills/produce/references/tts-speed-policy.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
server/dist/threads-gate.js:153
const checker = resolve(dirname(fileURLToPath(import.meta.url)), '../../skills/platform-guide/references/check-style.py');
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:694
| `MLX_SERVE_URL` | mlx_* | `http://127.0.0.1:11234` | MLX Core / mlx-serve HTTP base. This plugin never launches the app; a down server fails closed |
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/api-reference/index.en.html:152
<tr><td><code>MLX_SERVE_URL</code><br>(default <code>http://127.0.0.1:11234</code>)</td><td><code>mlx_*</code></td><td>Loopback mlx-serve. This plugin never launches the app; a down server fails close
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/api-reference/index.html:152
<tr><td><code>MLX_SERVE_URL</code><br>(기본 <code>http://127.0.0.1:11234</code>)</td><td><code>mlx_*</code></td><td>루프백 mlx-serve. 이 플러그인은 앱을 띄우지 않고, 서버가 꺼져 있으면 닫힌다. <code>brew install --cask mlx-core</
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/api-reference/tool-audit.en.html:346
<tr><td><code>mlx_image_generate</code> · <code>mlx_image_edit</code> · <code>mlx_tts_generate</code> · <code>mlx_music_generate</code> · <code>mlx_video_generate</code> · <code>mlx_3d_generate</code>
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/api-reference/tool-audit.html:346
<tr><td><code>mlx_image_generate</code> · <code>mlx_image_edit</code> · <code>mlx_tts_generate</code> · <code>mlx_music_generate</code> · <code>mlx_video_generate</code> · <code>mlx_3d_generate</code>
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
docs/research/2026-09-04-rendered-object-slide/stage-portrait.uri:1
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAAHgCAYAAABU/4NXAAD36ElEQVR42uz93XIry5IkjEUUOWaSnkJmMtOd3kYy+y708HqOrzfLdVGVmfHjkZkFgGvt0z1nZvciQRAECaSXh4eHh/5//4//9/9HD8VxHDj0/vc4cIzbZNzWb5fjOPAVPm
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
docs/research/2026-09-04-rendered-object-slide/stage-wide.uri:1
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAEOCAYAAABRmsRnAADcaUlEQVR42u39W5IrzZKliamGRGeWFDkFPlA4Ij60SPfsOYrKYhcFiw9wN9PLUjVzBxA79n/OzvxPRAAOhwNw+Gdr6U3/z//9//1/qCpUVfxPIbfZn/P+L77d+P3rvO3LP5
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
skills/storyboard/references/character-act-template.html:83
background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABrCAYAAAArd+E9AAAGDUlEQVR42u2c3W6jOhSFtykvcd7/ISr1Vapc9aoK0ygkEAw261wMRMaxwQYbSKZIURjiDHxea//YrcoA/Ed/D3Qv0t5dr4V4d/1s7PzhGmPsfjFx+c
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
skills/storyboard/references/character-act-template.html:84
html.wide body::before{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGsAAAA8CAYAAABhNERDAAAEe0lEQVR42u2ZzW6jMBDHx4m777Dv/1A9pVKlVjm0h0gpTcDYs5c667gY/DW2aRnJwmBCYH7znzGGIeJf+G9Yq
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
skills/storyboard/references/kinetic-type-template.html:82
background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABrCAYAAAArd+E9AAAGDUlEQVR42u2c3W6jOhSFtykvcd7/ISr1Vapc9aoK0ygkEAw261wMRMaxwQYbSKZIURjiDHxea//YrcoA/Ed/D3Qv0t5dr4V4d/1s7PzhGmPsfjFx+c
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
server/package.json
@google/genai, @modelcontextprotocol/sdk, openai, zod, @types/node, esbuild, typescript
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 86a9da47d5bcfull audit observations/trust-audit/mcp-server/ttalkkaklab__social-flow.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1286a9da47d5bcBLOCKF58first audit
06

Questions

What is the social-flow MCP server?

Claude Code plugin: a channel-based short-form/long-form social content pipeline — storyboard with adversarial quality gates, video production, HITL-approved publishing, and autonomous growth loops. Built-in MCP server, 46 tools.

What tools does social-flow expose?

1 in total: 0 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is social-flow safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (58/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does social-flow need?

It reads ARK_API_KEY, DATA_GO_KR_API_KEY, ELEVENLABS_API_KEY, FACEBOOK_PAGE_TOKEN_FILE, GEMINI_API_KEY, GOOGLE_API_KEY, INSTAGRAM_TOKEN_FILE, MEDIA_UPLOAD_API_KEY, MELEON_MEDIA_API_KEY, MLX_SERVE_API_KEY, NAVER_CLIENT_SECRET and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does social-flow run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @zeans/social-flow-mcp-server at 0.111.1.

How current is this page?

The grade is for one exact copy of the source (86a9da47d5bc), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement