Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 - #3044
Conversation
…ans.md The pre-check rejected 7 CJK characters in the primary README. Those were platform names in a table; the prose is now English-only and the full Chinese version lives in README.zh_Hans.md, including the Bilibili 412 refusal and the Instagram caveat.
|
PR body is missing the 'What changed' section |
|
Thanks — all three were mine, and all three are fixed in the body above.
The package itself is unchanged and was never the problem — Lesson taken: the checker matches section headings literally, so I should have copied the template rather than improving on it. |
The failing run's only blocking error was pr_body_errors.txt; every package check passed. The body now uses the template headings verbatim and contains no CJK. No file changes — this commit exists only to fire the synchronize trigger.
The 2026-09-11 run failed in 'Wait for System Dependencies' after the 10-minute step timeout, before reaching any plugin check. No file changes.
|
Heads-up on the red check: the 2026-09-11 run did not fail on the plugin. It died in It never reached the package checks or the PR-body check, so nothing in this submission was actually evaluated. Taking your note about transient failures at face value, I have pushed an empty commit (no file changes) to fire |
|
It happened again on the re-run, same step, same 10-minute timeout: Both of this branch's runs today died there before reaching any plugin check, so the submission still has not been evaluated. Looking at the last 20 runs of this workflow, roughly half are failing and other branches hit it too, so this reads as runner flakiness rather than anything specific to this PR. I have stopped pushing empty commits — two is enough to establish it is not transient in the way a single retry fixes, and I would rather not add churn to your branch list. Please re-run it whenever your runners are healthy and I will respond to whatever the checks actually say. Nothing about the package or the PR body has changed since the last edit: |
Plugin Submission
Plugin information
dify/)Submission type
What changed
New plugin. One tool,
digest_url(url, format), that turns a Xiaohongshu (RedNote), Douyin, TikTok, YouTube or X link into text a workflow can use: transcript with timecodes, on-screen text, a description and OCR of every image, the caption and metadata, as Markdown or JSON.The plugin runs nothing locally. It calls the hosted LinkDigest REST API (
https://linkdigest.dev) with the user's own API key from the provider credential. Long media exceeds a single request, so the API answers 202 with a job id and the plugin polls it to completion (deadline 210 s; a 17-image RedNote note measures about 119 s end to end). Credential validation hits an authenticated endpoint that starts no digest, so validating a key spends nothing.What it does not do, stated in the README and in the tool's LLM-facing description: Bilibili is not supported (the service's address receives HTTP 412), Instagram is wired but not verified end to end, Facebook is out of scope.
Relative to #3026, which was closed because the pre-check found seven Chinese characters in the primary
README.md:README.mdis now English throughout and contains zero Chinese characters.README.zh_Hans.mdadded, carrying the full Chinese version, including the parts that are easiest to lose in a translation: the Bilibili refusal, the Instagram caveat, and the Facebook exclusion.tests/test_dify_readme_locale.py) fails if Chinese characters return to the primary README, if the localized file goes missing or stops being linked, or if those three caveats are dropped from the translation. It was verified to fail against the exact content Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 #3026 was closed for.Every other file in the package is byte-identical to #3026.
Risk level
Medium because the tool accepts a user-provided URL and sends it to an external service. The plugin itself fetches only
linkdigest.dev; it does not fetch the user's URL. The URL is validated server-side (http/https, 2048 characters maximum) before any fetch happens.Required checks
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.Stated precisely, because my checklist on #3026 claimed this and was wrong:
README.mdis 100% English, enforced by a test. Chinese prose lives inREADME.zh_Hans.md. Thezh_Hansvalues insidemanifest.yaml,provider/linkdigest.yamlandtools/digest_url.yamlare localized label and description fields keyed by locale, which is what those fields exist for. I am flagging them explicitly rather than letting the checkbox imply the package contains no Chinese text anywhere.Limitation, documented as the third check requires: I have not run this inside a Dify Community Edition or Dify Cloud instance. What was tested is in Local validation below. If the reviewer would like a run inside Dify before merging, say so and I will provide one.
Security and privacy notes
linkdigest.devonly (declared inmanifest.yaml), over HTTPS.PRIVACY.mdstates this.Authorization: Bearerheader, never logged, and not echoed in error messages.Local validation
tests/test_dify_plugin_honest.pyholds every platform claim in the manifest, provider, tool and both READMEs to the service's own coverage table, so the plugin cannot advertise a platform the service does not read.Reviewer notes
Single file:
jcaiagent7143-ui/linkdigest/linkdigest-0.1.0.difypkg. Source is public in the repository above underdify/, identical to the package contents.Resubmission of #3026. Apologies for the round trip on the section headings: I retitled "What changed" and "Local validation" in the previous body, which is why the checker reported them missing. They are verbatim now.
🤖 Generated with Claude Code
https://claude.ai/code/session_01DpGW9DbqX9bkgv4RTETBmV