Бюджет: 10000 UAH Термін: 10 днів
Привітання ! Я хотів би мати більш глибоку розмову з вами про ваш проект в прямих повідомленнях. Чекаємо на Вашу повідомлення.
Бюджет: 10000 UAH Термін: 10 днів
Привітання ! Я хотів би мати більш глибоку розмову з вами про ваш проект в прямих повідомленнях. Чекаємо на Вашу повідомлення.
Technical task: Program for automatic video assembly (local, for personal use) Briefly Program in Python, runs on my PC (Windows). Creates faceless videos in the format of "voiceover + changing visuals from photos and clips" — like historical documentaries on YouTube (references will be attached separately). I input a topic → the program writes a script, voices it, selects video/photos for each piece of text from free archives, assembles → outputs a ready MP4. For me only. No website, no users, no sales. Role division (important to understand) Claude (Anthropic API) — "brain": writes the script, divides it into scenes, selects the best frame by meaning. Works only with text and images. Code (ffmpeg/moviepy) — "hands": searches and downloads files from archives, cuts, glues, overlays sound, zooms, transitions, exports MP4. Claude does NOT edit video files — that’s done by the code. How it works (step by step) 1. Input. Simple window: I enter the topic of the video, choose a voice from the list (the list of voices is pulled from ElevenLabs via API). I click "Create". The second mode — insert a ready script. 2. Script. Claude writes a script on the topic of the specified length. 3. Scene breakdown. Claude divides the script into meaningful scenes (length by meaning, not fixed) and returns for each: scene text; type of visual: video or photo; search query in two formats at once (Claude provides both in one response, no extra queries or costs): expanded phrase — for stocks (Pexels/Pixabay), e.g. "18th century royal portrait, dramatic turning point"; brief keywords/names — for archives (Wikimedia, LoC, Archive.org, Europeana), e.g. "Marie Antoinette portrait". The code takes the appropriate format for each source. Claude generates the query based on the MEANING of the piece and the context of the entire video — even for abstract pieces without a clear object. There are no empty pieces "without a query"; highlight: true/false + importance rating 1-10 (for intro teaser). Meaningful scene ≠ frame. Claude divides the text by MEANING (so that the query is meaningful). The code then cuts this into visual frames of 4-6 seconds, adjusting the timing to the voiceover: short scene (≤6 sec) → 1 frame; long scene (e.g. 12 sec) → 2-3 frames of 4-6 sec each, with each — DIFFERENT, but close in meaning visual (same topic, different angles/frames), so that the thought does not hang on one static picture. The 4-6 sec rule applies to the frame, not to the meaningful breakdown — they are at different levels and do not conflict. 4. Voiceover. Text → ElevenLabs API with the selected voice → audio. The video sequence is cut to the length of the audio of each scene. 5. Frame selection (key process, see section below). 6. Assembly via ffmpeg/moviepy: clips/photos according to the timing of the voiceover, photos with zoom (Ken Burns effect), simple transitions, voice on top. Output: MP4 1920×1080. Frame selection (how video/photo is chosen for the scene) Search across all sources at once by the scene query. For each source, the appropriate query format is taken (see breakdown above): for archives — brief terms/names, for stocks — expanded phrase. The goal is to hit the topic, not a random picture. The code selects the top-5 candidates from all results by scores (scorer, see rules below). For video the code extracts 2-3 still frames from different points of the clip (beginning/middle/end) — so that Claude evaluates the clip by frames. Claude selects the best from 5 candidates by meaning (is the needed content realistically on the frame, does it fit the mood of the scene). Limit of 3 steps per scene: found a suitable one — stop; if nothing fits after checking — the code takes a more general photo by a simplified query (it will definitely be found) with enhanced movement. ALL frames are checked (the price difference is negligible, and quality is more important). Candidate selection rules (scorer) — to take good, not junk Relevance to the query (position in the source output) — main weight. Not used before — checked against a local database of used ones, do not repeat clips in my videos. Format — horizontal 16:9 prioritized. Quality — DIFFERENT for the type of source: modern stocks (Pexels/Pixabay) — filter out low quality, require HD; historical archives — low threshold/off, DO NOT lose film and documentary frames, even low resolution (their value is in the material itself, not in clarity). Clip length (for video) — is it enough to cover the scene. Diversity — do not take many identical frames in a row from one source, mix sources (so that the video sequence is diverse, not from one archive). Uniqueness (fewer matches with others' videos) Randomization of output (random from top-N, not always the first), search depth, local database of used ones (do not repeat clips in my videos), optionally — light processing of the clip (crop/mirror/speed). When unused frames for the query run out: the code first expands the search (other sources, deeper into the output, rephrasing the query). If that is exhausted — allows repeating previously used ones by priority: first those taken long ago (not in the latest videos), with mandatory processing for visual distinction. The video should not stall due to lack of material. Sources (all free, with API) Modern video + photo: Pexels, Pixabay. Historical / archival (public domain): Wikimedia Commons, Archive.org, Library of Congress, Europeana, NASA, Smithsonian Open Access, Flickr Commons, openverse. Each source is a separate module, easy to add a new one. The priority of sources depends on the topic (historical → archives first; modern → stocks first), configured in the settings. Only public domain / free licenses with the right to commercial use. No parsing of others' YouTube/sites, film clips, images "from Google". Video sequence rules Intro teaser (first 60 sec): a montage of the most striking frames from the entire video (scenes with the highest importance rating, where there is video) under a separate text-introduction from Claude ("in this video you will learn..."), frames without explanations — as intrigue. Then transition and main part. Alternation: video insert at least every ~6 sec, cannot have many photos in a row. Video share: at least ~40% of the time — live clips, the rest — photos with movement. Frame length: 4-6 sec. Do not flicker, do not hold static for long. For purely historical topics, where there is no video — photos with enhanced movement (zoom + panorama). Options (on/off in settings) Only photos — video purely from photos, without clips. Each photo must have movement (zoom/pan) — no static "dead" frames even in this mode. No voiceover — video is assembled by text without generating voice (the code does not call ElevenLabs). Otherwise — voiceover is done automatically. Atmospheric overlay (light leaks / dust & bokeh particles / film grain) — a semi-transparent layer with floating particles/light/easy fog over the video sequence, to make the frames look alive. Set 5-8 ready overlays to choose from; adjust transparency with a slider (0-100%); can also be applied to already finished video separately. Free overlays: Pexels, Pixabay, Mixkit, Videezy. Subtitles (embed or separate .srt). Clip processing for uniqueness. Resolution/format, video length, video share, search depth, number of candidates (default 5). LLM savings (set by default) Models — Claude (Anthropic API), separately for two tasks, parameter in settings: frame checking/selection (frequent operation) → Claude Haiku — cheap, analyzes still frames (images), for "suitable/not suitable" evaluation this is enough; script generation and breakdown (rare operation) → Claude Sonnet — for text quality. One API key for Claude gives access to all models (Haiku, Sonnet, etc.) — separate subscriptions are not needed. The model for each task can be changed in settings, without editing code. If no model is selected — the default model is used (does not break). Images are sent as previews of medium resolution (~512-768px on the long side) — sufficient for Claude to confidently recognize the content and assess its relevance to the scene. Do not send originals in full resolution (extra tokens), but also DO NOT reduce to the point of losing details — priority is on accuracy of assessment, savings are secondary. Preview resolution is a parameter in settings. Number of candidates per frame — parameter (default 5). Disk space management After assembly, all intermediate files (downloaded clips, temporary pieces) are automatically deleted — only the finished MP4 remains. The used database (list of clip IDs) is NOT included in auto-cleaning — this is a small text file, stored permanently. Only heavy media files are cleaned, not usage history. Cache limit (parameter, e.g. 5 GB): when exceeded, the oldest files are deleted. Folders for finished videos and temporary files are set in settings. Display of occupied space + "clear cache" button. Technical requirements Python. Modular structure (sources and LLM — interchangeable modules, to easily replace/add). All API keys are entered through the interface (section "Settings"), stored in the config, not in the code. Simple window (GUI — Tkinter/PyQt to choose), launched by double-click. All work is done through the interface (buttons, fields, sliders), without editing code. README (installation, keys, launch), clear logs, comments in the code. Interface (menu and control) Program with a side menu. Sections: New video — mode "generate by topic" OR "insert your script" (switch), voice selection, length, options, "Create" button. During assembly — progress screen by steps (script → voiceover → frame selection → assembly). My videos — list of finished videos. Voices — list of voices from ElevenLabs. Sources — list of all connected archives: shows added ones, can enable/disable each, set priority, and add your new source if you have its API key. Here also — source keys where registration is needed (Pexels, Pixabay, Europeana). Overlays — selection of atmospheric overlay and transparency. Settings — section "API keys" (Claude, ElevenLabs, etc. in one place), selection of Claude models, folders, resolution/format, cache limit. Clear cache — free up space. All keys and settings are entered through the interface, not through files/code. Result delivery All source code in open form (without obfuscation) + assembled working version. I can run it myself from the sources according to the instructions. The code is clean and understandable, so any other programmer can continue. All rights to the code after payment — mine. What I provide API keys (Claude, ElevenLabs, and sources where registration is needed). I pay for the paid ones myself. Examples of video references and topics for tests. Acceptance (ready if) I run → window → I enter the topic, choose a voice → "Create" → I receive a ready MP4. Video sequence according to the meaning of the text, alternation of video/photos, intro teaser 60 sec, voiceover on top. Works with at least 6 free sources, search across all at once + candidate selection. Frame selection: top-5 candidates from the code → selection of the best through Claude (for video — by still frames), limit 3 steps. Quality threshold depends on the source (archives — do not lose film frames).
Коротко Потрібна програма на Python, яка запускається у мене на ПК (Windows) і робить faceless-відео формату «закадровий голос + змінюваний відеоряд з фото та кліпів» — як історичні документалки на YouTube (приклад прикріплю окремо). Я вводжу тему → програма пише сценарій, озвучує, підбирає під кожен шматок тексту відео/фото з безкоштовних архівів, склеює → видає готовий MP4. Тільки для мене. Без сайту, без користувачів, без продажу. Один користувач — я. Як працює (по кроках) 1. Введення. Відкривається просте вікно. Я вводжу тему ролика і вибираю голос озвучення зі списку (**список голосів підтягується автоматично з ElevenLabs по API** — доступні на моєму акаунті). Натискаю «Створити». (Другий режим: вставити готовий сценарій замість генерації.) 2. Сценарій. Програма через LLM API (OpenAI/Anthropic, ключ в налаштуваннях) пише сценарій за темою, заданої довжини. 3. Розбивка на сцени. LLM ділить сценарій на сцени і для кожної повертає: текст сцени; тип візуалу: відео або фото; пошуковий запит (розгорнута фраза, що повинно бути в кадрі); позначку «highlight» + оцінку важливості 1-10 (для інтро, див. нижче). 4. Озвучення. Текст відправляється в ElevenLabs API обраним голосом → аудіо. Під довжину аудіо кожної сцени обрізається відеоряд. 5. Підбір відео/фото — з безкоштовних джерел по API (див. список нижче). Під кожне джерело запит формується по-своєму (для точності). Якщо в одному не знайшлося — пробує наступний. 6. Перевірка (максимум 3 кроки на сцену). Крок 1: програма бере перший знайдений варіант (відео/фото) за запитом. Крок 2: відправляє кадр в LLM — «підходить під сцену?». Підходить → стоп. Крок 3 (якщо не підходить): програма переключається на пошук фото (по точному запиту фото знайти простіше, ніж відео, — так гарантовано потрапляємо по сенсу) і бере його з посиленим рухом (зум + панорама). Більше 3 кроків на одну сцену не робити — це економить бюджет LLM і гарантує, що кадр в тему. 7. Збірка через ffmpeg/moviepy: кліпи і фото під таймінг озвучення, фото оживляються зумом (ефект Кена Бернса), голос поверх, прості переходи. Вихід: MP4 1920×1080. Правила відеоряду (важливо — за це відповідає програма) Перші 60 секунд — інтро-тизер: нарізка найефектніших кліпів з усього ролика (беруться сцени з вищою оцінкою важливості, де є відео) під окремий текст-вступлення від LLM («в цьому відео ви дізнаєтеся…»), кадри без пояснень, як інтрига. Потім перехід і основна частина. Чередування: відео-вставка мінімум кожні ~6 секунд, не можна багато фото підряд. Доля відео: не менше ~40% часу — живі кліпи, решта — фото з зумом. Довжина кадру: 4-6 секунд (і фото, і відео). Не мельтешити, не тримати статику довго. Для чисто історичних тем, де відео немає — фото з посиленим рухом (зум + панорама). Джерела (всі безкоштовні, з API) Сучасне відео+фото: Pexels, Pixabay. Історичне / архівне (public domain): Wikimedia Commons, Archive.org,Library of Congress, Europeana, NASA, Smithsonian Open Access,Flickr Commons, openverse. Кожне джерело — окремий модуль, легко додати новий. Використовувати тільки public domain / вільні ліцензії з правом комерційного використання. Жодного парсингу чужих YouTube/сайтів, шматків фільмів, картинок «з гугла».Унікальність підбору Щоб відео не співпадали з чужими: брати випадковий кліп з топ-видачі (не перший), вести базу вже використаних (не повторювати), опціонально — легка обробка кліпа (кроп/дзеркало/ швидкість). Опції (вкл/викл в налаштуваннях) Тільки фото — якщо включено, відео збирається ЧИСТО з фото, без відео-кліпів. Кожне фото ОБОВ'ЯЗКОВО з рухом (зум і/або панорама, ефект Кена Бернса) — навіть в цьому режимі не повинно бути статичних «мертвих» кадрів, мінімальна динаміка завжди. Якщо вимкнено — стандартний режим (фото + відео-кліпи з чергуванням, як в правилах відеоряду). Без озвучення — якщо включено, відео збирається по тексту БЕЗ генерації голосу: код НЕ звертається до ElevenLabs і не накладає озвучення (відеоряд підбирається по тексту сцен, таймінг кадрів — по правилам/параметрам, без прив'язки до аудіо). Якщо вимкнено — автоматично робить озвучення по тексту через ElevenLabs, як зазвичай. Атмосферний оверлей — якщо включено, поверх всього відеоряду накладається напівпрозорий шар з плаваючими частинками / пилом / світними боке / легким туманом (particle / dust / bokeh / fog overlay, режим накладення screen/add), щоб кадри виглядали живими і кінематографічними. При установці програми кладеться набір з 5-8 популярних оверлеїв (частинки, пил,copyбоке, туман, легке кінематографічне «зерно») в локальну папку — я вибираю потрібний зі списку. Регульована прозорість/яскравість оверлея (повзунок 0-100%), щоб ефект не був ніcopyзанадто тьмяним, ні занадто вираженим — я сам налаштовую силу. Бажано, щоб оверлей можна було накладати і на ВЖЕ готове відео окремоcopy(постобробка: взяти готовий MP4 → вибрати оверлей → задати прозорість → зберегти), а не тільки при зборці. Звідки взяти оверлеї для комплектації (вільна ліцензія): Pexels, Pixabay (запитиcopy«particle overlay», «bokeh overlay», «dust overlay», «light leaks», «film grain»), Mixkit, Videezy. Виконавець підбирає 5-8 штук і кладе в папку програми. Субтитри (вшити або окремим .srt). Обробка кліпів для унікальності. Роздільна здатність/формат, довжина відео, доля відео, глибина пошуку.Технічні вимоги Python. Модульна структура (джерела і LLM — через змінні модулі, щоб легко замінити або додати). Всі API-ключі — в файлі налаштувань, не в коді. Просте вікно (GUI на вибір виконавця — Tkinter/PyQt), запуск подвійним кліком. README з інструкцією, зрозумілі логи, коментарі в коді.Що даю я API-ключі (ElevenLabs, LLM, де потрібна реєстрація — оформлю). Платне оплачую сам. Приклади відео-референсів (прикріплю) і приклади тем для тестів.Приймання (готово, якщо) Запускаю → вікно → ввожу тему, вибираю голос → «Створити» → отримую готовий MP4. Відеоряд по сенсу тексту, чергування відео/фото, інтро-тизер 60 сек, озвучення поверх. Працює мінімум з 6 безкоштовними джерелами, з fallback між ними. Перевірка кадрів через LLM: макс. 3 кроки на сцену (знайшли → LLM перевірив → якщо немає, фото з рухом як вірняк). Унікальність: рандомізація + база використаного. Тільки легальні джерела. Є README, запускається з нуля.Передача результату Весь вихідний код — в відкритому вигляді (всі файли), без обфускації + зібрана робоча версія. Я можу сам запустити з вихідників за інструкцією (README: установка, ключі, запуск). Код повинен бути чистим, прокоментованим і зрозумілим, щоб **будь-який інший програміст міг продовжити роботу** над ним, якщо знадобиться (не прив'язка до автора). **Вся повсякденна робота — через інтерфейс (кнопки, поля, повзунки, випадаючі списки), БЕЗ необхідності торкатися коду.** Усі налаштування (тема, голос, опції, оверлей, папки, довжина, формати) змінюються у вікні програми, а не редагуванням файлів. Код на руках — тільки як моя власність і страховка, а не як спосіб управління програмою. Усі права на код після оплати — мої.Управління місцем на диску (важливо) Програма не повинна забивати диск. Реалізувати: Після зборки відео всі проміжні файли (завантажені кліпи, тимчасові шматки, аудіо-нарізки) автоматично видаляються — на диску залишається тільки готовий MP4. Ліміт на кеш (параметр в налаштуваннях, напр. 5 ГБ): при перевищенні старі завантажені файли видаляються автоматично (спочатку найстаріші). Папку для готових відео і для тимчасових файлів я задаю в налаштуваннях. Показувати, скільки місця зайнято, і кнопка «очистити кеш» вручну.Прошу вказати в відгуку Приклади схожих робіт (ffmpeg/moviepy, робота зі стоковими/архівними API, ElevenLabs/LLM). Пропозиція по GUI. Використовує чи рішення базу даних (яку і навіщо) — або вистачає локальних файлів. Термін і вартість.
Розробляємо real-time інтеграцію з зовнішнім сервісом Тренер. Відправляємо структуровані знімки стану, отримуємо рекомендації і показуємо їх спливаючим вікном. Завдання — стабільна і повна передача даних для коректної роботи Тренера. Шукаємо розробника для ланцюга: обробка даних → HTTP-комунікація → overlay. Потрібні люди з такими навичками Python добре, Java база, API HTTP/JSON-APIs Проект готовий на 90%, але є деякі несоответствия
Необхідно розробити локальний Python-скрипт для автоматичного заповнення Google Таблиці даними з внутрішнього сервісу компанії. Основна логіка: 1. Підключитися до Google Таблиці. 2. Знайти рядки, де заповнений ID, але відсутні два цільових значення. 3. Сформувати посилання за шаблоном: https://internal-service.example/item/{ID} 4. Отримати два значення (через API, якщо він існує, інакше через Playwright). 5. Записати значення назад у Google Таблицю. 6. Позначити рядок як оброблений. 7. Продовжити обробку наступних рядків. Вимоги: • Python • Google Sheets API • Пріоритет використання офіційного API • При відсутності API — Playwright • Без OCR, розпізнавання екрана та координат миші • Конфіденційні дані не повинні потрапляти в логи • Конфігурація через .env • Тестовий режим (без запису в таблицю) • Не обробляти вже заповнені рядки • Пакетна запис змін у Google Sheets • Коректна обробка помилок і повторних спроб Необхідно надати: - вихідний код; - requirements.txt; - приклад .env.example; - інструкцію по установці; - інструкцію по запуску; - короткий опис архітектури. Перед початком реалізації прошу: 1. Запропонувати архітектуру. 2. Перелічити необхідні доступи. 3. Задати уточнюючі питання. 4. Вказати вартість, терміни та орієнтовну кількість годин.
В рамках підвищення рівня кібербезпеки нашої інфраструктури нам необхідно відмовитися від практики зберігання «вічних» і статичних API-ключів, паролів і токенів інтеграцій у конфігураційних файлах (.env, appsettings.json, config.yaml) наших мікросервісів. Бізнес-мета: Створити єдину захищену точку зберігання конфіденційних даних (секретів) з механізмом їх автоматичного оновлення (ротації) у зовнішніх системах за розкладом. Інші наші сервіси будуть запитувати актуальні токени «на льоту» через API, що зведе до мінімуму шкоду в разі компрометації будь-якого з компонентів системи.Модель безпеки та шифрування (Crypto Core) У базі даних жоден секрет не повинен зберігатися в відкритому вигляді. При старті програми в змінні середовища передається Майстер-ключ (Master Key). Якщо ключ відсутній або має невалідну довжину, сервіс повинен падати на етапі ініціалізації з зрозумілою помилкою в логах. Кожен секрет шифрується перед записом у БД з використанням цього Майстер-ключа. При запиті — розшифровується в пам'яті і віддається в тілі відповіді.Аудит-логування (Audit Trail) Будь-яка дія з секретами (створення, читання сервісом, успішна або неуспішна ротація) повинна записуватися в окремий лог-файл audit.log (або окрему таблицю в БД). Суворе табу: В аудит-лог категорично заборонено записувати самі значення секретів (ні в відкритому, ні в зашифрованому вигляді).