{"id":22068424,"url":"https://github.com/zibojia/COCOCO","last_synced_at":"2025-07-24T06:31:14.445Z","repository":{"id":247028169,"uuid":"822621769","full_name":"zibojia/COCOCO","owner":"zibojia","description":"Video-Inpaint-Anything: This is the inference code for our paper CoCoCo: Improving Text-Guided Video Inpainting for Better Consistency, Controllability and Compatibility.","archived":false,"fork":false,"pushed_at":"2024-09-24T09:51:52.000Z","size":47947,"stargazers_count":291,"open_issues_count":11,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-30T20:05:54.664Z","etag":null,"topics":["cococo","diffusion","inpainting","pytorch","sam2","segment","segment-anything","text-guided","text-guided-video-inpainting","video-inpainting","video-inpainting-with-prompt","video-sam2-inpaint"],"latest_commit_sha":null,"homepage":"https://zibojia.github.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zibojia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-01T13:40:42.000Z","updated_at":"2024-11-29T02:57:22.000Z","dependencies_parsed_at":"2024-07-12T06:49:25.731Z","dependency_job_id":"55e7597e-b486-4a08-9129-6497c232a766","html_url":"https://github.com/zibojia/COCOCO","commit_stats":null,"previous_names":["zibojia/cococo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zibojia/COCOCO","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zibojia%2FCOCOCO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zibojia%2FCOCOCO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zibojia%2FCOCOCO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zibojia%2FCOCOCO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zibojia","download_url":"https://codeload.github.com/zibojia/COCOCO/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zibojia%2FCOCOCO/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266802637,"owners_count":23986384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cococo","diffusion","inpainting","pytorch","sam2","segment","segment-anything","text-guided","text-guided-video-inpainting","video-inpainting","video-inpainting-with-prompt","video-sam2-inpaint"],"created_at":"2024-11-30T20:04:01.352Z","updated_at":"2025-07-24T06:31:11.961Z","avatar_url":"https://github.com/zibojia.png","language":"Python","funding_links":[],"categories":["Paper List"],"sub_categories":["Follow-up Papers"],"readme":"# CoCoCo: Improving Text-Guided Video Inpainting for Better Consistency, Controllability and Compatibility\n\u003ca href='https://cococozibojia.github.io'\u003e\u003cimg src='https://img.shields.io/badge/Project-Page-Green'\u003e\u003c/a\u003e \u003ca href='https://arxiv.org/pdf/2403.12035'\u003e\u003cimg src='https://img.shields.io/badge/Paper-arXiv-red'\u003e\u003c/a\u003e\n\n\n**[Bojia Zi\u003csup\u003e1\u003c/sup\u003e](https://scholar.google.fi/citations?user=QrMKIkEAAAAJ\u0026hl=en), [Shihao Zhao\u003csup\u003e2\u003c/sup\u003e](https://scholar.google.com/citations?user=dNQiLDQAAAAJ\u0026hl=en), [Xianbiao Qi\u003csup\u003e*5\u003c/sup\u003e](https://scholar.google.com/citations?user=odjSydQAAAAJ\u0026hl=en), [Jianan Wang\u003csup\u003e4\u003c/sup\u003e](https://scholar.google.com/citations?user=mt5mvZ8AAAAJ\u0026hl=en), [Yukai Shi\u003csup\u003e3\u003c/sup\u003e](https://scholar.google.com/citations?user=oQXfkSQAAAAJ\u0026hl=en), [Qianyu Chen\u003csup\u003e1\u003c/sup\u003e](https://scholar.google.com/citations?user=Kh8FoLQAAAAJ\u0026hl=en), [Bin Liang\u003csup\u003e1\u003c/sup\u003e](https://scholar.google.com/citations?user=djpQeLEAAAAJ\u0026hl=en), [Rong Xiao\u003csup\u003e5\u003c/sup\u003e](https://scholar.google.com/citations?user=Zb5wT08AAAAJ\u0026hl=en), [Kam-Fai Wong\u003csup\u003e1\u003c/sup\u003e](https://scholar.google.com/citations?user=fyMni2cAAAAJ\u0026hl=en), [Lei Zhang\u003csup\u003e4\u003c/sup\u003e](https://scholar.google.com/citations?user=fIlGZToAAAAJ\u0026hl=en)**\n\n\\* is corresponding author.\n\n*This is the inference code for our paper CoCoCo.*\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/zibojia/COCOCO/blob/main/__asset__/COCOCO.PNG\" alt=\"COCOCO\" style=\"width: 100%;\"/\u003e\n\u003c/p\u003e\n\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sea_org.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sea1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sea2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e Orginal \u003c/td\u003e\n    \u003ctd\u003e The ocean, the waves ...  \u003c/td\u003e\n    \u003ctd\u003e The ocean, the waves ...  \u003c/td\u003e\n    \u003c/tr\u003e\n    \n\u003c/table\u003e\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/river_org.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/river1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/river2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e Orginal \u003c/td\u003e\n    \u003ctd\u003e The river with ice ...  \u003c/td\u003e\n    \u003ctd\u003e The river with ice ...  \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sky_org.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sky1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/sky2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e Orginal \u003c/td\u003e\n    \u003ctd\u003e Meteor streaking in the sky ...  \u003c/td\u003e\n    \u003ctd\u003e Meteor streaking in the sky ...  \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## Table of Contents \u003c!-- omit in toc --\u003e\n- [Features](#Features)\n- [Installation](#Installation)\n- [Usage](#Usage)\n  - [Download pretrained models](#1-download-pretrained-models)\n  - [Mask Preparation](#2-prepare-the-mask)\n    - [Video-Inpaint-Anything](#5-cococo-inference-with-sam2)\n  - [Inference CoCoCo](#3-run-our-validation-script)\n  - [Personalized Video Inpainting](#4-personalized-video-inpainting-optional)\n    - [Convert Safetensors to Pytorch weights](convert-safetensors-to-pytorch-weights)\n    - [Transform Personalized Image Inpainting](take-pytorch-weights-and-add-them-on-cococo-to-create-personalized-video-inpainting)\n    - [Create Personalized Inpainting Visual Content](take-pytorch-weights-and-add-them-on-cococo-to-create-personalized-video-inpainting)\n  - [Inference with SAM2 (Video Inpaint Anything)](#5-cococo-inference-with-sam2)\n- [TODO](#to-do)\n- [Citation](#citation)\n- [Acknowledgement](#acknowledgement)\n\n\n### Features\n\n* Consistent text-guided video inpainting\n  * By using damped attention, we have decent inpainting visual content\n* Higher text controlability\n  * We have better text controlability\n* Personalized video inpainting\n  * We develop a training-free method to implement personalized video inpainting by leveraging personalized T2Is\n* Gradio Demo using SAM2\n  * We use SAM2 to create Video Inpaint Anything\n* Infinite Video Inpainting\n  * By using the slidding window, you are allowed to inpaint any length videos.\n* Controlable Video Inpainting\n  * By composing with the controlnet, we find that we can inpaint controlable content in the given masked region\n* More inpainting tricks will be released soon...\n\n### Installation\n\n#### Step1. Installation Checklist\n*Before install the dependencies, you should check the following requirements to overcome the installation failure.*\n- [x] You have a GPU with at least 24G GPU memory.\n- [x] Your CUDA with nvcc version is greater than 12.0.\n- [x] Your Pytorch version is greater than 2.4.\n- [x] Your gcc version is greater than 9.4.\n- [x] Your diffusers version is 0.11.1.\n- [x] Your gradio version is 3.40.0.\n\n#### Step2. Install the requirements\n*If you update your enviroments successfully, then try to install the dependencies by pip.*\n\n  ```shell\n  # Install the CoCoCo dependencies\n  pip3 install -r requirements.txt\n  ```\n\n  ```shell\n  # Compile the SAM2\n  pip3 install -e .\n  ```\n\n*If everything goes well, I think you can turn to the next steps.*\n\n## Usage\n### 1. Download pretrained models. \n\n***Note that our method requires both parameters of SD1.5 inpainting and cococo.***\n\n   * **The pretrained image inpainting model ([Stable Diffusion Inpainting](https://huggingface.co/benjamin-paine/stable-diffusion-v1-5-inpainting).)**\n\n   * **The CoCoCo [Checkpoints](https://mycuhk-my.sharepoint.com/:f:/g/personal/1155203591_link_cuhk_edu_hk/EoXyViqDi8JEgBDCbxsyPY8BCg7YtkOy73SbBY-3WcQ72w?e=cDZuXM).**\n\n* *Warning: the runwayml delete their models and weights, so we must download the image inpainting model from other url.*\n\n* *After download, you should put these two models in two folders, the image inpainting folder should contains scheduler, tokenizer, text_encoder, vae, unet, the cococo folder should contain model_0.pth to model-3.pth*\n\n### 2. Prepare the mask\n\n**~~You can obtain mask by [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO) or [Track-Anything](https://github.com/gaomingqi/Track-Anything), or draw masks by yourself.~~**\n\n**We release the gradio demo to use the SAM2 to implement Video Inpainting Anything. Try our [Demo](https://github.com/zibojia/COCOCO?tab=readme-ov-file#5-cococo-inference-with-sam2)!**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/zibojia/COCOCO/blob/main/__asset__/DEMO.PNG\" alt=\"DEMO\" style=\"width: 95%;\"/\u003e\n\u003c/p\u003e\n\n\n### 3. Run our validation script.\n\n**By running this code, you can simply get the video inpainting results.**\n\n  ```python\n  python3 valid_code_release.py --config ./configs/code_release.yaml \\\n  --prompt \"Trees. Snow mountains. best quality.\" \\\n  --negative_prompt \"worst quality. bad quality.\" \\\n  --guidance_scale 10 \\ # the cfg number, higher means more powerful text controlability\n  --video_path ./images/ \\ # the path that store the video and masks, the format is the images.npy and masks.npy\n  --model_path [cococo_folder_name] \\ # the path to cococo weights, e.g. ./cococo_weights\n  --pretrain_model_path [sd_folder_name] \\ # the path that store the pretrained stable inpainting model, e.g. ./stable-diffusion-v1-5-inpainting\n  --sub_folder unet # set the subfolder of pretrained stable inpainting model to get the unet checkpoints\n  ```\n\n### 4. Personalized Video Inpainting (Optional)\n\n*We give a method to allow users to compose their own personlized video inpainting model by using personalized T2Is* **WITHOUT TRAINING**. There are three steps in total:\n\n* Convert the opensource model to Pytorch weights.\n  \n* Transform the personalized image diffusion to personliazed inpainting diffusion. Substract the weights of personalized image diffusion from SD1.5, and add them on inpainting model. Surprisingly, this method can get a personalized image inpainting model, and it works well:)\n   \n* Add the weight of personalized inpainting model to our CoCoCo.\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/gibuli_lora_org.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/gibuli_merged1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/gibuli_merged2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/unmbrella_org.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/unmbrella1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/unmbrella2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n    \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/gibuli.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/bocchi1.gif\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"__asset__/bocchi2.gif\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n#### Convert safetensors to Pytorch weights\n\n* **For the model using different key, we use the following script to process opensource T2I model.**\n\n  For example, the [epiCRealism](https://civitai.com/models/25694?modelVersionId=134065), it is different from the key of the StableDiffusion.\n\n  ```\n  model.diffusion_model.input_blocks.1.1.norm.bias\n  model.diffusion_model.input_blocks.1.1.norm.weight\n  ```\n\n  Therefore, we develope a tool to convert this type model to the delta of weight.\n\n  ```python\n  cd task_vector;\n  python3 convert.py \\\n    --tensor_path [safetensor_path] \\ # set the safetensor path\n    --unet_path [unet_path] \\ # set the path to SD1.5 unet weights, e.g. stable-diffusion-v1-5-inpainting/unet/diffusion_pytorch_model.bin\n    --text_encoder_path [text_encoder_path] \\ # set the text encoder path, e.g. stable-diffusion-v1-5-inpainting/text_encoder/pytorch_model.bin\n    --vae_path [vae_path] \\ # set the vae path, e.g. stable-diffusion-v1-5-inpainting/vae/diffusion_pytorch_model.bin\n    --source_path ./resources \\ # the path you put some preliminary files, e.g. ./resources\n    --target_path ./resources \\ # the path you put some preliminary files, e.g. ./resources\n    --target_prefix [prefix]; # set the converted filename prefix\n  ```\n\n* **For the model using same key and trained by LoRA.**\n\n  For example, the [Ghibli](https://civitai.com/models/54233/ghiblibackground) LoRA.\n\n  ```\n  lora_unet_up_blocks_3_resnets_0_conv1.lora_down.weight\n  lora_unet_up_blocks_3_resnets_0_conv1.lora_up.weight\n  ```\n\n  ```python\n  python3 convert_lora.py \\\n    --tensor_path [tensor_path] \\ # the safetensor path\n    --unet_path [unet_path] \\ # set the path to SD1.5 unet weights, e.g. stable-diffusion-v1-5-inpainting/unet/diffusion_pytorch_model.bin \n    --text_encoder_path [text_encoder_path] \\ # set the text encoder path, e.g. stable-diffusion-v1-5-inpainting/text_encoder/pytorch_model.bin\n    --vae_path [vae_path] \\ # set the vae path, e.g. stable-diffusion-v1-5-inpainting/vae/diffusion_pytorch_model.bin\n    --regulation_path ./lora.json \\ # use this path defaultly. Please don't change\n    --target_prefix [target_prefix] # et the converted filename prefix\n  ```\n\n#### Take Pytorch weights and add them on CoCoCo to create personalized video inpainting\n\n* **You can use customized T2I or LoRA to create vision content in the masks.**\n\n  ```python\n  python3 valid_code_release_with_T2I_LoRA.py \\\n  --config ./configs/code_release.yaml --guidance_scale 10 \\ # set this as default\n  --video_path ./images \\ # the path that store the videos, the format is the images.npy\n  --masks_path ./images \\ # the path that store the masks, the format is the masks.npy\n  --model_path [model_path] \\ # the path that store the cococo weights\n  --pretrain_model_path [pretrain_model_path] \\ # the path that store the SD1.5 Inpainting, e.g. ./stable-diffusion-v1-5-inpainting\n  --sub_folder unet \\  # set the subfolder of pretrained stable inpainting model to get the unet checkpoints\n  --unet_lora_path [unet_lora_path] \\ #  the LoRA weights for unet\n  --beta_unet 0.75 \\ # the hyper-parameter $beta$ for unet LoRA weights\n  --text_lora_path [text_lora_path] \\ #  the LoRA weights for text_encoder\n  --beta_text 0.75 \\ # the hyper-parameter $beta$ for text encoder LoRA weights\n  --vae_lora_path [text_lora_path] \\ #  the LoRA weights for vae\n  --beta_vae 0.75 \\ # the hyper-parameter $beta$ for vae LoRA weights\n  --unet_model_path [unet_model_path] \\ # set the path to SD1.5 unet weights, e.g. stable-diffusion-v1-5-inpainting/unet/diffusion_pytorch_model.bin \n  --text_model_path [text_model_path] \\ # set the text encoder path, e.g. stable-diffusion-v1-5-inpainting/text_encoder/pytorch_model.bin\n  --vae_model_path [vae_model_path] \\ # set the vae path, e.g. stable-diffusion-v1-5-inpainting/vae/diffusion_pytorch_model.bin\n  --prompt [prompt] \\\n  --negative_prompt [negative_prompt]\n  ```\n\n### 5. COCOCO INFERENCE with SAM2\n\n\n* **Try our demo with original COCOCO**\n  ```\n  CUDA_VISIBLE_DEVICES=0,1 python3 app.py \\\n  --config ./configs/code_release.yaml \\\n  --model_path [model_path] \\ # the path to cococo weights\n  --pretrain_model_path [pretrain_model_path] \\ # the image inpainting pretrained model path, e.g. ./stable-diffusion-v1-5-inpainting\n  --sub_folder [sub_folder] # set unet as default\n  ```\n\n* **Try our demo with LoRA and checkpoint**\n  * By using our convertion code, we obtain some personalized image inpainting models and LoRAs, you can download from the bellow:\n\n    * The personalized image inpainting models is [available](https://mycuhk-my.sharepoint.com/:f:/g/personal/1155203591_link_cuhk_edu_hk/EpuCr0azYKxJg7QJ71Mln9UBYDLzoFm6GQWYN9UwCauhYg?e=rwPAhY).\n\n    * The personalized image inpainting LoRA is [available](https://mycuhk-my.sharepoint.com/:f:/g/personal/1155203591_link_cuhk_edu_hk/EiqYrc8lKUhFkpEb-DC8CV8BJPbqkJsyvz66cjXOCnDS1Q?e=hAgbi9).\n\n  * Run the Gradio demo with LoRA.\n\n    ```python\n    CUDA_VISIBLE_DEVICES=0,1 python3 app_with_T2I_LoRA.py \\\n      --config ./configs/code_release.yaml \\\n      --unet_lora_path [unet_lora_path] \\  #  the LoRA weights for unet\n      --text_lora_path [text_lora_path] \\ #  the LoRA weights for text_encoder\n      --vae_lora_path [vae_lora_path] \\  #  the LoRA weights for vae\n      --beta_unet 0.75 \\ # the hyper-parameter $beta$ for unet LoRA weights\n      --beta_text 0.75 \\ # the hyper-parameter $beta$ for text_encoder LoRA weights\n      --beta_vae 0.75 \\ # the hyper-parameter $beta$ for vae LoRA weights\n      --text_model_path [text_model_path] \\ # set the text encoder path, e.g. stable-diffusion-v1-5-inpainting/text_encoder/pytorch_model.bin\n      --unet_model_path [unet_model_path] \\ # set the path to SD1.5 unet weights, e.g. stable-diffusion-v1-5-inpainting/unet/diffusion_pytorch_model.bin \n      --vae_model_path [vae_model_path]  \\ # set the vae path, e.g. stable-diffusion-v1-5-inpainting/vae/diffusion_pytorch_model.bin\n      --model_path [model_path] \\ # cococo weights\n      --pretrain_model_path [pretrain_model_path] \\ # the image inpainting pretrained model path, e.g. ./stable-diffusion-v1-5-inpainting\n      --sub_folder [sub_folder] # the default is unet\n    ```\n\n### TO DO\n\n---------------------------------------\n\n[1]. *We will use larger dataset with high-quality videos to produce a more powerful video inpainting model soon.*\n\n\n[2]. *The training code is under preparation.*\n\n\n\n### Citation\n\n---------------------------------------\n\n```bibtex\n@article{Zi2024CoCoCo,\n  title={CoCoCo: Improving Text-Guided Video Inpainting for Better Consistency, Controllability and Compatibility},\n  author={Bojia Zi and Shihao Zhao and Xianbiao Qi and Jianan Wang and Yukai Shi and Qianyu Chen and Bin Liang and Kam-Fai Wong and Lei Zhang},\n  journal={ArXiv},\n  year={2024},\n  volume={abs/2403.12035},\n  url={https://arxiv.org/abs/2403.12035}\n}\n```\n\n### Acknowledgement\nThis code is based on [AnimateDiff](https://github.com/guoyww/AnimateDiff), [Segment-Anything-2](https://github.com/facebookresearch/segment-anything-2) and [propainter](https://github.com/sczhou/ProPainter).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzibojia%2FCOCOCO","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzibojia%2FCOCOCO","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzibojia%2FCOCOCO/lists"}