universal-content-intake
Download any link (video, document, images, article, web page) with bin/uci for a user, and, when they want it, set up and operate the optional automatic YouTube monitoring (first-run choices, guided setup, status, creators, schedule).
Source facts
- Repository
- YIAN6557/universal-content-intake
- Last source activity
- October 9, 2026 at 05:18
- Detected SKILL.md language
- English
- Stars
- 275
- Forks
- 20
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- universal-content-intake
- description
- Download any link (video, document, images, article, web page) with bin/uci for a user, and, when they want it, set up and operate the optional automatic YouTube monitoring (first-run choices, guided setup, status, creators, schedule).
# Working with Universal Content Intake for a user
The system has two layers:
- **Downloading (the main feature):** `bin/uci <link>`. It handles videos,
documents, images, articles and whole web pages.
- **Automatic monitoring (optional):** YouTube creators are watched; rising
videos are downloaded, translated and subtitled automatically.
## First run: ask the two questions
Before anything else works, the user must answer two questions. You cannot
answer them for the user, and the terminal prompt does not reach you. If a
`bin/uci` command prints "首次使用需要先做选择", ask the user both questions in
their language, then record the answers:
1. Turn on automatic monitoring? (on / off). Explain what it does, that it
needs a Google account, and that setup takes about 30–60 minutes.
2. When they download a video themselves, translate it and burn in Simplified
Chinese subtitles? (on / off / ask every time). This is independent of
question 1. Monitored videos always get subtitles.
```bash
bin/uci settings --monitoring on|off --subtitles on|off|ask
```
Then run `bin/uci setup` and continue with the setup loop below. The choices
can be changed later with the same command. Turning monitoring off stops the
local worker and pauses the cloud; nothing is deleted.
## Downloading a link
Pass the user's words along with the link, for example
`bin/uci "download the PDF at …"` or `bin/uci "下载这个视频 …"`. If the request
names a type, that downloader is used without probing. A bare link is
classified automatically.
- **Subtitles setting is "ask".** For a video, ask the user whether to
translate and burn in Chinese subtitles. Then pass `--zh` or `--no-zh`.
Without one of them the command stops, because it cannot ask on its own.
- **Other subtitle settings.** Pass `--zh` or `--no-zh` only when the user
wants an exception for this one video.
- **Type.** Add `--type video|pdf|document|image|images|article|webpage` when
the user was explicit but their wording is unusual.
- **Quality.** Add `--quality 720p|1440p|4k|highest` only on request; 1080p
is the default.
- **Destination.** Add `--to <folder>` when they name a destination.
Otherwise files go to the Downloads folder.
- **Check first.** `--dry-run` shows what a link would be treated as without
downloading.
If a type fails for a missing tool, run `bin/uci setup doctor` and follow its
fix line.
## Setup loop
The wizard `bin/uci setup` is the source of truth. It lists only the steps the
user's two choices need.
1. Run `bin/uci setup status --json` (or plain `bin/uci setup` to show the
user).
2. Take the first step with `"done": false`. The optional Gemini step may be
skipped when the user says so (`bin/uci setup skip gemini`).
3. If the step's `who` starts with `Agent`, run the commands in its `guide`.
Report failures with the wizard's message; do not improvise workarounds
that change cloud state.
4. If the step is human work, explain the `guide` lines in the user's language,
in short numbered steps, and wait for the user to say it is done. Then
re-run the status.
5. Finish with `bin/uci setup verify` and show the user its report.
## Hard rules
- **Never decide the two first-run choices yourself.** Ask the user.
- **Never type, paste or print secrets.** This covers the Queue API secret, the
Gemini key, the Anthropic key and the DeepSeek / Qwen translation key. The
wizard stores the Queue secret in the Keychain (Windows: Credential Manager)
and copies it to the clipboard (`bin/uci setup secret copy`). The user pastes
it into Script Properties. API keys are created by the user and pasted by
the user into `bin/uci setup translation key` or `bin/uci setup apikey …`.
- **Let the user choose the translation model.** When subtitles are on, Windows
needs an online model and macOS may use one instead of Apple Translation.
Offer DeepSeek (default) or Qwen, run `bin/uci setup translation use <name>`
and walk the user through the key steps it prints.
- **Leave Google sign-in and consent to the user.** That includes
`clasp login`, the Apps Script authorization dialog, the "unverified app"
screen, and enabling the Apps Script API at
https://script.google.com/home/usersettings.
- **Leave system prompts to the user.** On macOS that includes installing the
Xcode tools, translation language packs, folder access and notifications; on
Windows, winget installs that ask for confirmation.
- **On Windows the command is `bin\uci`.** Everything else is the same.
- **Steer the user to the right editor.** Open it with
`bin/uci setup cloud open` and have the user check that the project name at
the top left is "Universal Content Intake". Tell them never to click into or
type in the code area. If an editor run fails with a ReferenceError or
SyntaxError, the code was edited by accident: run
`bin/uci setup cloud push` and have them run `uciSetup` again.
- **Confirm the creator list before `bin/uci setup creators apply`.** Show the
table from `creators resolve`, including the advice column.
- **Write the editorial brief from the user's own words.** Ask what they want
and what they never want. Draft the brief in plain language, show it, and
only then run `bin/uci setup config brief --file …`.
- **Keep the user's choices private.** The creator list, editorial brief and
schedule belong to the user. Never commit them to this repository or put them
in issues.
- **Do not edit Config cells in the Sheet by hand.** Use
`bin/uci setup config set`, which validates values and keeps clocks stored as
text.
## Questions to ask in the monitoring preferences step
- Which timezone do you work in, and which hours of the creators' upload day
should count? These set `discovery_window_start` and `discovery_window_end`.
- When do you want the picks ready, and by when must the second one start?
These set `daily_selection_time` (at least 120 minutes after the window ends)
and `rank2_start_cutoff`.
- How many clips per day (0–2)? What is the maximum length in minutes?
- Which kinds of uploads should be dropped by title alone? The options are
PODCAST, KEYNOTE, QA, LIVESTREAM, REVIEW, FINANCE, TUTORIAL, GAMING,
NEWS_ROUNDUP and AD; anything subtler belongs in the brief.
- Where should finished videos go (`delivery_root`)?
## Operating afterwards
| User asks | Do |
|---|---|
| Download a link | `bin/uci "<their request> <link>"` (see above) |
| Change the two choices | ask them, then `bin/uci settings --monitoring … --subtitles …` |
| How is monitoring running? | `bin/uci status` (another day: `bin/uci status --day 2026-10-05`) |
| Are the download engines up to date? | `bin/uci engines` checks GitHub now and prints each update command. It never installs: show the user what is newer and run an update only when they ask. yt-dlp updates itself weekly. |
| Add or remove creators | `bin/uci setup creators resolve …` → confirm → `apply`; `enable`/`disable <channel id>` |
| Change times or limits | `bin/uci setup config show`, then `config set key=value …` |
| Change content direction | edit the brief with the user, then `config brief --file …` |
| Cloud code changed (after `git pull`) | `bin/uci setup cloud push` then `bin/uci setup cloud deploy` |
| Worker not running | `bin/uci setup launchagent status`; logs in `~/Library/Logs/Universal Content Intake/` |
Background on the architecture and the per-stage CLI is in
`docs/REFERENCE.md`; the human-readable walkthrough is `SETUP.md`.
View on GitHub